
TCP
tcp是面向連接的,能保證不丟失數據。流量控制,阻塞控制。提供可靠的數據服務。一對一
16位端口號
源端口
目標端口
標示該段報文來自哪里(源端口)以及要傳給哪個上層協議或應用程序(目的端口)
進行tcp通信時,一般client是通過系統自動選擇的臨時端口號,而服務器一般是使用知名服務端口號或者自己指定的端口號
32位序號
序列號(Sequence number)
表示一次tcp通信過程(從建立連接到斷開)過程中某一次傳輸方向上的字節流的每個字節的編號
假定主機A和B進行tcp通信,A傳送給B一個tcp報文段中,序號值被系統初始化為某一個隨機值ISN,那么在該傳輸方向上(從A到B),后續的所有tcp報文斷中的序號值都會被設定為ISN加上該報文段所攜帶數據的第一個字節在整個字節流中的偏移
例如某個TCP報文段傳送的數據是字節流中的第1025~2048字節,那么該報文段的序號值就是ISN+1025
TCP 是面向字節流的協議,通過 TCP 傳輸的字節流的每個字節都分配了序列號,序列號(Sequence number)指的是本報文段第一個字節的序列號
序列號回繞
https://blog.csdn.net/liufuchun111/article/details/86301587
32位確認號
用作對另一方發送的tcp報文段的響應。
其值是收到對方的tcp報文段的序號值+1。假定主機A和B進行tcp通信,那么A發出的tcp報文段不但帶有自己的序號,也包含了對B發送來的tcp報文段的確認號。反之也一樣。
4位頭部長度
表示tcp頭部有多少個32bit字(4字節),因為4位最大值是15,所以最多有15個32bit,也就是60個字節是最大的tcp頭部長度。
6位標志位
URG
緊急指針是否有效
ACK
表示確認好是否有效,攜帶ack標志的報文段也稱確認報文段
PSH
提示接收端應用程序應該立即從tcp接受緩沖區中讀走數據,為后續接收的數據讓出空間
RST
表示要求對方重建連接。帶RST標志的tcp報文段也叫復位報文段
SYN
表示建立一個連接,攜帶SYN的tcp報文段為同步報文段
FIN
表示告知對方本端要關閉連接了。
16為窗口大小
是TCP流量控制的一個手段,這里說的窗口是指接收通告窗口,它告訴對方本端的tcp接收緩沖區還能容納多少字節的數據,這樣對方就可以控制發送數據的速度。
16位校驗和
由發送端填充,接收端對tcp報文段執行CRC算法以檢驗TCP報文段在傳輸過程中是否損壞。注意這個校驗不僅包括tcp頭部,也包括數據部分。這也是tcp可靠傳輸的一個重要保障。
16位緊急指針
是一個正的偏移量。它和序號字段的值相加表示最后一個緊急數據的下一字節的序號
因此這個字段是緊急指針相對當前序號的偏移量。不妨稱之為緊急便宜,發送緊急數據時會用到這個

大小


TCP 報文頭部里沒有源 ip 和目標 ip 地址,只有源端口號和目標端口號
過濾 ip 地址使用 ip.addr == 要過濾的地址
TCP 的報文里是沒有源 ip 和目標 ip 的,因為那是 IP 層協議的事情,TCP 層只有源端口和目標端口。
源 IP、源端口、目標 IP、目標端口構成了 TCP 連接的「四元組」
一個四元組可以唯一標識一個連接
UDP
udp是非面向連接的,盡量保證數據交付,非按順序到達。頭部開銷小,實現簡單
- 源端口號
- 目的端口號
- udp長度
- udp校驗和

