Nets and internet with python

Работа с сетями

ipaddress

Модуль реализует проверку, сравнение и другие операции с сетевыми адресами IPv4/IPv6. Позволяет работать с сетевыми адресами и диапазонами адресов. а так-же с сетевыми интерфейсами (сетевой адроес, предоставленный в виде адреса хоста и сетевого префикса или маски сети)

socket

Низкоуровневый интерфейс к c-библиотеке socket, используется для взаимодействия с сетевыми службами с использованием сокетов BSD. Решает задачи преобразования именит сервера в адрес и формирование данных для передачи по сети.

Сокет - это конечная точка соединения, используемая для локального обмена или обмена по сети интернет. Процессом передачи управляют два свойства сокета - семейство адресов, задающее сетевой протокол модели OSI и тип сокета, соответствующий протоколу транспортного уровня.

Формат адреса, требуемый конкретным объектом сокета, выбирается автоматически на основе семейства адресов, указанного при создании объекта сокета. Адреса сокетов представлены следующим образом:

  • адрес сокета AF_UNIX, привязанный к узлу файловой системы, представлен в виде строки с использованием кодировки файловой системы и обработчика ошибок. Сокеты домена Unix (UDS) позволяют передавать данные непосредственно из процесса в процесс без прохождения сетевого стека, но применеение UDS ограничено процессами, выполняемыми в одной системе.
  • семейство адресов AF_INET спользуется для IPv4 адресации. Адреса IPv4 имеют длину 4 байта и представляются в виде последовательности 4-х чисел, разделенных точкой (например 10.2.2.15). Большинство адресов в интернет - IPv4. В socket используется пара (хост, порт), где host - это строка, представляющая либо имя хоста в нотации интернет-домена, например daring.cwi.nl, либо адрес IPv4, например, 100.50.200.5, а порт - целое число.
  • для семейства адресов AF_INET6 используется четыре кортежа (хост, порт, flowinfo, scope_id). IPv6 обеспечивает поддержку 128-битновых адресов
  • еще доступны AF_NETLINK, AF_TIPC, AF_CAN, SYSPROTO_CONTROL, AF_BLUETOOTH, AF_ALG, AF_VSOCK, AF_PACKET, AF_QIPCRTR, IPPROTO_UDPLITE. Подробнее

Обычно реализуются два типа сокетов - SOCK_DGRAM (UDP), не обеспечивающие высокую надежность передачи данных, т.к. они не гарантируют доставку и SOCK_STREAM (TCP), гарантирующих доставку. Большинство протоколов прикладного уровня (к примеру [http]) реализовано поверх TCP. UDP в основном используется, когда порядок получения сообщений не существенен и для многоадресном вещании.

Модуль socket реализует:

  • поиск хостов в сети и преобрназование имени хоста в сетевой адрес
  • получение информации ор сетевых службах
  • получение информации об адресе сервера
  • реализацию программных конструкций сервер-клиент на базе TCP/IP, UDP, UDS и т.д.
  • многоадресное вещание
  • отправку текстовых и двоичных данных
  • неблокирующий ввод/вывод

selectors

Предоставляет высокоуровневый интерфейс для одновременного наблюдения за несколькими сокетами и обеспечивает взаимодействие сетевых серверов с несколькими клиенатми. Реализован с помощью модуля select- это низкоуровневый интерфейс.

Объект селектора имеет методы, позволяющие указывать какие события, связанные с сокетом, необходимо отслеживать и позволяет вызывающему оъъекту ожидать события платформенным способом и реализовывать отслеживание готовность сокетов к вводу/выводу и вызывать колбеки.

socketserver

Реализует фреймворк для создания сетевого сервера, поддерживающие протоколы UDP, TCP и UDS. Фреймворк упрощает обработку синхронных сетевых запросов, кроме того он поставляет примесные классы, позволяющие выводить запросы в отдельный поток или процесс.

Фреймворк реализует высокоуровневый объектный подход, что позволяет применять классы практически без измененеий. Достыпны классы сервера и обработчика запросов. Сервер отвечает за прослушивание сокетов, установку соединений и т.д., а обработчик за протокол обработки данных (интерпретация, парсинг, отправка).

ssl

Этот модуль обеспечивает доступ к средствам шифрования Transport Layer Security и одноранговой аутентификации для сетевых сокетов, как на стороне клиента, так и на стороне сервера. Этот модуль использует библиотеку OpenSSL.

Работа с интернет

cgi и wsgiref

cgi определяет ряд утилит для использования скриптами CGI, написанными на Python.

wsgiref - это стандартный интерфейс WSGI между программным обеспечением веб-сервера и веб-приложениями, написанными на Python. Наличие стандартного интерфейса упрощает использование приложения, поддерживающего WSGI, с рядом различных веб-серверов.

Вникать в модули нужно в основном для разработки/поддержания http-фреймворков.

* Модуль cgitb предоставляет специальный обработчик исключений для скриптов Python

urlib

  • urlib.parse позволяет работать со строками url-ов
  • urlib.requests открытие удаленных ресурсов, получение удаленного содержимого
  • urlib.robotparser работа с robots.txt
  • urlib.errors эксепшены для urlib.requests

Смотри еще:

http

Реализует базовые инструменты для написания http-фреймворка (в т.ч. предоставляет обработчик коды статусов)

  • http.client низкоуровневый http-клиент
  • http.server HTTP сервер на базе socketserver
  • http.cookies управление куками
  • http.cookiejar автоматическая обработка кук

Протоколы

ftp, nntp, telnet а так же почтовые протоколы [email-tools-python]

uuid

Генерация уникальных значений идентификаторов ресурсов (uuid).

xmlrpc

XML-RPC сервер, в настоящий момент стандарт можно считать устаревшим.

Смотри еще: