日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > 互聯(lián)網(wǎng) > Linux 網(wǎng)絡(luò)編程――TCP 和 UDP 數(shù)據(jù)報(bào)格式詳解

Linux 網(wǎng)絡(luò)編程――TCP 和 UDP 數(shù)據(jù)報(bào)格式詳解

來(lái)源:程序員人生   發(fā)布時(shí)間:2015-04-24 08:37:50 閱讀次數(shù):3033次

TCP 報(bào)文格式




TCP(Transmission Control Protocol 傳輸控制協(xié)議)是1種面向連接的、可靠的、基于字節(jié)流的傳輸層通訊協(xié)議。


TCP 報(bào)文段的報(bào)頭有 10 個(gè)必須的字段和 1 個(gè)可選字段。報(bào)頭最少為 20 字節(jié)。報(bào)頭后面的數(shù)據(jù)是可選項(xiàng)。


1)源端口(16位)

標(biāo)識(shí)發(fā)送報(bào)文的計(jì)算機(jī)端口或進(jìn)程。1個(gè) TCP 報(bào)文段必須包括源端口號(hào),使目的主機(jī)知道應(yīng)當(dāng)向何處發(fā)送確認(rèn)報(bào)文。


2)目的端口(16位)

標(biāo)識(shí)接收?qǐng)?bào)文的目的主機(jī)的端口或進(jìn)程。


3) 序號(hào)(也叫序列號(hào))(32位)

用于標(biāo)識(shí)每一個(gè)報(bào)文段,使目的主機(jī)可確認(rèn)已收到指定報(bào)文段中的數(shù)據(jù)。當(dāng)源主機(jī)用于多個(gè)報(bào)文段發(fā)送1個(gè)報(bào)文時(shí),即便這些報(bào)文到達(dá)目的主機(jī)的順序不1樣,序列號(hào)也能夠使目的主機(jī)按順序排列它們。


在 SYN 標(biāo)志置位時(shí),該字段唆使了用戶(hù)數(shù)據(jù)區(qū)中第1個(gè)字節(jié)的序號(hào);在 SYN 標(biāo)志置位時(shí),該字段唆使的是初始發(fā)送的序列號(hào)。


在建立連接時(shí)發(fā)送的第1個(gè)報(bào)文段中,雙方都提供1個(gè)初始序列號(hào)。TCP 標(biāo)準(zhǔn)推薦使用以 4ms 間隔遞增 1 的計(jì)數(shù)器值作為這個(gè)初始序列號(hào)的值。使用計(jì)數(shù)器可以避免連接關(guān)閉再重新連接時(shí)出現(xiàn)相同的序列號(hào)。

   

對(duì)那些包括數(shù)據(jù)的報(bào)文段,報(bào)文段中第1個(gè)數(shù)據(jù)字節(jié)的數(shù)量就是初始序列號(hào),其后數(shù)據(jù)字節(jié)按順序編號(hào)。如果源主機(jī)使用一樣的連接發(fā)送另外一個(gè)報(bào)文段,那末這個(gè)報(bào)文段的序列號(hào)等于前1個(gè)報(bào)文段的序列號(hào)與前1個(gè)報(bào)文段中數(shù)據(jù)字節(jié)的數(shù)量之和。例如,假定源主機(jī)發(fā)送 3 個(gè)報(bào)文段,每一個(gè)報(bào)文段有 100 字節(jié)的數(shù)據(jù),且第1個(gè)報(bào)文段的序列號(hào)是 1000,那末第2個(gè)報(bào)文段的序列號(hào)就是 1100(1000 + 100),第3個(gè)報(bào)文段的序列號(hào)就是 1200(1100 + 100)。

   

如果序列號(hào)增大至最大值將復(fù)位為 0。


4)確認(rèn)號(hào)(32位)

