Выражаясь простым языком, сокеты служат программным интерфейсом для организации соединений между программами, возможно выполняющимися на разных компьютерах в сети. Они также образуют основу и низкоуровневый «трубопровод» самого Интернета: все известные протоколы Сети верхнего уровня, такие как FTP, веб-страницы и электронная почта, в конечном итоге реализуются через сокеты. Сокеты иногда называют также конечными пунктами коммуникаций, так как они служат порталами, через которые программы посылают и принимают байты во время общения.
Несмотря на то, что сокеты часто используются для организации общения по сети, они точно так же могут использоваться, как механизм общения между программами, выполняющимися на одном и том же компьютере, принимая форму универсального механизма взаимодействий между процессами (Inter—Process Communication, IPC). Мы уже видели такой способ использования сокетов в главе 5. В отличие от некоторых других механизмов IPC, сокеты являются двунаправленными потоками данных: с их помощью программы могут и отправлять, и принимать данные.
Для программиста сокеты принимают форму группы вызовов, доступных через библиотеку. Эти вызовы сокетов умеют пересылать байты между компьютерами, используя низкоуровневые механизмы, такие как сетевой протокол TCP управления передачей данных. На своем уровне TCP умеет передавать байты, но его не заботит, что эти байты означают. Исходя из целей данной книги, мы опускаем вопрос о том, как осуществляется физическая передача байтов, посылаемых в сокеты. Однако для полного понимания сокетов нам потребуется представление о том, как компьютерам назначаются имена.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011