TCP數(shù)據(jù)段的首部格式:
源端口號(hào)(16)
|
目的端口號(hào)(16)
|
序列號(hào)(32)
|
確認(rèn)應(yīng)答號(hào)(32)
|
數(shù)據(jù)偏移(4)
|
保留(6)
|
代碼位(6)
|
窗口(16)
|
校驗(yàn)和(16)
|
緊急指針
|
選項(xiàng)(長度可變)
|
填充
|
數(shù)據(jù)部份(長度可變)
|
|
|
|
|
|
TCP報(bào)文段首部的前20個(gè)字節(jié)是固定的,后面有4N字節(jié)是根據(jù)需要而增加的選項(xiàng),因此首部的最小長度是20字節(jié)。 首部固定部分的個(gè)字段的意義如下: 1.源端口和目的端口字段—— 各占2字節(jié)。端口是運(yùn)輸層與應(yīng)用層的服務(wù)接口。 運(yùn)輸層的復(fù)用和分用功能都要通過端口才能實(shí)現(xiàn)。 2.序號(hào)字段—— 占4字節(jié)。TCP是面向字節(jié)流的,一個(gè)TCP連接中傳送的字節(jié)流中的每一個(gè)字節(jié)都按順序編號(hào)。 整個(gè)要傳送的字節(jié)流的起始序號(hào)必須在連接建立時(shí)設(shè)置。 首部中的序號(hào)值是指本報(bào)文段所發(fā)送的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。
3.確認(rèn)號(hào): 4個(gè)字節(jié),期待收到對(duì)方下一個(gè)報(bào)文段的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào)。 若確認(rèn)號(hào)=N,表明到序號(hào)N-1為止的所有數(shù)據(jù)都已經(jīng)正確收到!
4.數(shù)據(jù)偏移(即首部長度)—— 占4位,它指出 TCP 報(bào)文段的數(shù)據(jù)起始處距離 TCP 報(bào)文段的起始處有多遠(yuǎn)?!皵?shù)據(jù)偏移”的單位是 32 位字(以 4 字節(jié)為計(jì)算單位)。 因首部中還有長度不確定的選項(xiàng)字段,故數(shù)據(jù)偏移字段是必要的 而數(shù)據(jù)偏移的單位是4字節(jié),則此字段是用來表TCP首部的長度的,最大長度是4*15,60字節(jié),即選項(xiàng)長度不超過40字節(jié).
5.保留字段—— 占 6 位,保留為今后使用,但目前應(yīng)置為 0。
6.緊急URG —— 當(dāng) URG ==1 時(shí),表明緊急指針字段有效。 它告訴系統(tǒng)此報(bào)文段中有緊急數(shù)據(jù),應(yīng)盡快傳送(相當(dāng)于高優(yōu)先級(jí)的數(shù)據(jù))。 而不是按原來的排隊(duì)順序傳送。 當(dāng)URG=1,發(fā)送進(jìn)程就告訴TCP有緊急數(shù)據(jù)需傳送,TCP就會(huì)將緊急數(shù)據(jù)插入到本報(bào)文段的最前面,這需要和首部中的緊急指針字段配合使用.
7.確認(rèn)ACK(ACKnowlegment): 當(dāng)ACK=1,確認(rèn)號(hào)字段才有效,當(dāng)ACK=0,確認(rèn)號(hào)字段無效。 TCP規(guī)定,在連接建立后所有傳送的報(bào)文段都必須把ACK置1.
8.推送PSH(PuSH): 當(dāng)兩個(gè)進(jìn)程通信時(shí),有時(shí)一端的進(jìn)程希望鍵入一個(gè)命令后,能立即收到對(duì)方的響應(yīng),這時(shí)TCP就可以將PSH=1, 并立即創(chuàng)建一個(gè)報(bào)文段發(fā)送出去,接收方TCP收到PSH=1,就會(huì)盡快交付給接收端進(jìn)程,而不會(huì)再等整個(gè)緩存填滿后再交付。
9.復(fù)位 RST (ReSeT) —— 當(dāng) RST=1 時(shí),表明 TCP 連接中出現(xiàn)嚴(yán)重差錯(cuò)(如由于主機(jī)崩潰或其他原因),必須釋放連接,然后再重新建立運(yùn)輸連接 RST置1可以用來拒絕一個(gè)非法的報(bào)文段或者拒絕打開一個(gè)連接。
10.同步SYN: 在建立連接時(shí)用來同步序號(hào),當(dāng)SYN=1&&ACK=0,表示這是一個(gè)請(qǐng)求連接的報(bào)文段, 若對(duì)方同意建立連接,則在響應(yīng)報(bào)文段中使得SYN=1&&ACK=1。 故SYN=1:表示這是一個(gè)連接請(qǐng)求和連接接收?qǐng)?bào)文。
11.終止FIN: 用來釋放一個(gè)連接,當(dāng)FIN=1,表示此報(bào)文段發(fā)送方的數(shù)據(jù)發(fā)送完畢,并要求釋放連接。
12.窗口:
我告訴你我的窗口值的目的是要你知道我一次性能接收多大的數(shù)據(jù)量。 2個(gè)字節(jié),從0開始,窗口指的是發(fā)送本報(bào)文段的這一方的接收窗口(而不是自己的發(fā)送窗口), 窗口值告訴對(duì)方:從本報(bào)文段首部的確認(rèn)號(hào)開始算起, 接收方目前允許(窗口值是經(jīng)常動(dòng)態(tài)變化的)對(duì)發(fā)送方發(fā)送的數(shù)據(jù)量。 窗口字段明確指出了現(xiàn)在允許對(duì)方發(fā)送的數(shù)據(jù)量。
13.檢驗(yàn)和 —— 占 2 字節(jié)。檢驗(yàn)和字段檢驗(yàn)的范圍包括首部和數(shù)據(jù)這兩部分。在計(jì)算檢驗(yàn)和時(shí),要在 TCP 報(bào)文段的前面加上 12 字節(jié)的偽首部。
14.緊急指針: 2個(gè)字節(jié),當(dāng)URG=1,緊急指針才有意義,指出本報(bào)文段中的緊急數(shù)據(jù)的字節(jié)數(shù)。 注意:當(dāng)窗口值為0,也可以發(fā)送緊急數(shù)據(jù)。
15.選項(xiàng): 最長為40字節(jié),當(dāng)沒有選項(xiàng)時(shí),TCP首部長度為20字節(jié)。
TCP對(duì)應(yīng)的協(xié)議: (1) FTP:定義了文件傳輸協(xié)議,使用21端口。 (2) Telnet:一種用于遠(yuǎn)程登陸的端口,使用23端口,用戶可以以自己的身份遠(yuǎn)程連接到計(jì)算機(jī)上,可提供基于DOS模式下的通信服務(wù)。 (3) SMTP:郵件傳送協(xié)議,用于發(fā)送郵件。服務(wù)器開放的是25號(hào)端口。 (4) POP3:它是和SMTP對(duì)應(yīng),POP3用于接收郵件。POP3協(xié)議所用的是110端口。 (5)HTTP:是從Web服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。
--------------------------------------------------------------------------------------------------------------------------------------
UDP數(shù)據(jù)段格式:
源端口號(hào)(16)
|
目的端口號(hào)(16)
|
長度(16)
|
校驗(yàn)和(16)
|
數(shù)據(jù)(若有的話)
|
用戶數(shù)據(jù)報(bào)UDP有兩個(gè)字段:<數(shù)據(jù)>字段和<首部>字段。 首部字段很簡單,只有8個(gè)字節(jié),由4個(gè)字段組成,每個(gè)字段的長度都是兩個(gè)字節(jié)。 各字段的意義如下: 1.源端口 源端口號(hào),在需要對(duì)方回信的時(shí)候選用,不需要的時(shí)候可用全0 2.目的端口 目的端口號(hào),這在終點(diǎn)交付報(bào)文時(shí)必須要使用到。 3.長度 UDP用戶數(shù)據(jù)報(bào)的長度(首部字段和數(shù)據(jù)字段),其最小值是8,也即是只有首部。 4.檢驗(yàn)和 檢測(cè)UDP用戶數(shù)據(jù)報(bào)在傳輸?shù)倪^程中是不是有錯(cuò),有錯(cuò)就丟棄。
UDP對(duì)應(yīng)的協(xié)議:
(1) DNS:用于域名解析服務(wù),將域名地址轉(zhuǎn)換為IP地址。DNS用的是53號(hào)端口。 (2) SNMP:簡單網(wǎng)絡(luò)管理協(xié)議,使用161號(hào)端口,是用來管理網(wǎng)絡(luò)設(shè)備的。由于網(wǎng)絡(luò)設(shè)備很多,無連接的服務(wù)就體現(xiàn)出其優(yōu)勢(shì)。 (3) TFTP(Trival File Tran敏感詞er Protocal),簡單文件傳輸協(xié)議,該協(xié)議在熟知端口69上使用UDP服務(wù)。
|