Механизм гнезд и мультиплексирование соединений

Для установления соединения между процессами на различных узлах (компьютерах) IP-сети требуется знать не только IP-адрес сетевого интерфейса узла, но и номер TCP или UDP порта, который процесс использует на данном компьютере. В совокупности с IP-адресом компьютера порты образуют систему гнезд (sockets). Таким образом, гнездо есть IP-адрес сетевого интерфейса плюс номер порта. Пара гнезд уникально идентифицирует каждое соединение или поток данных в IP-сетях, а порт обеспечивает независимость каждого TCP канала на данном компьютере. Несколько процессов на компьютере в принципе могут использовать один и тот же TCP порт, но с точки зрения удаленного процесса между этими процессами не будет никакой разницы.

При использовании протокола TCP данные передаются между прикладным процессом и модулем TCP. Типичным прикладным процессом, использующим протокол TCP, является модуль FTP – протокол передачи файлов. Стек протоколов в этом случае будет следующим: FTP/TCP/IP/ENET. При использовании протокола UDP (дейтаграмм пользователя) данные передаются между прикладным процессом и модулем UDP, например, протокол SNMP (простой протокол управления сетью) пользуется транспортными услугами UDP, его стек протоколов: SNMP/UDP/IP/ENET.

Одно гнездо на компьютере может быть задействовано в соединении с несколькими гнездами на удаленных компьютерах. Кроме того, одно гнездо может передавать поток данных в обоих направлениях. Таким образом, механизм гнезд позволяет одновременно работать нескольким приложениям на одном компьютере и уникально идентифицировать каждый поток данных в сети. Это называется мультиплексированным соединением.

Модули TCP, UDP и драйвер Ethernet являются мультиплексорами типа . Действуя как мультиплексоры, они переключают несколько входов на один выход. Они также являются демультиплексорами типа . Как демультиплексоры, они переключают один вход на один из многих выходов в соответствии с содержимым поля типа в заголовке протокольного блока данных. Когда Ethernet кадр попадает в драйвер сетевого интерфейса, он может быть направлен либо в модуль ARP, либо в модуль IP. Для этого используется значение поля типа в заголовке кадра Ethernet.

Если IP-пакет попадает в модуль IP, то содержащиеся в нем данные (значения поля данных IP-пакета) могут быть переданы либо модулю TCP, либо модулю UDP, что определяется значением поля протокол в заголовке IP-пакета. Если TCP-сообщение попадает в модуль TCP, то выбор прикладной программы, которой должно быть передано сообщение, осуществляется на основе значения поля «порт» в заголовке TCP-сообщения. Представим инкапсуляцию протоколов верхнего уровня в протоколы TCP/IP:

Мультиплексирование данных в обратную сторону осуществляется просто, потому что у каждого модуля существует только один путь вниз. Каждый протокольный модуль добавляет к блоку передаваемых данных свой заголовок, на основании которого узел, принявший этот блок, выполняет демультиплексирование.

Назначение портов приложениям на каждом компьютере происходит независимо друг от друга. Протокол TCP может самостоятельно выбирать порт, с которым будет работать приложение, или приложение укажет, с каким портом на данном компьютере оно будет работать. Как правило, часто используемые приложения – сервисы используют одни и те же номера портов, которые стали уже общеизвестными, например, такие как HTTP, FTP и другие. Для того чтобы к данному процессу на компьютере можно было присоединиться, указывая только IP-адрес узла, например, интернет браузер, если ему не указать дополнительно, ищет по указанному адресу приложения, работающие с портом 80 – это наиболее распространенный порт для серверов, которые имеют имя «www». Протокол FTP, как правило, работает с портом 21.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: