Назад | Перейти на главную страницу

Транспортный уровень - кто выполняет фазу демультиплексирования?

Я читаю computer network a top down approach 6th edition, и я на транспортном уровне. Я понимаю, как пакет от клиента отправляется на сервер через клиентский сокет, но когда сервер получает пакет, кто читает информацию о пакете и передает ее правильному процессу?

Что касается TCP, сначала устанавливается соединение между двумя процессами. Тот же вопрос здесь, кто или что делает мультиплексирование и передает пакет?

Каждое IP-соединение клиент / сервер идентифицируется кортежем, состоящим из пяти элементов:

  • протокол ip
  • адрес источника
  • исходный порт
  • адрес назначения
  • порт назначения

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

В качестве практического примера рассмотрим выдачу команды netstat -n -t -p на ящике linux. На моем ПК он показывает следующий результат:

[root@centos-webdev ~]# netstat -n -t -p
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 172.31.255.240:45414        1.1.8.246:25                TIME_WAIT   -
tcp        0     64 172.31.255.240:22           1.1.9.6:2205                ESTABLISHED 10604/sshd

Взгляните на последнюю строку: если показывает, что установлено SSH-соединение с удаленного адреса 1.1.9.6, порт 2205 и локальный IP-адрес 172.31.255.240, порт 22. В крайнем правом поле объясняется, что исполняемый файл ssh с PID 10604, прослушивает пакет, принадлежащий этому конкретному соединению.