TCP/IP、數據鏈路層的數據關係和格式詳解

數據鏈路層的幀=幀首部+幀的數據部分+幀的尾部 幀的數據部分=IP首部+IP數據部分 IP數據部分=TCP首部+TCP數據部分 數據通訊首先是從上往下,而後再從下往上的傳輸數據,因此每一個協議的數據報個傳輸也是這種流程算法

圖中括號中的數字表明的是當前域所佔的空間大小,單位是bit位。網絡

橙色的是數據鏈路層的頭部,一共14字節=14*8=124位大數據

藍色色的部分是IP頭部,通常是20字節指針

紫色部分是TCP頭部,通常是20字節進程

最內部的是數據包內容ip

橙色部分:鏈路層it

數據鏈路層的幀格式詳解:擴展

目的MAC:當前目的主機的mac地址軟件

源MAC:當前的源主機的mac地址請求

類型:指定網絡層所用的協議類型,一般是IP協議,0x0800

IP數據報格式詳解:

版本:記錄數據報屬於哪個版本的協議,如IPv4或IPv6

首部長度:指明IP頭部長度,單位是字,也就是兩個字節。該域的值最小爲5,就是標準的頭部長度;最大爲15,代表有擴展部分。

服務類型:用來區分不一樣服務的須要

數據報總長:數據包總長度是指ip首部和數據部分之和的長度,單位字節。總長度16位,所以數據包的最大長度爲字節。 在IP層下面的每一種數據鏈路層都有本身的幀格式,其中包括幀格式中的數據字段的最大長度,這裏成爲最大傳送單元MTU(Maximum Transfer Unit)。當一個IP數據報封裝成數據層的幀時,此數據報的總長度(首部加上數據部分)必定不能超過下面的數據鏈路層的MTU值。

分組ID:佔16位。IP軟件在存儲器中維持一個計數器,每產生一個數據報,計數器就加1,並將此值賦給標識分組ID)字段(。可是這個分組ID並非序號,由於IP是無鏈接服務,數據報不存在按序接受的問題。當數據報因爲長度超過網絡的MTU而必須分片是,這個標識字段的值就被複制到全部的數據報片的標識字段中。相同的標識字段的值使分片後的數據報片最後能正確地重裝成爲原來的數據報

標記:佔3位,但目前只有兩位有意義。 標誌字段中的最低位記爲MF(More Fragment)。 MF=1即表示後面還有分片的數據報。 MF=0即表數據報已經是最後一個數據報後面沒有分片。

標誌字段中間的一位記爲DF(Don’t Fragment),意思是「不能分片」。只有DF=時才容許分片。

段偏移量:這個域有13bit,也就是每個數據報最多有8192個分段。每個分段的長度必須是8字節的倍數,也就是說8字節是分段的基本單位,固然分組的最後一個段不作限制。這樣最大的數據報長度爲8*8192=65536字節,比目前限制的最大數據報長度還多1,可以知足對網絡中全部數據報傳送的需求。

生存時間:佔8位,英文縮寫TTL,這是一個生存期計數器,最大爲255s,可是實際上使用的時候用做跳數計數器,當值爲0時數據報被丟棄,用來避免一個數據報太久的逗留在網絡中。

高層協議:佔8位,協議字段指出數據報攜帶的數據是使用何種協議,以便使目的主機的IP層知道應將數據部分上交給那個處理。這裏和鏈路層的類型做用相同,用來表示更高層的協議,這個數據報裏是TCP

首部校驗和:IP頭部的校驗和

源IP地址:數據報來源主機的IP地址

目的IP地址:數據報目的主機的IP地址

傳輸層,這裏用的是TCP協議,TCP報文段的首部格式

源端口號:數據報來源主機的端口號

目的端口號:數據報目的主機的端口號

注意:源IP地址,目的IP地址,源端口號,目的端口號這四個字段惟一的肯定了一個TCP連接。

TCP序號(sq):發送的TCP的序號,從0開始,實際中這個值就是發送的數據報中內容的字節數,好比我發送的第一個報中sq=0,數據報內容20字節,那麼下一個數據報的sq就應該是21。

捎帶的確認(ack):確認收到上一個數據報,而後act的值是指定本身想要收到的下一個數據報的sq,好比我收到一個數據報的sq=0,數據報內容20字節,那麼個人ack就應該是21,用來標明我sq=0,內容爲20字節的數據報已經收到,我接下來指望收到的是sq=21的數據報。

首部長度:和IP頭部的長度域相似,這個域用來標明TCP頭部的長度,單位也是字。

保留:6bit未使用的域

Flag:從左到右,[URG|ACK|PSH|RST|SYN|FIN]

ACK設置爲1表示前面的確認(ack)是有效的,不然前面的確認應被忽略。

PSH表示要求對方在接到數據後當即請求遞交給應用程序,而不是緩衝起來直到緩衝區收滿爲止。

RST用於重置一個已經混亂的鏈接。

SYN用於創建鏈接的過程。在連接請求中,SYN=1和ACK=0表示該數據段沒有使用捎帶的確認域。連接應答則捎帶了一個確認,即SYN=1和ACK=1.本質上SYN位是用來表示CONNECTION REQUEST和CONNECTION ACCEPTED,而後進一步用ACK來區分是請求仍是應答,的確很高明。

FIN用來釋放一個鏈接。它表示發送方已經沒有數據要傳輸了。而後,在關閉一個鏈接後,關閉進程可能會在一段不肯定的時間內繼續接收到數據。SYN和FIN數據段都有TCP序號,從而保證了這兩種數據段被按照正確的順序來進行處理。

窗口大小:指定了從被確認的字節算起能夠發送多少個字節。要深刻理解這個域的含義,能夠參看TCP快重傳和慢啓動算法

校驗和:校驗範圍包括TCP頭、數據報內容和概念性僞頭部。概念性僞頭部又包括源IP,目的IP,TCP協議號。

緊急指針:指向數據報中緊急數據最後一個字節的下一個字節。

相關文章
相關標籤/搜索