目的主機(jī)返回確認(rèn)號(hào),使源主機(jī)知道某個(gè)或幾個(gè)報(bào)文段已被接收。如果 ACK 控制位被設(shè)置為 1,則該字段有效。確認(rèn)號(hào)等于順序接收到的最后1個(gè)報(bào)文段的序號(hào)加 1,這也是目的主機(jī)希望下次接收的報(bào)文段的序號(hào)值。返回確認(rèn)號(hào)后,計(jì)算機(jī)認(rèn)為已接收到小于該確認(rèn)號(hào)的所有數(shù)據(jù)。


例如,序列號(hào)等于前1個(gè)報(bào)文段的序列號(hào)與前1個(gè)報(bào)文段中數(shù)據(jù)字節(jié)的數(shù)量之和。例如,假定源主機(jī)發(fā)送 3 個(gè)報(bào)文段,每一個(gè)報(bào)文段有 100 字節(jié)的數(shù)據(jù),且第1個(gè)報(bào)文段的序列號(hào)是 1000,那末接收到第1個(gè)報(bào)文段后,目的主機(jī)返回含確認(rèn)號(hào)1100 的報(bào)頭。接收到第2個(gè)報(bào)文段(其序號(hào)為 1100 )后,目的主機(jī)返回確認(rèn)號(hào) 1200。接收到第3個(gè)報(bào)文段后,目的主機(jī)返回確認(rèn)號(hào) 1300 。


目的主機(jī)不1定在每次接收到報(bào)文段后都返回確認(rèn)號(hào)。在上面的例子中,目的主機(jī)可能等到所有 3 個(gè)報(bào)文段都收到后,再返回1個(gè)含確認(rèn)號(hào) 1300 的報(bào)文段,表示已接收到全部 1200 字節(jié)的數(shù)據(jù)。但是如果目的主機(jī)再發(fā)回確認(rèn)號(hào)之前等待時(shí)間太長(zhǎng),源主機(jī)會(huì)認(rèn)為數(shù)據(jù)沒(méi)有到達(dá)目的主機(jī),并自動(dòng)重發(fā)。


上面的例子中,如果目的主機(jī)接收到了報(bào)文段號(hào)為 1000 的第1個(gè)報(bào)文段和報(bào)文段號(hào)為 1200 的最后1個(gè)報(bào)文段,則可返回確認(rèn)號(hào) 1100,但是再返回確認(rèn)號(hào) 1300 之前,應(yīng)當(dāng)?shù)却龍?bào)文段號(hào)為 1100 的中間報(bào)文段。


5) 數(shù)據(jù)偏移(首部長(zhǎng)度)(4位)

TCP 報(bào)文段的數(shù)據(jù)起始處距離 TCP 報(bào)文段的起始處有多遠(yuǎn),即首部長(zhǎng)度。由于 TCP 報(bào)頭的長(zhǎng)度隨 TCP 選項(xiàng)字段內(nèi)容的不同而變化,因此報(bào)頭中包括1個(gè)指定報(bào)頭字段的字段。該字段以 32 比特為單位,所以報(bào)頭長(zhǎng)度1定是 32 比特的整數(shù)倍,有時(shí)需要在報(bào)頭末尾補(bǔ) 0 。如果報(bào)頭沒(méi)有 TCP 選項(xiàng)字段,則報(bào)頭長(zhǎng)度值為 5 ,表示報(bào)頭1個(gè)有 160 比特,即 20 字節(jié)。


6)保存位(6位)

由跟在數(shù)據(jù)偏移字段后的 6 位構(gòu)成, 全部為 0 。


7)控制位(6位)

緊急 URG:此位置 1,表明緊急指針字段有效,它告知系統(tǒng)此報(bào)文段中有緊急數(shù)據(jù),應(yīng)盡快傳送。

確認(rèn) ACK:僅當(dāng) ACK = 1 時(shí)確認(rèn)號(hào)字段才有效,TCP 規(guī)定,在連接建立后所有轉(zhuǎn)達(dá)的報(bào)文段都必須把 ACK 置 1。

