Готовый перевод Michael J. Donahoo "TCP/IP Sockets in C, 2nd Edition" / Michael J. Donahoo "Программирование TCP/IP сокетов в Си, 2-ое издание": 1.5 Что такое сокет?
1.5 Что такое сокет?
Сокет представляет собой абстракцию через которую приложение может посылать и принимать данные, во многом точно также как дескриптор файла разрешает приложению считывать и записывать данные для долговременного хранения. Сокет позволяет приложению подсоединяться к сети и общаться с другими приложениями, подсоединенными к этой сети. Информация, записанная в сокет приложением на одном компьютере, может быть считана приложением на другом компьютере и наоборот.
Различные типы сокетов соответсвуют различным наборам протоколов и различным стекам протоколов. Эта книга описывает работу только с TCP/IP.
Основными типами сокетов в TCP/IP на сегодняшний день являются потоковые и дейтаграмные сокеты. Потоковые сокеты используют TCP как сквозной протокол (поверх IP) и таким образом обеспечивают сервис потоковой передачи байтов.
Потоковые сокеты TCP/IP показывают только одну грань TCP-соединения. Дейтаграмные сокеты импользуют UDP (опять же, поверх IP) и таким образом предоставляют наилучший дейтаграмный сервис, который приложения могут использовать для отправки отдельных сообщений длиной примерно 65 500 байт.
Потоковый и дейтаграмные сокеты также поддерживаются другими наборами протоколов, но это книга описыват только потоковые сокеты TCP и дейтаграмные сокеты UDP. Сокет TCP/IP однозначно определяется интернет-адресом, сквозным протоколом (TCP или UDP) и номером порта. По мере прохождения данной книги, вы встретите несколько способов для того, чтобы привязать сокет к адресу.
Рисунок 1.2: Сокеты, протоколы и порты.
Рисунок 1.2. показывает логические взаимосвязи между приложениями, сокетами, протоколами и номерами портов внутри одного хоста. Есть несколько вещей, которые необходимо отметить об этих взаимосвязях. Первое - программа может иметь несколько сокетов в использовании в одно и то же время.
Второе - несколько программ могут одновременно использовать один и тот же сокет, хотя такое бывает редко. Рисунок показывает, что каждый сокет имеет связанный с ним локальный TCP или UDP порт, который используется для направления входящих пакетов к приложению, которе должно их получать.
Ранее мы сказали, что порт определяет приложение на хосте. На самом деле, порт определяет сокет на хосте. За этим скрывается нечто большее, нежели это, но все же, как показывает рисунок 1.2., более чем один сокет может ассоциироваться с одним локальным портом.
Это наиболее распространено при работе с TCP-сокетами; к счастью, вам не нужно понимать всех подробностей для написания клиент-серверных программ, которые используют TCP-сокеты. Полностью этот вопрос будет раскрыт в 7-ой главе .
Переведено на Нотабеноиде
http://notabenoid.org/book/29398/99697
Переводчики: prefer211, GorelovaV, myCrack, IamSadist
Настройки
Готово:
