2016-05-13 63 views
2

我目前正在調查網絡流量。在這裏,我想找出哪個客戶端與哪個服務器對話。顯然,我可以看看第一個數據包,看看:短暫的端口對話夥伴分辨率

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向Web服務器(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

由於我有很大的流量文件,我發現,我也可以查找0x2 tcp標誌(SYN)並記錄建立連接時使用的所有端口。之後,我有一個「服務」端口列表。此外,http://stackoverflow.com/questions/37271660/big-graph-in-memory/37272260能夠生成最常見的端口列表,同時刪除臨時端口。 – mutilis