2018-09-28關(guān)于tcp報文詳解

TCP報文是TCP層傳輸?shù)臄?shù)據(jù)單元,也叫報文段。

image.png

1、端口號:用來標(biāo)識同一臺計算機的不同的應(yīng)用進(jìn)程。

1)源端口:源端口和IP地址的作用是標(biāo)識報文的返回地址。

2)目的端口:端口指明接收方計算機上的應(yīng)用程序接口。

TCP報頭中的源端口號和目的端口號同IP數(shù)據(jù)報中的源IP與目的IP唯一確定一條TCP連接。

2、序號和確認(rèn)號:是TCP可靠傳輸?shù)年P(guān)鍵部分。序號是本報文段發(fā)送的數(shù)據(jù)組的第一個字節(jié)的序號。在TCP傳送的流中,每一個字節(jié)一個序號。e.g.一個報文段的序號為300,此報文段數(shù)據(jù)部分共有100字節(jié),則下一個報文段的序號為400。所以序號確保了TCP傳輸?shù)挠行蛐?。確認(rèn)號,即ACK,指明下一個期待收到的字節(jié)序號,表明該序號之前的所有數(shù)據(jù)已經(jīng)正確無誤的收到。確認(rèn)號只有當(dāng)ACK標(biāo)志為1時才有效。比如建立連接時,SYN報文的ACK標(biāo)志位為0。

3、數(shù)據(jù)偏移/首部長度:4bits。由于首部可能含有可選項內(nèi)容,因此TCP報頭的長度是不確定的,報頭不包含任何任選字段則長度為20字節(jié),4位首部長度字段所能表示的最大值為1111,轉(zhuǎn)化為10進(jìn)制為15,15*32/8 = 60,故報頭最大長度為60字節(jié)。首部長度也叫數(shù)據(jù)偏移,是因為首部長度實際上指示了數(shù)據(jù)區(qū)在報文段中的起始偏移值。

4、保留:為將來定義新的用途保留,現(xiàn)在一般置0。

5、控制位:URG ACK PSH RST SYN FIN,共6個,每一個標(biāo)志位表示一個控制功能。

1)URG:緊急指針標(biāo)志,為1時表示緊急指針有效,為0則忽略緊急指針。

2)ACK:確認(rèn)序號標(biāo)志,為1時表示確認(rèn)號有效,為0表示報文中不含確認(rèn)信息,忽略確認(rèn)號字段。

3)PSH:push標(biāo)志,為1表示是帶有push標(biāo)志的數(shù)據(jù),指示接收方在接收到該報文段以后,應(yīng)盡快將這個報文段交給應(yīng)用程序,而不是在緩沖區(qū)排隊。

4)RST:重置連接標(biāo)志,用于重置由于主機崩潰或其他原因而出現(xiàn)錯誤的連接。或者用于拒絕非法的報文段和拒絕連接請求。

5)SYN:同步序號,用于建立連接過程,在連接請求中,SYN=1和ACK=0表示該數(shù)據(jù)段沒有使用捎帶的確認(rèn)域,而連接應(yīng)答捎帶一個確認(rèn),即SYN=1和ACK=1。

6)FIN:finish標(biāo)志,用于釋放連接,為1時表示發(fā)送方已經(jīng)沒有數(shù)據(jù)發(fā)送了,即關(guān)閉本方數(shù)據(jù)流。

6、窗口:滑動窗口大小,用來告知發(fā)送端接受端的緩存大小,以此控制發(fā)送端發(fā)送數(shù)據(jù)的速率,從而達(dá)到流量控制。窗口大小時一個16bit字段,因而窗口大小最大為65535。

7、校驗和:奇偶校驗,此校驗和是對整個的 TCP 報文段,包括 TCP 頭部和 TCP 數(shù)據(jù),以 16 位字進(jìn)行計算所得。由發(fā)送端計算和存儲,并由接收端進(jìn)行驗證。

8、緊急指針:只有當(dāng) URG 標(biāo)志置 1 時緊急指針才有效。緊急指針是一個正的偏移量,和順序號字段中的值相加表示緊急數(shù)據(jù)最后一個字節(jié)的序號。 TCP 的緊急方式是發(fā)送端向另一端發(fā)送緊急數(shù)據(jù)的一種方式。

9、選項和填充:最常見的可選字段是最長報文大小,又稱為MSS(Maximum Segment Size),每個連接方通常都在通信的第一個報文段(為建立連接而設(shè)置SYN標(biāo)志為1的那個段)中指明這個選項,它表示本端所能接受的最大報文段的長度。選項長度不一定是32位的整數(shù)倍,所以要加填充位,即在這個字段中加入額外的零,以保證TCP頭是32的整數(shù)倍。

10、數(shù)據(jù)部分: TCP 報文段中的數(shù)據(jù)部分是可選的。在一個連接建立和一個連接終止時,雙方交換的報文段僅有 TCP 首部。如果一方?jīng)]有數(shù)據(jù)要發(fā)送,也使用沒有任何數(shù)據(jù)的首部來確認(rèn)收到的數(shù)據(jù)。在處理超時的許多情況中,也會發(fā)送不帶任何數(shù)據(jù)的報文段。

參考文獻(xiàn):

http://blog.chinaunix.net/uid-26366978-id-3282793.html

http://blog.csdn.net/ningxuezhu/article/details/39892091/

http://blog.csdn.net/a19881029/article/details/29557837

http://www.cnblogs.com/xinyuyuanm/archive/2013/04/17/3026279.html

http://www.360doc.com/content/12/1218/10/3405077_254718387.shtml

原文地址

http://blog.csdn.net/mary19920410/article/details/58030147

關(guān)于TCP三次握手與四次揮手過程https://blog.csdn.net/qzcsu/article/details/72861891

這篇文章中有兩張很形象的動圖
三次握手


image.png

四次揮手


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 運輸層協(xié)議概述 從通信和信息處理的角度看,運輸層向它上面的應(yīng)用層提供通信服務(wù),它屬于面向通信部分的最高層,同時也是...
    srtianxia閱讀 2,750評論 0 2
  • 本篇結(jié)構(gòu): 前言 TCP報文首部格式 三次握手 四次揮手 wireshark抓包三次握手 wireshark抓包四...
    w1992wishes閱讀 8,444評論 0 57
  • 端口與進(jìn)程 TCP 的包是不包含 IP 地址信息的,那是 IP 層上的事,但是有源端口和目的端口。 就是說,端口這...
    XLsn0w閱讀 959評論 2 4
  • 概述 TCP/IP 協(xié)議棧是一系列網(wǎng)絡(luò)協(xié)議的總和,是構(gòu)成網(wǎng)絡(luò)通信的核心骨架,它定義了電子設(shè)備如何連入因特網(wǎng),以及數(shù)...
    醬紫_Johns閱讀 709評論 0 0
  • 1、TCP狀態(tài)linux查看tcp的狀態(tài)命令:1)、netstat -nat 查看TCP各個狀態(tài)的數(shù)量2)、lso...
    北辰青閱讀 9,708評論 0 11

友情鏈接更多精彩內(nèi)容