TCP協議首部:

分析第一個包:

源地址:我自己電腦的IP,就不放上來了
Destination: 222.199.191.33 目的地址
TCP:表明是個TCP協議
Length:66 表明包的長度是66個字節 ??
56739->443 :表明是從源地址的56739端口發送給目的地址的443端口
[SYN]表明這是一個TCP的同步請求,是TCP握手的第一步
Seq=0: TCP協議中的序號,這里為0.
在TCP中第一個SYN 包所包含的 sequence 是隨機的,而第一個 SYN+ACK包里的sequence 也是隨機的,wireshark 為了你便於觀察都使用相對值,初始化這兩個隨機值為0,后面的sequence 和 acknowledge 都在上面累加
Win=8192: 發送報文段一方的接收窗口。TCP協議中的字段
Len=0: 發送文件TCP報文段Datas段的長度
MSS=1460: 最大報文段長度,指每個TCP報文段中數據字段的最大長度。它不包含首部長度。是TCP首部中,選項中的字段。
WS=256:窗口擴大因子;只能在連接建立階段確定;在連接期間他的值不能夠改變;新的窗口值=首部中定義的窗口值乘以2的(窗口擴大因子)的次方;由於窗口值不夠用。選項中的字段。 ??書上說,窗口擴大選項占3個字節,其中一個字節表示移位值S,S最大為14,新的窗口值等於TCP首部中的窗口位數從16增大到(16+S)。可這里WS怎么會等於256呢??
答:這里的256是指窗口擴大了256倍,其S=8, 2的8次方 = 256. 符合S<=14. 打開軟件下面TCP部分的詳細說明,有介紹。
SACK_PERM=1: 允許選擇確認。 TCP選項中的字段。
恩,總算了解一點點了,這些信息是TCP協議上的內容。
下面,分析一下詳細的內容,點擊上面的包,下面會出現詳細的信息,比如下面這樣:

分別是什么意思呢?
經我思索了半天,才恍然大悟,這是根據網絡分層模型顯示的不同層的內容。
Frame 551: 對應的是這個包的概略信息,里面有我們是否對其做過標記,怎么用彩色顯示之類的內容。
Ethernet II: 對應網絡接口層,表明采用Ethernet II的太網標准幀格式。
Internet Protocal Version 4: 對應網絡層,表明采用IPv4
Transmission Control Protocol:對應傳輸層,表明采用TCP協議。
下面,一個一個點開,看看里面的詳細內容。
Ethernet II:

可以看到源和目標的硬件地址。
unicast表示單播。
??那一堆的...是什么? LG IG又是什么??
答:那些點是指要標明的字段中非重要的信息未,重要的位的數字被顯示出來了。
IPv4:
先把IP首部的格式放上來,有助於分析:


開始說明了使用的協議版本是IPv4, 首部長度是20字節。
Differentiated Services Field:區分服務字段
(DSCP 0x00: Default; ECN:0x00) 表示一個特定的上層協議所分配的重要級別,默認的DSCP值是0,相當於盡力傳送,ECN字段被分為ECN-Capable Transport(ECT)bit和CEbit, ECT bit設置為0,表明該傳輸協議將忽略CE bit. CE bit 將由路由器設置,設置為0說明對末端節點不擠塞。
IP包的總長度為52字節,標志字段為1302
標識字段為0x02,表明沒有分片,片偏移量為0,生存時間為128,上層協議為TCP
首部檢驗和下面的Good和Bad都是False, 我理解的是因為這是第一個包,不存在驗證問題。
TCP

這里,看看這些包究竟在做什么

是我的電腦跟某個網站交互的前4個包。
其中前三個包可以明顯看出是TCP的三次握手。
那么,問題來了:
為什么第三個包的長度比前兩個短呢?在建立握手的過程中交換了什么信息呢?
(我自己的理解,不一定對,歡迎指正)
我們分析一下前三個包的信息,可以發現,只有TCP首部長度不同,前兩個包用到了12個字節的TCP選項字段,而第三個包沒有。

就多在畫圈的地方了,在選項字段,雙方傳遞了自己的最大報文長度(MSS),窗口擴大選項(window scale)和可選擇確認選項(SACK)。其實就是為雙方之后傳遞數據的大小,確認方式等做了信息交換,保證雙方能夠正常的通信。
轉: http://www.cnblogs.com/dplearning/p/4820098.html
