什麼是 TCP 流?

哎呀我的天吶發表於2022-10-09

其實,這裡的 TCP 流,就是英文的 TCP Stream。

Stream 這個詞有“流”的意思,也有“連續的事件”這樣一個含義,所以它是有前後、有順序的,這也正對應了 TCP 的特性。

跟 Stream 相對的一個詞是 Datagram,它是指沒有前後關係的資料單元,比如 UDP 和 IP 都屬於 Datagram。

在 Linux 網路程式設計裡面,TCP 對應的 socket 型別是 SOCK_STREAM,而 UDP 對應的,就是 SOCK_DGRAM 了。

顯然,DGRAM 就是 Datagram 的簡寫。

在具體的網路報文層面,一個 TCP 流,對應的就是一個五元組:傳輸協議型別、源 IP、源 埠、目的 IP、目的埠。比如,今天你訪問了xxxx網站,那麼你這次的 TCP 流就可 能就是這樣一個五元組:

(TCP, your_ip, your_port, geekbang_ip, 443)

一個 IP 報文,包含了所有這五個元素,所以 Wireshark 在解析抓包檔案時,自然就能透過五元組知道每個報文所屬的 TCP 流了。

這也是為什麼我們可以在 Wireshark 裡,用Follow TCP Stream 的方法,找到報文所在的 TCP 流。

不過有時候,也會有四元組的說法。其實它跟五元組大體上是一致的,只是四元組沒有區分傳輸層協議型別(TCP 或者 UDP)。

但是如果我們都清楚地知道應用型別,比如知道應用是 HTTP 協議的,那它的傳輸層協議預設就是 TCP,這一元是否算在裡面,已經不重要了。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29990276/viewspace-2917369/,如需轉載,請註明出處,否則將追究法律責任。

相關文章