Работа с сетью
План
- Устройство сети
- Интернет = tcp/ip
- IP
задача (куча локалок – нужно послать данные от одного компьютера в одной локалке другому в другой)
- адрес
- как работает маршрутизация
- TCP
задача (ненадёжные пакеты (ip) – нужно сделать последовательный надёжный поток байт от одной программы к другой программе)
- порт
- чётвёрка адресов для соединения
UDP – два слова
- Firewall
- NAT
- Что выше?
- Какие бывают ситуации взаимодействия программ по сети (обобщение: для кучи более конкретных случаев есть более готовые решения):
клиент, чтобы выкачать с публичного сервиса что-нибудь – это с вероятностью про urllib
веб-сервер – это тоже другая тема
взаимодействие нодов на кластере – mpi/openmpi/... или даже multiprocessing
самописная пара клиент-сервер – socket + asyncore
- хорошо добавлять: json/yaml/xml/pickle
хз – тоже socket + asyncore
- Что такое сокет; жизненный цикл сокета:
0 -> [setsockopt] -> bind -> listen -> { accept ==> (socket -> {send|recv} -> shutdown ) }
0 -> connect -> {send|recv} -> shutdown
- Что такое select
- Пример: чат