
Прочитав о коммутации пакетов и каналов, я узнал, что серверы поддерживают несколько соединений с портом, передавая установленное клиентское соединение дочернему процессу; и что все узлы, участвующие в маршруте соединения, поддерживают таблицу идентификаторов соединений, чтобы пакеты можно было правильно пересылать на следующий узел.
Однако у меня все еще есть несколько вопросов по этому поводу:
Нужны ли пакетам какие-либо дополнительные данные заголовка, помимо номера идентификатора соединения, после установления соединения с другой программой?
После установления соединения, скажем, через порт 80, данные продолжают проходить через этот порт или установленный идентификатор соединения указывает на новый открытый порт для использования в дальнейшем?
В переписке смой вопрос здесь; Существует ли реальное физическое разделение между различными соединениями? Или это чисто теоретическое/виртуальное разделение?
решение1
Похоже, вы путаете идеи коммутации каналов с TCP/IP.
Talk of Port 80 предполагает протокол HTTP поверх TCP и IP. При использовании TCP/IP промежуточным узлам (маршрутизаторам) не нужно отслеживать «идентификаторы соединений». Для пересылки пакетов используются динамически поддерживаемые таблицы маршрутизации диапазонов IP-адресов. Не обязательно, чтобы последующие пакеты следовали по одному и тому же пути.
Сервер отслеживает TCP-соединения, используя IP-адрес клиента и номер TCP-порта, а также номер порта сервера (и IP-адрес сервера, серверы могут иметь несколько IP-адресов). Соединение идентифицируется комбинацией этих четырех частей информации. Номер порта клиента обычно выбирается клиентом псевдослучайно.
Обратите внимание, что UDP не требует соединения, нет понятия UDP-соединения. Многие интернет-протоколы прикладного уровня используют UDP в качестве протокола транспортного уровня.
Нужны ли пакетам какие-либо дополнительные данные заголовка, помимо номера идентификатора соединения, после установления соединения с другой программой?
Заголовки TCP и IP в пакетах TCP/IP не содержат «идентификаторов соединений» как таковых.
После того, как соединение установлено, скажем, через порт 80, данные все еще проходят через этот порт,
Да.
или установленный идентификатор соединения указал новый открытый порт для использования в дальнейших коммуникациях?
Как я уже сказал выше, идентификаторов соединений как таковых в TCP/IP не существует. Иногда протокол более высокого уровня устанавливает связь на других портах (например, портах управления и данных FTP).
В соответствии с моим вопросом здесь: существует ли реальное физическое разделение между различными соединениями?
Обычно нет. Сервер может иметь несколько сетевых карт, обслуживающих разные группы клиентов.
Или это чисто теоретически/виртуально?
Номера портов и т.п. — это всего лишь числа в заголовках пакетов.
решение2
Прочитав о коммутации пакетов и каналов, я узнал, что серверы поддерживают несколько соединений с портом, передавая установленное клиентское соединение дочернему процессу; и что все узлы, участвующие в маршруте соединения, поддерживают таблицу идентификаторов соединений, чтобы пакеты можно было правильно пересылать на следующий узел.
Этот абзац действительнозапутанный. Сначала вы ссылаетесь на переключение на сетевом уровне. Затем вы ссылаетесь на соединения, выполненные на транспортном уровне. Затем вы каким-то образом объединяете их вместе, хотя это на самом деле разные уровни. Подумайте о том, что коммутация каналов может быть всего лишь идеей и могла или не могла использоваться в прошлом. Однако, как только вы ссылаетесь на порты, вы ссылаетесь на TCP/IP, который вообще не использует коммутацию каналов...
Нужны ли пакетам какие-либо дополнительные данные заголовка, кроме номера идентификатора соединения, после того как соединение установлено с другой программой? После того как соединение установлено, скажем, через порт 80; данные все еще проходят через этот порт, или установленный идентификатор соединения указал новый открытый порт для использования для дальнейших коммуникаций?
Вы имеете в виду соединение с программой, которая будет использовать порты TCP/IP. В этом случае к пакету не будет прикреплен идентификатор соединения. В случае коммутации каналов это было бы необходимо.
Существует ли реальное физическое разделение между различными соединениями? Или оно чисто теоретическое/виртуальное?
Все передается по одному и тому же кабелю, поэтому его можно считать виртуальным, а не физическим.
Установленное соединение — это всего лишь способ сказать: «Я буду общаться по этому адресу через этот пост». Да, соединение — это просто пара IP-адреса и порта...
Не используйте Википедию исключительно для получения информации по этому вопросу, попробуйте глубоко изучить книгу по компьютерным сетям...