2016-05-13 1 views
2

В настоящее время я исследую сетевой трафик. Здесь я хочу узнать, какой клиент говорит на каком сервере. Очевидно, я могу взглянуть на первый пакет и посмотреть: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?

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

Надеется, что мой вопрос ясно :) Заранее спасибо

ответ

-1

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

Единственное, что может быть 99% уверены, что порты в диапазоне 49151–65535 (2^15+2^14-1 to 2^16−1) недолговечны, но они не ограничены в использовании сервера (даже больше, они предложены для частного использования).

Лучше сконцентрироваться на статическом порту. Если у вас несколько активных подключений к одному и тому же порту с разных адресов, может ли он быть статическим портом на сервере и разными портами по разным адресам - эфемерные порты на клиентах?

Если между клиентом и сервером существует только один сеанс, неважно, кто является сервером и кто является клиентом, вы можете получить его только из протокола, который они используют.

+0

«Если существует только один сеанс между клиентом и сервером, неважно, кто является сервером и кто является клиентом ...» «Точно. В TCP даже нет концепции клиент/сервер. Это связь между сверстниками. Клиент/сервер - это концепция прикладного уровня. –

+0

Поскольку у меня есть большие файлы трафика, я узнал, что я мог бы также просто искать флагов txp 0x2 (SYN) и записывать все порты, используемые при установлении соединения. Впоследствии у меня есть список «служебных» портов. Кроме того, http://stackoverflow.com/questions/37271660/big-graph-in-memory/37272260 может генерировать список наиболее распространенных портов при удалении эфемерных портов. – mutilis

Смежные вопросы