TCP和UDP數(shù)據(jù)包結(jié)構(gòu)TCP (Transport Control Protocol)傳輸控制協(xié)議: 1、TCP數(shù)據(jù)包的分組格式: A,源端口:標(biāo)識(shí)源端應(yīng)用進(jìn)程。 B, 目的端口:標(biāo)識(shí)目的端應(yīng)用進(jìn)程。 C, 序號(hào):在SYN標(biāo)志未置位時(shí),該字段指示了用戶數(shù)據(jù)區(qū)中第一個(gè)字節(jié)的序號(hào);在SYN標(biāo)志置位時(shí),該字段指示的是初始發(fā)送的序列號(hào)。 D,確認(rèn)號(hào):用來(lái)確認(rèn)本端TCP實(shí)體已經(jīng)接收到的數(shù)據(jù),其值表示期待對(duì)端發(fā)送的下一個(gè)字節(jié)的序號(hào),實(shí)際上告訴對(duì)方,在這個(gè)序號(hào)減1以前的字節(jié)已正確接收。 E, 數(shù)據(jù)偏移:表示以32位字為單位的TCP分組頭的總長(zhǎng)度,用于確定用戶數(shù)據(jù)區(qū)的起始位置。 F, URG:緊急指針字段有效。 G,ACK:確認(rèn)好有效。 H,PSH:Push操作。TCP分組長(zhǎng)度不定,為提高傳輸速率,往往要收集到足夠的數(shù)據(jù)后才發(fā)送。這種方式不適合實(shí)時(shí)性要求很高的應(yīng)用,因此,TCP提供“Push”操作,以強(qiáng)迫傳輸當(dāng)前的數(shù)據(jù),不必等待緩沖區(qū)滿才傳輸。 I, RST:連接復(fù)位,重新連接。 J, SYN:同步序號(hào),該比特置位表示連接建立分組。 K,FIN:字符串發(fā)送完畢,沒(méi)有其它數(shù)據(jù)需要發(fā)送,該比特置位表示連接確認(rèn)分組。 L, 窗口:?jiǎn)挝皇亲止?jié),指明該分組的發(fā)送端愿意接收的從確認(rèn)字段中的值開(kāi)始的字節(jié)數(shù)量。 M, 校驗(yàn)和:對(duì)TCP分組的頭部和數(shù)據(jù)進(jìn)行校驗(yàn)。 N,緊急指針:指出窗口中緊急數(shù)據(jù)的位置(從分組序號(hào)開(kāi)始的正向位移,指向緊急數(shù)據(jù)的最后一個(gè)字節(jié)),這些緊急數(shù)據(jù)應(yīng)優(yōu)先于其它的數(shù)據(jù)進(jìn)行傳輸。 O,任選項(xiàng):用于處理一些特殊情況。目前被正式使用的選項(xiàng)字段可用于定義通信過(guò)程中的最大分組長(zhǎng)度,只能在連接建立時(shí)使用。 P, 填充:用于保證任選項(xiàng)為32bit的整數(shù)倍。
2、TCP三次握手、四次斷開(kāi)的機(jī)制: 三次握手: 第一次握手:客戶端發(fā)送一個(gè)SYN(包含有同步序列號(hào)的標(biāo)志位的數(shù)據(jù)段和通信請(qǐng)求)給服務(wù)器,然后等待服務(wù)器的回發(fā)確認(rèn)信息 第二次握手:服務(wù)器發(fā)送一個(gè)SYN-ACK給客戶端,確認(rèn)已經(jīng)收到客戶端發(fā)來(lái)的信息 第三次握手:客戶端接收到服務(wù)器發(fā)來(lái)的確認(rèn)信息后,再回饋一個(gè)ACK給服務(wù)器,此時(shí)就可與服務(wù)器建立可靠的連接
ACK:TCP數(shù)據(jù)包首部中的確認(rèn)標(biāo)志,對(duì)已接收到的TCP報(bào)文進(jìn)行確認(rèn)。 SYN:SYN是TCP/IP建立連接時(shí)使用的握手信號(hào)。
四次斷開(kāi): 因?yàn)?/SPAN>TCP/IP的連接是全雙工的,所以每個(gè)方向都要單獨(dú)進(jìn)行關(guān)閉。 每當(dāng)TCP單方向上的數(shù)據(jù)傳輸過(guò)后,都會(huì)再送一個(gè)FIN過(guò)去,告訴對(duì)方我這方向上的數(shù)據(jù)將要關(guān)閉了,請(qǐng)你做好準(zhǔn)備哦。當(dāng)對(duì)方接到FIN后就會(huì)通知應(yīng)用層TCP連接已經(jīng)終止了這一方向上的數(shù)據(jù)的傳輸。發(fā)送FIN通常是應(yīng)用層進(jìn)行關(guān)閉的結(jié)果。
第一次:客戶端向服務(wù)器發(fā)送數(shù)據(jù)后,將FIN置1,告訴它我將要關(guān)閉這一方向上的數(shù)據(jù)連接。 第二次:服務(wù)器接受到FIN后,關(guān)閉該方向上的數(shù)據(jù)的連接。將ACK置1,告訴客戶端我已經(jīng)接收到你的信息并以處理。 第三次:向客戶端申請(qǐng)反方向上的數(shù)據(jù)連接的斷開(kāi)。將FIN置1。 第四次:客戶端接到服務(wù)器發(fā)來(lái)的申請(qǐng),將ACK置1,雙方同時(shí)關(guān)閉連接。
UDP(User Datagram Protocol)用戶數(shù)據(jù)報(bào)協(xié)議:
UDP首部字段由4個(gè)部分組成,其中兩個(gè)是可選的。各16bit的來(lái)源端口和目的端口用來(lái)標(biāo)記發(fā)送和接受的應(yīng)用進(jìn)程。因?yàn)閁DP不需要應(yīng)答,所以來(lái)源端口是可選的,如果來(lái)源端口不用,那么置為零。在目的端口后面是長(zhǎng)度固定的以字節(jié)為單位的長(zhǎng)度域,用來(lái)指定UDP數(shù)據(jù)報(bào)包括數(shù)據(jù)部分的長(zhǎng)度,長(zhǎng)度最小值為8byte。首部剩下地16bit是用來(lái)對(duì)首部和數(shù)據(jù)部分一起做校驗(yàn)和(Checksum)的,這部分是可選的,但在實(shí)際應(yīng)用中一般都使用這一功能。
無(wú)需三次握手四次斷開(kāi),傳輸速度相對(duì)于TCP極快,不確定性,甚至可以不需要應(yīng)答,沒(méi)有TCP數(shù)據(jù)包的安全性,有丟包現(xiàn)象。 UDP數(shù)據(jù)包格式 |
|
來(lái)自: 昵稱(chēng)7503466 > 《網(wǎng)絡(luò)》