當咱們應用程序用TCP傳輸數據的時候,數據被送入協議棧中,而後逐個經過每一層,知道最後到物理層數據轉換成比特流,送入網絡。而再這個過程當中,每一層都會對要發送的數據加一些首部信息。整個過程以下圖。
如圖能夠看出,每一層數據是由上一層數據+本層首部信息組成的,其中每一層的數據
,稱爲本層的協議數據單元 ,即PDU.
應用
層數據在傳輸層添加TCP報頭後獲得的PDU被稱爲 Segment(數據段 ),圖示爲TCP段
傳輸層的數據(TCP段)傳
給網絡層,網絡層添加IP報頭獲得的PDU被稱爲Packet(數據包); 圖示爲IP數據包
網絡層
數據報(IP數據包)被傳遞到數據鏈路層,封裝數據鏈路層報頭獲得的PDU被稱爲Frame(數據幀),圖示爲以太網幀。
最後,幀被轉換爲比特,經過網絡介質傳輸。
這種協議棧逐層向下傳遞數據,並添加報頭和報尾的過程稱爲封裝。
2、數據格式
須要注意的是,這裏所說的以太網幀,與咱們常說的以太網是不同的。下面咱們就來介紹每一層數據的 首部信息 內容。
首先咱們知道世界上有個協會叫做IEEE,即電子工程師協會,裏面有個分會,叫做IEEE802委員會,是專門來制定局域網各類標準的。而802下面還有個分部,叫做802.3.就是咱們常常提到的 IEEE802.3,這個部門制定的規範叫以太網規範,這個以太網規範中就定義了上面提到的「以太網首部」,這個以太網規範,實際只定義了數據鏈路層中的MAC層和物理層規範。(注意數據鏈路層包括MAC子層和LLC子層兩個子層,而LLC子層是在IEEE802.2中規範的)。
一、以太網幀格式
以太網經常使用幀格式有兩種,
一種是Ethernet II,另外一種是IEEE 802.3 格式。這兩種格式區別是:Ethernet II中包含一個Type字 段,。而IEEE 802.3格式中,此位置是長度字段。
其中Type字段描述了,以太網首部 後面所跟數據包的類型,例如Type爲0x8000時爲IP協議包,Type爲8060時,後面爲ARP協議包。以太網中多數數據幀使用的是
Ethernet II幀格式。
a、
Ethernet II幀格式
b、
IEEE 802.3
幀格式
前導碼:
Ethernet II是由
8個8‘b10101010構成,
IEEE802.3由7個
8‘b10101010+1個字節SFD..
目的地址:目的設備的MAC物理地址。
源 地址 :發送設備的MAC物理地址。
類型(
Ethernet II)
:
以太網首部 後面所跟數據包的類型,例如Type爲0x8000時爲IP協議包,Type爲8060時,後面爲ARP協議包。
長度(
IEEE802.3
):當長度小於1500時,說明該幀爲
IEEE802.3幀格式,大於1500時,說明該幀爲
Ethernet II幀格式。
數據:數據長度最小爲46字節,不足46字節時,填充至46字節。由於最小幀長度是64字節,因此,46+6+6+2+4=64。(不算前導碼)
FCS: 就是CRC校驗值
以太網首部就是:
二、IP數據包格式
IP數據包格式以下圖。IP首部,如圖也表示出來了。
三、TCP數據段格式
如圖所示爲TCP首部和TCP數據段格式
下面咱們再介紹幾個常見的數據格式
四、UDP數據段格式--傳輸層的
其中UDP首部如上圖所示。
(1)硬件類型字段指明瞭發送方想知道的硬件接口類型,以太網的值爲1;html
(2)協議類型字段指明瞭發送方提供的高層協議類型,IP爲0800(16進制);網絡
(3)硬件地址長度和協議長度指明瞭硬件地址和高層協議地址的長度,這樣ARP報文就能夠在任意硬件和任意協議的網絡中使用;學習
(4)操做字段用來表示這個報文的類型,ARP請求爲1,ARP響應爲2,RARP請求爲3,RARP響應爲4;spa
(5)發送方的硬件地址(0-3字節):源主機硬件地址的前3個字節;orm
(6)發送方的硬件地址(4-5字節):源主機硬件地址的後3個字節;htm
(7)發送方IP(0-1字節):源主機硬件地址的前2個字節;blog
(8)發送方IP(2-3字節):源主機硬件地址的後2個字節;接口
(9)目的硬件地址(0-1字節):目的主機硬件地址的前2個字節;get
(10)目的硬件地址(2-5字節):目的主機硬件地址的後4個字節;it
(11)目的IP(0-3字節):目的主機的IP地址。