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