網絡協議詳解

TCP協議、IP協議

7dd795a18ba08b59db9bedf8be661b06

TCP包頭:

1.源端口、目標端口:計算機上的進程要和其他進程通信是要通過計算機端口的,而一個計算機端口某個時刻只能被一個進程占用,所以通過指定源端口和目標端口,就可以知道是哪兩個程序需要通信。源端口、目標端口是用16位表示的,可推算計算機的端口個數為2^16個

2.序列號:表示本報文段所發送數據的第一個字節的編號。在TCP連接中所傳送的字節流的每一個字節都會按順序編號。由于序列號由32位表示,所以每2^32個字節,就會出現序列號回繞,再次從 0 開始

3.確認號:表示接收方期望收到發送方下一個報文段的第一個字節數據的編號。也就是告訴發送發:我希望你(指發送方)下次發送的數據的第一個字節數據的編號是這個確認號

4.數據偏移:表示TCP報文段的首部長度,共4位,由于TCP首部包含一個長度可變的選項部分,需要指定這個TCP報文段到底有多長。它指出 TCP 報文段的數據起始處距離 TCP 報文段的起始處有多遠。該字段的單位是32位(即4個字節為計算單位),4位二進制最大表示15,所以數據偏移也就是TCP首部最大60字節

URG表示本報文段中發送的數據是否包含緊急數據。后面的緊急指針字段(urgent

pointer)只有當URG=1時才有效

ACK表示是否前面的確認號字段是否有效。ACK=1,表示有效。只有當ACK=1時,前面

的確認號字段才有效。TCP規定,連接建立后,ACK必須為1,帶ACK標志的TCP報文段稱為確認報文段

PSH提示接收端應用程序應該立即從TCP接收緩沖區中讀走數據,為接收后續數據騰出空

間。如果為1,則表示對方應當立即把數據提交給上層應用,而不是緩存起來,如果應用程序不將接收到的數據讀走,就會一直停留在TCP接收緩沖區中

RST如果收到一個RST=1的報文,說明與主機的連接出現了嚴重錯誤(如主機崩潰),必

須釋放連接,然后再重新建立連接?;蛘哒f明上次發送給主機的數據有問題,主機拒絕響應,

帶RST標志的TCP報文段稱為復位報文段

SYN在建立連接時使用,用來同步序號。當SYN=1,ACK=0時,表示這是一個請求建立連接的報文段;當SYN=1,ACK=1時,表示對方同意建立連接。SYN=1,說明這是一個請求建立連接或同意建立連接的報文。只有在前兩次握手中SYN才置為1,帶SYN標志的TCP報文段稱為同步報文段

FIN表示通知對方本端要關閉連接了,標記數據是否發送完畢。如果FIN=1,即告訴對方:

“我的數據已經發送完畢,你可以釋放連接了”,帶FIN標志的TCP報文段稱為結束報文段

6.窗口大?。罕硎粳F在允許對方發送的數據量,也就是告訴對方,從本報文段

的確認號開始允許對方發送的數據量

7.校驗和:提供額外的可靠性

8.緊急指針:標記緊急數據在數據字段中的位置

9.選項部分:其最大長度可根據TCP首部長度進行推算。TCP首部長度用4位表

示,選項部分最長為:(2^4-1)*4-20=40字節

常見選項:

最大報文段長度:Maxium Segment Size,MSS 期望對方發送TCP報文段時那個數據字段的長度。默認是536字節。

窗口擴大:Windows Scaling

為了擴大窗口,由于TCP首部的窗口大小字段長度是16位,所以其表示的最大數是

65535。但是隨著時延和帶寬比較大的通信產生(如衛星通信),需要更大的窗口

來滿足性能和吞吐率,所以產生了這個窗口擴大選項

時間戳: Timestamps

可以用來計算RTT(往返時間),發送方發送TCP報文時,把當前的時間值放入時間

戳字段,接收方收到后發送確認報文時,把這個時間戳字段的值復制到確認報文中,

當發送方收到確認報文后即可計算出RTT。

 

IP 報頭

1.版本:占4位,指 IP 協議的版本目前的IP協議版本號為4

2.首部長度:占4位,可表示的最大數值是15個單位,一個單位為4字節,因此IP 的首部

長度的最大值是60字節

3.區分服務:占8位,用來獲得更好的服務,在舊標準中叫做服務類型,但實際上一直未被使

用過.后改名為區分服務.只有在使用區分服務(DiffServ)時,這個字段才起作用.一般的

情況下都不使用

4.總長度:占16位,指首部和數據之和的長度,單位為字節,因此數據報的最大長度為

65535 字節.總長度必須不超過最大傳送單元 MTU

5.標識:占16位,它是一個計數器,通常,每發送一個報文,該值會加1, 也用于數據包

分片,在同一個包的若干分片中,該值是相同的

6.標志(flag):占3位,目前只有后兩位有意義

7.DF: Don‘t Fragment,中間的一位,只有當 DF=0 時才允許分片

8.MF: More Fragment,最高位,MF=1表示后面還有分片。MF=0 表示最后一個分片

9.片偏移:占12位,指較長的分組在分片后,該分片在原分組中的相對位置.片偏移以8個字節為偏移單位

10.生存時間:占8位,記為TTL (Time To Live) 數據報在網絡中可通過的路由器數的

最大值,TTL 字段是由發送端初始設置一個 8 bit字段.推薦的初始值由分配數字

RFC 指定,當前值為 64.發送 ICMP 回顯應答時經常把 TTL 設為最大值 255

11.協議:占8位,指出此數據報攜帶的數據使用何種協議以便目的主機的IP層將數據

部分上交給哪個處理過程, 1表示為 ICMP 協議, 2表示為 IGMP 協議, 6表示為

TCP 協議, 17表示為 UDP 協議

12.首部檢驗和:占16位,只檢驗數據報的首部不檢驗數據部分.這里不采用 CRC 檢驗

碼而采用簡單的計算方法

13.源地址和目的地址:都各占4字節,分別記錄源地址和目的地址

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/97269

(1)
天策天策
上一篇 2018-04-30
下一篇 2018-04-30

相關推薦

欧美性久久久久