推送 PSH:當(dāng)兩個(gè)利用進(jìn)程進(jìn)行交互式的通訊時(shí),有時(shí)在1真?zhèn)€利用進(jìn)程希望在鍵入1個(gè)命令后立即就可以夠收到對(duì)方的響應(yīng)。在這類(lèi)情況下,TCP 就能夠使用推送(push)操作,這時(shí)候,發(fā)送方 TCP 把 PSH 置 1 ,并立即創(chuàng)建1個(gè)報(bào)文段發(fā)送出去,接收方收到 PSH = 1 的報(bào)文段,就盡快地(即“推送”向前)交付給接收利用進(jìn)程,而不再等到全部緩存都填滿(mǎn)后再向上交付。

復(fù)位 RST:用于復(fù)位相應(yīng)的 TCP 連接

同步 SYN:僅在3次握手建立 TCP 連接時(shí)有效。當(dāng) SYN = 1 而 ACK = 0 時(shí),表明這是1個(gè)連接要求報(bào)文段,對(duì)方若同意建立連接,則應(yīng)在相應(yīng)的報(bào)文段中使用 SYN = 1 和 ACK = 1。因此,SYN 置 1 就表示這是1個(gè)連接要求或連接接受報(bào)文。

終止 FIN:用來(lái)釋放1個(gè)連接。當(dāng) FIN = 1 時(shí),表明此報(bào)文段的發(fā)送方的數(shù)據(jù)已發(fā)送終了,并要求釋放運(yùn)輸連接。


8)窗口(16位)

此字段用來(lái)進(jìn)行流量控制,這個(gè)值是本機(jī)期望1次接收的字節(jié)數(shù),即發(fā)送數(shù)據(jù)的窗口大小。告知對(duì)方在不等待確認(rèn)的情況下,可以發(fā)來(lái)多大的數(shù)據(jù)。這里表示的最大長(zhǎng)度是2^16 - 1 = 65535,如需要使用更大的窗口大小,需要使用選項(xiàng)中的窗口擴(kuò)大因子選項(xiàng)。


指發(fā)送本報(bào)文段的1方的接收窗口(而不是自己的發(fā)送窗口)。


9)校驗(yàn)和(16位)

源主機(jī)和目的主機(jī)根據(jù) TCP 報(bào)文段和偽報(bào)頭的內(nèi)容計(jì)算校驗(yàn)和。在偽報(bào)頭中寄存著來(lái)自 IP 報(bào)頭和 TCP 報(bào)文段長(zhǎng)度信息。與 UDP 1樣,偽報(bào)頭其實(shí)不在網(wǎng)絡(luò)中傳輸,并且在校驗(yàn)和中包括偽報(bào)頭的目的是為了避免目的主機(jī)毛病地接收存在路由的毛病數(shù)據(jù)報(bào)。


偽首部,又稱(chēng)為偽包頭(Pseudo Header):是指在 TCP 的分段或 UDP 的數(shù)據(jù)報(bào)格式中,在數(shù)據(jù)報(bào)首部前面增加源 IP 地址、目的 IP 地址、IP 分組的協(xié)議字段、TCP 或 UDP 數(shù)據(jù)報(bào)的總長(zhǎng)度等共12字節(jié),所構(gòu)成的擴(kuò)大首部結(jié)構(gòu)。此偽首部是1個(gè)臨時(shí)的結(jié)構(gòu),它既不向上也不向下傳遞,僅僅只是為了保證可以校驗(yàn)套接字的正確性。


10)緊急指針(16位)

僅在 URG = 1 時(shí)才成心義,它指出本報(bào)文段中的緊急數(shù)據(jù)的字節(jié)數(shù)(緊急數(shù)據(jù)結(jié)束后就是普通數(shù)據(jù)),即指出了緊急數(shù)據(jù)的末尾在報(bào)文中的位置,注意:即便窗口為零時(shí)也可發(fā)送緊急數(shù)據(jù)。


如果 URG 為 1 ,則緊急指針標(biāo)志著緊急數(shù)據(jù)的結(jié)束。其值是緊急數(shù)據(jù)最后 1 字節(jié)的序號(hào),表示報(bào)文段序號(hào)的偏移量。例如,如果報(bào)文段的序號(hào)是 1000,前 8 個(gè)字節(jié)都是緊急數(shù)據(jù),那末緊急指針就是 8 。緊急指針1般用處是使用戶(hù)可中斷進(jìn)程。


