Учитывая этот пример, как моя операционная система будет различать каждый запрос.

Допустим, у меня открыто 3 вкладки, и в то же время все они переходят на http://google.com . Как моя операционная система будет отличать возвращаемые данные ответа? Разве это не все будет точно так же? В заголовке TCP порты источника и назначения будут такими же, как и IP-адрес источника и назначения, а также схема (http).

Я знаю, что заголовки IP-пакетов имеют заголовок идентификатора, но это не для того, чтобы иметь дело с фрагментацией, а не для физической идентификации пакета. Кроме того, IP-пакеты должны быть правильными?

Например, в эхо-запросах ICMP эхо-запросы и ответы имеют идентификаторы, соответствующие каждому пакету каждому ответу. Как это будет сделано в моем сценарии? Я предполагаю, что данные отправляются в пакет TCP для дифференциации, но я не уверен.

Изменить: я сделал плохое предположение. Тот факт, что пакет отправляется на порт 80, не означает, что источником должен быть также порт 80. Например, глядя на этот пример NAT, мы видим, что это не сделано. Это позволяет исходному сегменту иметь разные исходные порты для каждого запроса.

2 ответа2

2

Когда клиентская программа (например, браузер) подключается к серверу, она открывает сокет.  И (если в программе не указан один, что очень редко), операционная система назначает сокету уникальный номер порта.  Обычно это будет в диапазоне 1000-2000.  Исходным IP-адресом, конечно же, является адрес клиентского хоста.  Сервер определяет параметры назначения; например, IP-адрес google.com и 80.

Итак, вы правы; Отдельные соединения TCP от одного и того же клиентского компьютера к одному и тому же порту сервера различаются по разным номерам портов источника.  Это не имеет ничего общего с NAT.

Вы можете увидеть это, если изучите вывод команды netstat .

-1

Это проще, если вы посмотрите на несколько слоев. Просто вспоминая жизненный цикл HTTP-запроса:

  • Клиентский браузер инициирует сокет-соединение с веб-сервером

  • Запрос по стандарту http отправляется на сервер.

  • Сервер обрабатывает запрос и возвращает клиенту ответ в стандарте HTTP.

  • Клиентский браузер получает ответ.

  • Соединение с сервером закрыто.

  • Клиент браузера интерпретирует ответ и отображает на экране результат

Поэтому, когда браузер открывает запрос, он ожидает ответа. Принимая во внимание поддерживающую природу соединения TCP/IP, этот ответ происходит на том же соединении. Затем браузер может определить, какой запрос для этой вкладки.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .