TCP/IP網路協議棧:乙太網資料包結構、802.3、MTU
《TCP / IP攻擊:ARP快取中毒的基本原理、TCP序列號預測和TCP重置攻擊》
目錄
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七層模型:應用層、表示層、會話層、傳輸層、網路層、資料鏈路層、和物理層,如下圖
02 TCP/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?
IEEE802網路的IP資料包封裝
在TCP/IP世界中,乙太網IP資料包的封裝是在RFC894中定義的,IEEE802網路的IP資料包封裝是在RFC1042中定義的。最常使用的封裝格式是RFC 894定義的格式。下圖顯示了兩種不同形式的封裝格式。
從上圖看到,兩種幀格式都採用48bit(6位元組)的目的地址和源地址。
接下來的2個位元組在兩種幀格式中互不相同。
在802標準定義的幀格式中,長度欄位是指它後續資料的位元組長度,但不包括CRC檢驗碼。
乙太網的型別欄位定義了後續資料的型別。而在802標準定義的幀格式中,型別欄位則由後續的子網接入協議的首部給出。
幸運的是,802定義的有效長度值與乙太網的有效型別值無一相同,這樣,就可以對兩種幀格式進行區分。
長度/型別有兩個意義,小於1518,代表後面欄位的長度(也就是IEEE802.2/802.3(RFC1042)),大於1518,代表不同的型別(乙太網的封裝格式(RFC894))
- 0800 指IP資料型別
- 0806 指ARP協議,通過IP地址獲得對應的MAC地址,稱為地址解析協議
- 8035 指RARP協議,通過MAC地址來獲得對應的IP地址,稱為逆向地址解析協議
在乙太網幀格式中,型別欄位之後就是資料。而在802幀格式中,後面是3位元組的802.2LLC,它是由目的服務訪問點(DestinationService Access Point,DSAP)、源服務訪問點(SourceService Access Point,SSAP)和Ctrl欄位組成,DSAP和SSAP預設值是0xaa,Ctrl預設是3。再接下來的2個位元組型別欄位和乙太網幀格式一樣。
802.3標準定義的幀和乙太網的幀都有最小長度要求。802.3規定資料部分必須至少為38位元組,而對於乙太網,則要求最少要有46位元組。為了保證這一點,必須在不足的空間插入填充(pad)位元組。
常用的乙太網的封裝格式(RFC894)
下面只講最常用的乙太網的封裝格式(RFC894)
特別說明:上面的目的地址和源地址是MAC,不是IP!!!!
MAC地址解析
MAC地址前3個位元組:組織身份標記 後3個位元組:組織自行分配
第1個位元組
- b0:0表示單播,1表示組播
- b1:0表示被某個組織使用,1表示個人使用
例子:
02-00-00-00-00-01:本地分配
00-50-C2-xx-xx-xx:ST的MAC地址
01-00-5E-xx-xx-xx:IPv4的多播地址
FF-FF-FF-FF-FF-FF:廣播地址
上文說到,乙太網和802.3對資料幀的長度都有一個限制,其最大值分別是1500和1492位元組。鏈路層的這個特性稱作MTU,最大傳輸單元。不同型別的網路大多數都有一個上限。如果IP層有一個資料包要傳,而且資料的長度比鏈路層的MTU還大,那麼IP層就需要進行分片,把資料包分成若干片,這樣每一片都小於MTU,IP分片的問題會在講解IP協議的時候講解。下圖列出了一些典型的MTU值。
我們將用netstat命令列印出網路介面的MTU。
- i引數將列印出介面資訊,- n引數則列印出IP地址,而不是主機名字。
這個命令列印出每個介面的MTU、輸入分組數、輸入錯誤、輸出分組數、輸出錯誤、衝突以及當前的輸出佇列長度。
相關文章
- TCP/IP協議 - 網路層TCP協議
- 計算機網路學習筆記(10) TCP/IP協議棧 之TELNET協議計算機網路筆記TCP協議
- TCP/IP 協議及網路分層模型TCP協議模型
- 一文串聯 HTTP、TCP、IP、乙太網HTTPTCP
- 網路協議 - TCP/IP、HTTP、HTTPS、HTTP2.0協議TCPHTTP
- 傳輸控制協議/網際網路協議(TCP / IP)是什麼意思?-VeCloud協議TCPCloud
- 網路基礎和 TCP、IP 協議TCP協議
- 計算機網路之TCP/IP協議簡介計算機網路TCP協議
- 基於UDP協議的乙太網資料收發控制器UDP協議
- Linux TCP/IP協議棧全過程LinuxTCP協議
- 乙太網網路分析儀
- 網路通訊協議-TCP協議詳解!協議TCP
- 《TCP/IP詳解 卷1:協議》第3章 IP:網際協議TCP協議
- TCP/IP協議與OSI體系結構總結TCP協議
- Python 網路資料傳輸協議 TCP 程式設計Python協議TCP程式設計
- TCP協議之網路延時TCP協議
- [計算機網路]協議棧計算機網路協議
- tcp/ip協議TCP協議
- 系列TCP/IP協議-TCP協議概述(011)TCP協議
- 通過故事引申網路協議TCP協議TCP
- TCP/IP、UDP/IP協議TCPUDP協議
- 系列TCP/IP協議-靜態IP選路(007)TCP協議
- 網路協議 - TCP/IP 三次握手和四次揮手協議TCP
- TCP/IP協議族TCP協議
- TCP/IP 協議族TCP協議
- TCP/IP網路模型TCP模型
- Http網路協議包 (快速理解)HTTP協議
- 【WCH乙太網介面系列晶片】STM32+CH390+Lwip協議棧簡單應用測試晶片協議
- 漫談計算機網路:網路層 ------ 重點:IP協議與網際網路路由選擇協議計算機網路協議路由
- WireShark——IP協議包分析(Ping分析IP協議包)協議
- 《計算機網路微課堂》3-10 乙太網交換機的生成樹協議 STP計算機網路協議
- TCP/IP五層協議TCP協議
- 如何理解TCP/IP協議?TCP協議
- 面試 — 網路 TCP/IP面試TCP
- 計算機網路之七:TCP協議(1)計算機網路TCP協議
- 繫結 WiFi 和乙太網,以使網路間移動更輕鬆WiFi
- OSI與TCP/IP各層的結構與功能,都有哪些協議TCP協議
- 【小菜學網路】MTU