TCP/IP 協議棧
以太網幀
MAC Header 【以太網幀的數據】 MAC Ender
TCP 協議頭
First
Source Port :源端口
Destination Port:目的端口
Second
- Sequence Number:保證有序處理。
因爲IP層不保證有序 - TCP中數據不是按包排序,是按字節排序,每個包的Seq Number代表的是發送字節的起始序號。
- 發送第一個包序號是隨機的,三次握手中交換。
Third
- Acknowledgment Number:應答num,保證可靠
一個主機向另一個主機發送數據,目的主機接收後,迴應收到,否則,一直髮送。
Fourth
- Data Offset:數據偏移量
因爲Options長度是不確定的,所以,從哪開始獲取數據呢,就從這個來判斷 - Reserved:保留字
- URG:緊急標識。(較少用)
ACK:確認收到消息
PSH:向對方發送真正的負載數據,這個設置爲1
RST:復位。比如,向主機未開通80端口而依舊發送數據的話,會收到此標識位爲1.
SYN:三次握手時用。每次握手都要用
FIN:第四次揮手時用。互相告知,結束。 - Window:一個窗口多大,比如:一個窗口4048,每個包1024,那麼一次可以接收4個,當滿時,必須停止。
Fifth
- Checksum:校驗和,與IP中的校驗各類似。
- Urgent Pointer:緊急指針。
Sixth
- Options:選項。比如,可以設置傳輸的最大報文大小。
TLV格式:type length value。 - Padding:保證32位對齊。
Seventh
data:真正TCP數據段。
Ack Number
在TCP 中表示:希望對方發送數據的起始位置
如:A向B發送一個大小爲100B的數據,其Seq Number=100,則B收到後,返回Ack Number爲2001.