以太網這個術語通常是指數字設備公司(Digital Equipment Corp.)、英特爾公司(IntelCorp.)和Xerox公司在1982年聯合公佈的一個標準。它是當今TCP/IP採用的主要的局域網技術。幾年後,IEEE(電子電氣工程師協會)802委員會公佈了一個稍有不一樣的標準集,其中802.3針對整個CSMA/CD網絡,802.4針對令牌總線網絡,802.5針對令牌環網絡。git
互聯網早期的時候,主機間的互連使用的是NCP協議。這種協議自己有不少缺陷,如:不能互連不一樣的主機,不能互連不一樣的操做系統,沒有糾錯功能。爲了改善這種缺點,大牛弄出了TCP/IP協議。如今幾乎全部的操做系統都實現了TCP/IP協議棧。TCP/IP不是一個單一協議,而是一個協議族的統稱。裏面包括了IP協議,IMCP協議,TCP協議,以及咱們更加熟悉的HTTP、FHP協議等等。網絡
首先咱們看一下以太網數據結構數據結構
注意數據長度爲46~1500app
從物理層上看,一個完整的以太網幀有7個字段,事實上前兩個字段(前同步碼和SFD碼)並不能算是真正的以太網數據幀,它們是網卡在物理層上發送以太網數據時添加上的,是爲了實現底層的正確傳輸。上圖中的目的地址,源地址,長度/類型屬於以太網首部的部分。ui
特別說明:上面的目的地址和源地址是MAC,不是IP!!!!操作系統
關於OSI七層模型:應用層、表示層、會話層、傳輸層、網絡層、數據鏈路層、和物理層,以下圖blog
ISO制定的OSI參考模型的過於龐大、複雜招致了許多批評。與此對照,由技術人員本身開發的TCP/IP協議棧得到了更爲普遍的應用。下圖,是TCP/IP參考模型和OSI參考模型的對比示意圖排序
TCP/IP參考模型分爲四個層次:應用層、傳輸層、網絡互連層和主機到網絡層接口
在TCP/IP參考模型中,去掉了OSI參考模型中的會話層和表示層(這兩層的功能被合併到應用層實現)。同時將OSI參考模型中的數據鏈路層和物理層合併爲主機到網絡層。下面,分別介紹各層的主要功能。ip
一、主機到網絡層
實際上TCP/IP參考模型沒有真正描述這一層的實現,只是要求可以提供給其上層-網絡互連層一個訪問接口,以便在其上傳遞IP分組。因爲這一層次未被定義,因此其具體的實現方法將隨着網絡類型的不一樣而不一樣。
二、網絡互聯層
網絡互聯層是整個TCP/IP協議棧的核心。它的功能是把分組發往目標網絡或主機。同時,爲了儘快地發送分組,可能須要沿不一樣的路徑同時進行分組傳遞。所以,分組到達的順序和發送的順序可能不一樣,這就須要上層必須對分組進行排序。
網絡互聯層定義了分組格式和協議,即IP協議(InternetProtocol)。
網絡互聯層除了須要完成路由的功能外,也能夠完成將不一樣類型的網絡(異構網)互連的任務。除此以外,網絡互聯層還須要完成擁塞控制的功能。
三、傳輸層
在TCP/IP模型中,傳輸層的功能是使源端主機和目標端主機上的對等實體能夠進行會話。在傳輸層定義了兩種服務質量不一樣的協議。即:傳輸控制協議TCP(transmissioncontrol protocol)和用戶數據報協議UDP(userdatagram protocol)。
TCP協議是一個面向鏈接的、可靠的協議。它將一臺主機發出的字節流無差錯地發往互聯網上的其餘主機。在發送端,它負責把上層傳送下來的字節流分紅報文段並傳遞給下層。在接收端,它負責把收到的報文進行重組後遞交給上層。TCP協議還要處理端到端的流量控制,以免緩慢接收的接收方沒有足夠的緩衝區接收發送方發送的大量數據。
UDP協議是一個不可靠的、無鏈接協議,主要適用於不須要對報文進行排序和流量控制的場合。
四、應用層
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?
點擊查看本文所在的專輯,STM32F207網絡開發