В настоящее время я исследую сетевой трафик. Здесь я хочу узнать, какой клиент говорит на каком сервере. Очевидно, я могу взглянуть на первый пакет и посмотреть:Ephemeral Port Разговорное решение для партнеров
PartyA:38531 ===request===> PartyB:80
PartyB:80 ===response==> PartyA:38531
PartyA:38531 ===request===> PartyB:80
PartyB:80 ===response==> PartyA:38531
PartyA:38531 ===request===> PartyB:80
PartyB:80 ===response==> PartyA:38531
Так PartyA просит что-то с веб-сервера (PartyB). Порт PartyA выбирается случайным образом (https://en.wikipedia.org/wiki/Ephemeral_port). Но что, если захват пакета не захватил первый пакет? Таким образом, первым пакетом будет:
PartyB:80 ===response==> PartyA:38531
....
Как я могу узнать, кто является сервером и кто клиент? Существуют ли такие правила, как например. «Эфемерный порт должен быть выше статического порта» или что-то вроде этого? Но тогда, что будет с портом выше 61000?
Я хочу проанализировать трафик, идущий на определенный сервер и исходящий от определенного хоста. Но что, если новое соединение связано с новым эфемерным портом? Существуют ли подходы к выяснению, кто является сервером и кто является клиентом?
Надеется, что мой вопрос ясно :) Заранее спасибо
«Если существует только один сеанс между клиентом и сервером, неважно, кто является сервером и кто является клиентом ...» «Точно. В TCP даже нет концепции клиент/сервер. Это связь между сверстниками. Клиент/сервер - это концепция прикладного уровня. –
Поскольку у меня есть большие файлы трафика, я узнал, что я мог бы также просто искать флагов txp 0x2 (SYN) и записывать все порты, используемые при установлении соединения. Впоследствии у меня есть список «служебных» портов. Кроме того, http://stackoverflow.com/questions/37271660/big-graph-in-memory/37272260 может генерировать список наиболее распространенных портов при удалении эфемерных портов. – mutilis