免費(fèi)網(wǎng)頁設(shè)計(jì)生成器關(guān)于進(jìn)一步優(yōu)化
報(bào)文格式
header部分字段含義解析
固定字段
對(duì)于header中固定部分字段含義,見之前的blog《TCP報(bào)文分析》;
對(duì)部分字段含義補(bǔ)充說明
- Data Offset:4bit,tcp header的長(zhǎng)度,單位:32bit(4字節(jié));RFC原文介紹:The number of 32-bit words in the TCP header. This indicates where the data begins. The TCP header (even one including options) is an integer multiple of 32 bits long.
Options部分字段解讀
-
長(zhǎng)度計(jì)算: (DOffset-5)*32 (bit)
-
數(shù)據(jù)結(jié)構(gòu),一般Option的格式為TLV;其中Kind為0、1的兩個(gè)類型格式比較特殊;
-
RFC文檔中規(guī)定必須識(shí)別的類型
- kind = 2,表示mss信息,在tcp握手階段,SYN和SYN+ACK報(bào)文中會(huì)包含該信息進(jìn)行協(xié)商
- kind = 2,表示mss信息,在tcp握手階段,SYN和SYN+ACK報(bào)文中會(huì)包含該信息進(jìn)行協(xié)商
-
一些常用的Option
- 其中SACK、Timestamps、Window Scale建議實(shí)現(xiàn),用于提升TCP的性能
- 其中SACK、Timestamps、Window Scale建議實(shí)現(xiàn),用于提升TCP的性能
抓包分析
TCP握手過程
syn報(bào)文
MSS為1460字節(jié);
SACK permitted : 支持SACK機(jī)制,用于對(duì)收到的不連續(xù)數(shù)據(jù)段的確認(rèn)
Window scale:窗口擴(kuò)大系數(shù)為3,是2的指數(shù),23=8;說明發(fā)送方可接收窗口大小為Window*2window scale = 29200 * 2^3 = 233600 字節(jié);
Timesatmps,TSval:發(fā)送端發(fā)送的時(shí)間戳;TSecr:最近一次接收的報(bào)文中攜帶了TSval;
圖片來源:https://zhuanlan.zhihu.com/p/612010050
syn-ack報(bào)文
接收方接收窗口大小為:28960 * 2^7 = 3706880;
ack
補(bǔ)充信息說明
window scale的意義
SACK的意義
參考資料
- tcp RFC文檔
- tcp option選項(xiàng)說明
- TCP頭部時(shí)間戳選項(xiàng)