11)選項(xiàng)、填充字段

可能包括“窗口擴(kuò)大因子”、“時(shí)間戳”等選項(xiàng)。長(zhǎng)度可變,最長(zhǎng)可達(dá) 40 字節(jié),當(dāng)沒(méi)有使用選項(xiàng)時(shí),TCP 首部長(zhǎng)度是 20 字節(jié)。

填充用于保證任選項(xiàng)為 32bit 的整數(shù)倍。


12)數(shù)據(jù)(長(zhǎng)度可變)

TCP 首部結(jié)束以后的部份


UDP 報(bào)文格式



UDP 是 User Datagram Protocol 的簡(jiǎn)稱(chēng), 中文名是用戶(hù)數(shù)據(jù)報(bào)協(xié)議,是1種無(wú)連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù)。


1)源端口(2 字節(jié))發(fā)送方端口號(hào)


2)目的端口(2 字節(jié):接收方端口號(hào)


3)報(bào)文長(zhǎng)度(2 字節(jié):UDP 用戶(hù)數(shù)據(jù)報(bào)的總長(zhǎng)度,以字節(jié)為單位。


4)校驗(yàn)和(2 字節(jié)):檢測(cè) UDP 用戶(hù)數(shù)據(jù)報(bào)在傳輸中是不是有錯(cuò),有錯(cuò)就拋棄。


用于校驗(yàn) UDP 數(shù)據(jù)報(bào)的數(shù)字段和包括 UDP 數(shù)據(jù)報(bào)首部的“偽首部”。


偽首部,又稱(chēng)為偽包頭(Pseudo Header):是指在 TCP 的分段或 UDP 的數(shù)據(jù)報(bào)格式中,在數(shù)據(jù)報(bào)首部前面增加源 IP 地址、目的 IP 地址、IP 分組的協(xié)議字段、TCP 或 UDP 數(shù)據(jù)報(bào)的總長(zhǎng)度等共12字節(jié),所構(gòu)成的擴(kuò)大首部結(jié)構(gòu)。此偽首部是1個(gè)臨時(shí)的結(jié)構(gòu),它既不向上也不向下傳遞,僅僅只是為了保證可以校驗(yàn)套接字的正確性。



5)數(shù)據(jù)UDP 的數(shù)據(jù)部份如果不為偶數(shù)需要用 0 彌補(bǔ),就是說(shuō),如果數(shù)據(jù)長(zhǎng)度為奇數(shù),數(shù)據(jù)長(zhǎng)度加“1”。

生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線(xiàn)----------------------------
分享到:
------分隔線(xiàn)----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 日韩欧美在线不卡 | 国产网站在线免费观看 | 久久精品亚洲精品 | 五月天丁香社区 | 高清一区二区三区四区 | 国产一区二区免费在线 | 国产精品久久久久久影视 | 国产精品18hdxxxⅹ在线 | 国产青草视频 | 精品一区二区三区在线视频 | 久久免费观看少妇a级毛片 亚洲成人一区二区 | 欧美色图在线观看 | 国产区av | 黄a在线看| 插插插插 | 日韩视频网站在线观看 | 国产美女视频网站 | xxxxxwwwww免费 | 色婷婷5月天 | 亚洲成人在线视频播放 | 国产婷婷色一区二区三区在线 | 国产视频999 | 国产视频在线免费观看 | 免费a在线观看 | 精品久久久久久久人人人人传媒 | 国产hsck在线亚洲 | 亚洲一区二区三区在线看 | 91视频一区二区三区 | 欧美 亚洲 视频 | 亚洲综合国产 | 特黄一级大片 | 国产嫩草影院久久久久 | 精品视频免费观看 | 成人免费视频网站在线观看 | 亚洲精品久 | 亚洲精品影视 | 一本色道精品久久一区二区三区 | 国产农村乱色xxxx | 欧美午夜一区二区 | 欧美不卡视频 | 97久久久久久久久久久久 |