Как поддерживается несколько соединений с одним портом

2199
Griffin

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

У меня все еще есть несколько вопросов по этому поводу:

  • Нужны ли пакетам какие-либо данные заголовка, кроме номера идентификатора соединения, после того как соединение установлено с другой программой?

  • После установления соединения, скажем, через порт 80; данные все еще проходят через этот порт, или в установленном идентификаторе соединения указан новый открытый порт, который будет использоваться для дальнейшей связи?

  • В соответствии с моим вопросом здесь ; Есть ли фактическое физическое разделение между различными связями? Или это чисто теоретический / виртуальный?

1

2 ответа на вопрос

4
RedGrittyBrick

Вы, кажется, путаете идеи с коммутацией каналов с TCP / IP.

Разговор о порте 80 предлагает протокол HTTP по TCP и IP. При использовании TCP / IP промежуточные узлы (маршрутизаторы) не должны отслеживать «идентификаторы соединений». Динамически поддерживаемые таблицы маршрутизации диапазонов IP-адресов используются для пересылки пакетов. Нет необходимости, чтобы последовательные пакеты следовали по одному и тому же пути.

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

Обратите внимание, что UDP не использует соединение, концепция UDP-соединения отсутствует. Многие протоколы уровня приложений Интернета используют UDP в качестве протокола транспортного уровня.

Нужны ли пакетам какие-либо данные заголовка, кроме номера идентификатора соединения, после того как соединение установлено с другой программой?

Заголовки TCP и заголовки IP в пакетах TCP / IP не содержат «идентификаторы соединения» как таковые.

После установления соединения, скажем, через порт 80; данные все еще проходят через этот порт,

Да.

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

Как я уже говорил выше, идентификаторы соединений как таковые не существуют в TCP / IP. Иногда протокол более высокого уровня устанавливает связь через другие порты (например, порты управления FTP и порты данных).

В соответствии с моим вопросом здесь; Есть ли фактическое физическое разделение между различными связями?

Как правило, не. Сервер может иметь несколько сетевых карт, обслуживающих разные группы клиентов.

Или это чисто теоретический / виртуальный?

Номера портов и так далее - это просто числа в заголовках пакетов.

Итак, с какими протоколами установлены пути подключения? В статье Википедии о «коммутации пакетов» говорится, что «в пакетно-ориентированной коммутации соединение определяется и предварительно распределяется в каждом задействованном узле. Пакеты содержат идентификатор соединения, а не адресную информацию, и доставляются по порядку». Итак, какие протоколы или виды программ могли бы установить такую ​​связь? Griffin 12 лет назад 0
@Griffin: [ATM] (http://en.wikipedia.org/wiki/Asynchronous_Transfer_Mode) устанавливает «виртуальные каналы». [ISDN] (http://en.wikipedia.org/wiki/Asynchronous_Transfer_Mode) устанавливает цифровые каналы, [Frame Relay] (http://en.wikipedia.org/wiki/Frame_Relay#Virtual_circuits) использует постоянные или коммутируемые виртуальные каналы. Ни один из них не имеет отношения к конечным пользователям интернет-услуг. IP может передаваться по этим другим протоколам, но в значительной степени игнорирует их. RedGrittyBrick 12 лет назад 1
0
Tom Wijsman

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

Этот абзац действительно сбивает с толку . Сначала вы ссылаетесь на переключение на сетевой уровень. Затем вы ссылаетесь на соединения, сделанные на транспортном уровне. Тогда вы как-то объединяете их вместе, хотя это действительно разные слои. Учтите, что переключение каналов может быть просто идеей и могло или не могло использоваться в прошлом. Однако, когда вы ссылаетесь на порты, вы ссылаетесь на TCP / IP, который вообще не использует коммутацию каналов ...

Нужны ли пакетам какие-либо данные заголовка, кроме номера идентификатора соединения, после того как соединение установлено с другой программой? После установления соединения, скажем, через порт 80; данные все еще проходят через этот порт, или в установленном идентификаторе соединения указан новый открытый порт, который будет использоваться для дальнейшей связи?

Вы имеете в виду соединение с программой, которая использует порты TCP / IP. В этом случае идентификатор соединения не был прикреплен к пакету. В случае переключения цепи это было бы необходимо.

Есть ли фактическое физическое разделение между различными связями? Или это чисто теоретический / виртуальный?

Все идет по одному и тому же кабелю, поэтому его можно считать виртуальным, а не физическим.

Установленное соединение - это всего лишь средство сказать: «Я буду общаться через этот пост по этому адресу». Да, соединение - это просто IP-адрес и пара портов ...


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