php300
“我是喲喲吼說科技,專注於數據網絡的問題,歡迎大家與我交流數據網絡的問題”
TCP(Transmission Control Protocol,傳輸控制協議)是一種面向鏈接的,可靠的傳輸層協議。
如題:怎麼解析出TCP數據包?
在OSI七層模型中,TCP層是位於IP層之上,應用層之下,起著承上啟下的作用,但IP層不能提供可靠的傳輸,需要TCP來保證數據包的可靠傳輸。如何解析TCP數據包,這需要了解TCP數據包的構成:
通過上圖可以看出TCP數據包由源端口、目的端口、序號等等組成。下面喲喲通過wireshark軟件抓取TCP數據簡單分析一下:
可以看出這個TCP數據包中每層的數據內容,包括物理層、數據鏈路層、網絡層和傳輸層,咱們針對傳輸層來具體說明一下。
源端口:34162,換算成十六進制為8572;
目的端口:443,換算後為01bb;
序列號:數據包中序列號顯示9e546d6b已超過2^32-1,因此這裡序列號為0;
偏移:數據包中偏移量為80,佔用4bit,0x80等於二進制的1000 0000,因此偏移量1000=8,TCP報文頭為8*4=32字節;
保留:未使用,因此為0;
標誌位:6個標誌比特,可同時被置為1;
窗口大小:表示源主機最大能接收的字節數量;
校驗和:強制性字段,由發送端計算和存儲,接收端去驗證;
緊急指針:當標誌位URG為1時才生效;
TCP選項:類似IP,是可選的選項;
填充:使選項湊足32位;
歡迎大家多多關注我,在下方評論區說出自己的見解。