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