以太網數據包架構
01概述
以太網這個術語一般是指數字設備公司(Digital Equipment Corp.)、英特爾公司(IntelCorp.)和Xerox公司在1982年聯合公布的一個標準。它是當今TCP/IP采用的主要的局域網技術。幾年后,IEEE(電子電氣工程師協會)802委員會公布了一個稍有不同的標準集,其中802.3針對整個CSMA/CD網絡,802.4針對令牌總線網絡,802.5針對令牌環網絡。
互聯網早期的時候,主機間的互連使用的是NCP協議。這種協議本身有很多缺陷,如:不能互連不同的主機,不能互連不同的操作系統,沒有糾錯功能。為了改善這種缺點,大牛弄出了TCP/IP協議。現在幾乎所有的操作系統都實現了TCP/IP協議棧。TCP/IP不是一個單一協議,而是一個協議族的統稱。里面包括了IP協議,IMCP協議,TCP協議,以及我們更加熟悉的HTTP、FHP協議等等。
首先我們看一下以太網數據結構
注意數據長度為46~1500
從物理層上看,一個完整的以太網幀有7個字段,事實上前兩個字段(前同步碼和SFD碼)并不能算是真正的以太網數據幀,它們是網卡在物理層上發送以太網數據時添加上的,是為了實現底層的正確傳輸。上圖中的目的地址,源地址,長度/類型屬于以太網首部的部分。
特別說明:上面的目的地址和源地址是MAC,不是IP!!!!
關于OSI七層模型:應用層、表示層、會話層、傳輸層、網絡層、數據鏈路層、和物理層,如下圖
02TCP/IP四層模型
ISO制定的OSI參考模型的過于龐大、復雜招致了許多批評。與此對照,由技術人員自己開發的TCP/IP協議棧獲得了更為廣泛的應用。下圖,是TCP/IP參考模型和OSI參考模型的對比示意圖
TCP/IP參考模型分為四個層次:應用層、傳輸層、網絡互連層和主機到網絡層
在TCP/IP參考模型中,去掉了OSI參考模型中的會話層和表示層(這兩層的功能被合并到應用層實現)。同時將OSI參考模型中的數據鏈路層和物理層合并為主機到網絡層。下面,分別介紹各層的主要功能。
1、主機到網絡層
實際上TCP/IP參考模型沒有真正描述這一層的實現,只是要求能夠提供給其上層-網絡互連層一個訪問接口,以便在其上傳遞IP分組。由于這一層次未被定義,所以其具體的實現方法將隨著網絡類型的不同而不同。
2、網絡互聯層
網絡互聯層是整個TCP/IP協議棧的核心。它的功能是把分組發往目標網絡或主機。同時,為了盡快地發送分組,可能需要沿不同的路徑同時進行分組傳遞。因此,分組到達的順序和發送的順序可能不同,這就需要上層必須對分組進行排序。
網絡互聯層定義了分組格式和協議,即IP協議(InternetProtocol)。
網絡互聯層除了需要完成路由的功能外,也可以完成將不同類型的網絡(異構網)互連的任務。除此之外,網絡互聯層還需要完成擁塞控制的功能。
3、傳輸層
在TCP/IP模型中,傳輸層的功能是使源端主機和目標端主機上的對等實體可以進行會話。在傳輸層定義了兩種服務質量不同的協議。即:傳輸控制協議TCP(transmissioncontrol protocol)和用戶數據報協議UDP(userdatagram protocol)。
TCP協議是一個面向連接的、可靠的協議。它將一臺主機發出的字節流無差錯地發往互聯網上的其他主機。在發送端,它負責把上層傳送下來的字節流分成報文段并傳遞給下層。在接收端,它負責把收到的報文進行重組后遞交給上層。TCP協議還要處理端到端的流量控制,以避免緩慢接收的接收方沒有足夠的緩沖區接收發送方發送的大量數據。
UDP協議是一個不可靠的、無連接協議,主要適用于不需要對報文進行排序和流量控制的場合。
4、應用層
TCP/IP模型將OSI參考模型中的會話層和表示層的功能合并到應用層實現。
應用層面向不同的網絡應用引入了不同的應用層協議。其中,有基于TCP協議的,如文件傳輸協議(FileTransfer Protocol,FTP)、虛擬終端協議(TELNET)、超文本鏈接協議(HyperText Transfer Protocol,HTTP),也有基于UDP協議的。
各行信息分別為:
Frame: 物理層的數據幀概況
Ethernet II: 數據鏈路層以太網幀頭部信息
Internet Protocol Version 4: 互聯網層IP包頭部信息
Transmission ControlProtocol: 傳輸層T的數據段頭部信息,此處是TCP
Hypertext Transfer Protocol: 應用層的信息,
幾個常用的協議的功能我們通過一個形象的說法來展現
IP:I want to send data to 192.168.0.127
UDP:I want to send a datagram on the port N
TCP:I want to send data in a reliable way onthe port N (reliable:可靠的)
ARP:who knows 192.168.0.127's MAC address?
RARP:who knows 21.21.12.21.21.12's IP address?
ICMP:I send or receive queries or error message
DHCP:I want to get an IP address
DNS:what is the IP address of www.baidu.com?
本文轉載自微信公眾號「知曉編程」,可以通過以下二維碼關注。轉載本文請聯系知曉編程公眾號。