计算机网络协议包头赏析-TCP
轉(zhuǎn)載自博客地址為http://roclinux.cn。
仍然先把TCP報(bào)文段的格式放在這里,然后我們看圖說(shuō)話:
TCP報(bào)文段也分為首部和數(shù)據(jù)兩部分,首部默認(rèn)情況下一般是20字節(jié)長(zhǎng)度,但在一些需求情況下,會(huì)使用“可選字段”,這時(shí),首部長(zhǎng)度會(huì)有所增加。
下面,我們?nèi)匀谎永m(xù)講解IP協(xié)議的思路,針對(duì)不同的域,分別進(jìn)行講解:
【源端口】- 16bit
來(lái)源處的端口號(hào);
【目的端口】- 16bit
目的處的端口號(hào);
【序號(hào)】- 32bit
每一個(gè)TCP報(bào)文段都會(huì)有一個(gè)序號(hào),序號(hào)字段的值其實(shí)是本報(bào)文段所發(fā)送的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。這是因?yàn)門CP是面向連接的可靠服務(wù),其每一個(gè)字節(jié)都會(huì)對(duì)應(yīng)一個(gè)序號(hào),通過(guò)序號(hào)來(lái)確保服務(wù)的可靠性和有序性。
【確認(rèn)號(hào)】- 32bit
確認(rèn)號(hào),是期望收到對(duì)方的下一個(gè)報(bào)文段的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。(這句話有些拗口,但是在后面我們講解三次握手和四次揮手時(shí),大家會(huì)更深刻的理解這句話的含義)
【數(shù)據(jù)偏移】- 4bit
其實(shí)它本質(zhì)上就是“首部長(zhǎng)度”,因?yàn)椤皵?shù)據(jù)偏移”是指TCP報(bào)文段的數(shù)據(jù)部分的起始處距離TCP報(bào)文段的起始處的距離。(仍然很拗口,但相信你能明白)。
數(shù)據(jù)偏移總共占4bit,因此最大能表示的數(shù)值為15。而數(shù)據(jù)偏移的單位是“4字節(jié)”,此處的設(shè)計(jì)和IP數(shù)據(jù)報(bào)的設(shè)計(jì)是完全相同的,所以說(shuō)TCP報(bào)文段首部的長(zhǎng)度最長(zhǎng)為15×4=60字節(jié),且首部長(zhǎng)度必須為4字節(jié)的整數(shù)倍。
【保留字段】- 6bit
這6bit在標(biāo)準(zhǔn)中是保留字段,我猜測(cè),有兩個(gè)目的,第一個(gè)是預(yù)留除URG/ACK/PSH/RST/SYN/FIN/之外的冗余功能位;第二個(gè)是為了對(duì)其字節(jié)位。
【緊急字段URG】- 1bit
此字段告訴系統(tǒng)此報(bào)文段中有緊急數(shù)據(jù),應(yīng)盡快傳送。當(dāng)URG=1時(shí),
【確認(rèn)字段ACK】- 1bit
當(dāng)ACK=1時(shí),表示確認(rèn),且確認(rèn)號(hào)有效;當(dāng)ACK=0時(shí),確認(rèn)號(hào)字段無(wú)效。
【推送字段PSH】- 1bit
當(dāng)PSH=1時(shí),則報(bào)文段會(huì)被盡快地交付給目的方,不會(huì)對(duì)這樣的報(bào)文段使用緩存策略。
【復(fù)位字段RST】- 1bit
當(dāng)RST為1時(shí),表明TCP連接中出現(xiàn)了嚴(yán)重的差錯(cuò),必須釋放連接,然后再重新建立連接。
【同步字段SYN】- 1bit
當(dāng)SYN=1時(shí),表示發(fā)起一個(gè)連接請(qǐng)求。
【終止字段FIN】- 1bit
用來(lái)釋放連接。當(dāng)FIN=1時(shí),表明此報(bào)文段的發(fā)送端的數(shù)據(jù)已發(fā)送完成,并要求釋放連接。
【窗口字段】- 16bit
此字段用來(lái)控制對(duì)方發(fā)送的數(shù)據(jù)量,單位為字節(jié)。
一般TCP連接的其中一端會(huì)根據(jù)自身的緩存空間大小來(lái)確定自己的接收窗口大小,然后告知另一端以確定另一端的發(fā)送窗口大小。
【校驗(yàn)和字段】- 16bit
這個(gè)校驗(yàn)和是針對(duì)首部和數(shù)據(jù)兩部分的。
【緊急指針字段】- 16bit
緊急指針指出在本報(bào)文段中的緊急數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào)。
總結(jié)
以上是生活随笔為你收集整理的计算机网络协议包头赏析-TCP的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python爬虫实例1
- 下一篇: android 隐藏桌面图标