Как HTTP-ответ относится к запросу? - PullRequest
1 голос
/ 22 октября 2010

Я перехватываю пакеты, используя jpcap, и мне интересно, как я могу узнать, для какого запроса ответ. Поля заголовка HTTP даже не указывают адрес сервера, и там нет идентификаторов.

Нужно ли проверять порты или что-то еще?

Ответы [ 4 ]

2 голосов
/ 22 октября 2010

Похоже, вы смотрите на захваченные IP-пакеты, не понимая, как работают TCP-соединения.Ответ заключается в том, что заголовки HTTP не содержат адрес сервера, потому что они не нужны.Данные HTTP устанавливаются через TCP-соединение, которое управляет адресами источника и назначения для каждого пакета.

TCP-соединение похоже на виртуальный «канал» между клиентом и сервером.Любые данные, отправленные по TCP-соединению, либо:

  • поступают на другой конец в том же порядке, в котором они были отправлены, либо
  • вообще не приходит

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

1 голос
/ 22 октября 2010

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

0 голосов
/ 22 октября 2010

Если вы используете Wireshark, просто «следуйте» за соединением.

0 голосов
/ 22 октября 2010

http - протокол уровня приложения / представления.Не думайте, что если вы проверите заголовки http, вы найдете адрес сервера.Нужно посмотреть на IP-пакеты, убрав заголовки http.

...