TCP\IP 數據流與數據包

         因爲這段時間再看suricata的源碼,然後發現自己對數據流與數據包的概念有點模糊,然後到網上去百度,發現網上的解釋少得可憐,大多數都是一些名詞解釋,沒什麼收穫,後來看多了也瞭解了一些,所以記錄下來,如果有不正確指出請指出。

        通常,數據包的概念也是有點模糊,TCP層的包可以叫做數據包,應用層的包也可以叫做數據包,這要看你需要解析的是那個層面的包。

        數據流的概念在百度百科上的解釋是這樣的:數據流(data stream)最初是通信領域使用的概念,代表傳輸中所使用的信息的數字編碼信號序列。然而,我們所提到的數據流概念與此不同。這個概念最初在1998年由Henzinger在文獻87中提出,他將數據流定義爲“只能以事先規定好的順序被讀取一次的數據的一個序列”。

        我對數據流的定義是(狹義的wireshack抓的pcap包中瞭解到的概念):數據流是完整的一次TCP\IP鏈接,包含多個數據包,從開始的SYN包到最後斷開連接的第四次握手的ACK包,這些數據包的負載也就是除去所有的協議頭所剩下的數據,是描述完整的一次動作(server 和client 交互的數據),從方向上來說,同方向的數據包的IP和端口都是一致的。

       從上面的描述可以看出,數據流是包含了多個數據包的,而這些包都有相似的特點,所以構成了一個數據流,下面我們看看,pcap包的TCP數據流的描述:

1、打包抓到的pcap包,我沒有做篩選,所以可以看到從第一個數據包開始到最後是有很多的包。



2、選擇一個數據包,點擊右鍵,選擇追蹤TCP流。




3、最後經過篩選之後,剩下能看到的就是一個包所屬的一個TCP流。




再對照我上面對一個流的定義來看,是不是從第一個包開始,是SYN包,再下來是SYN | ACK 包,再往後看看....是不是一次完整的TCP鏈接,而且同方向的包的IP和端口是一樣的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章