以太網這個術語一般是指數字設備公司(Digital Equipment Corp.)、英特爾公司(IntelCorp.)和Xerox公司在1982年聯合公布的一個標準。它是當今TCP/IP采用的主要的局域網技術。它采用一種稱作CSMA/CD的媒體接入方法,其意思是帶沖突檢測的載波偵聽多路接入(Carrier Sense, Multiple Access with Collision Detection)。它的速率為10 Mb/s,地址為48 bit。
幾年后, IEEE(電子電氣工程師協會)802委員會公布了一個稍有不同的標準集,其中802.3針對整個CSMA/CD網絡,802.4針對令牌總線網絡, 802.5針對令牌環網絡。這三者的共同特性由802.2標準來定義,那就是802網絡共有的邏輯鏈路控制(LLC)。不幸的是,802.2和802.3定義了一個與以太網不同的幀格式。文獻[Stallings 1987]對所有的IEEE 802標準進行了詳細的介紹。
在TCP/IP世界中,以太網I P數據報的封裝是在RFC 894[Hornig 1984]中定義的,IEEE 802網絡的I P數據報封裝是在RFC 1042[Postel and Reynolds 1988]中定義的。主機需求RFC要求每臺Internet主機都與一個10 Mb/s的以太網電纜相連接:
1) 必須能發送和接收采用RFC 894(以太網)封裝格式的分組。
2) 應該能接收與RFC 894混合的RFC 1042(IEEE 802)封裝格式的分組。
3) 也許能夠發送采用RFC 1042格式封裝的分組。如果主機能同時發送兩種類型的分組數據,那么發送的分組必須是可以設置的,而且默認條件下必須是RFC 894分組。
最常使用的封裝格式是RFC 894定義的格式。圖2-1顯示了兩種不同形式的封裝格式。圖中每個方框下面的數字是它們的字節長度。

兩種幀格式都采用48bit(6字節)的目的地址和源地址(802.3允許使用16 bit的地址,但一般是48bit地址)。這就是我們在本書中所稱的硬件地址。ARP和RARP協議(第4章和第5章)對32 bit的IP地址和48 bit的硬件地址進行映射。
接下來的2個字節在兩種幀格式中互不相同。在802標準定義的幀格式中,長度字段是指它后續數據的字節長度,但不包括CRC檢驗碼。以太網的類型字段定義了后續數據的類型。
在802標準定義的幀格式中,類型字段則由后續的子網接入協議(Sub-network Access Protocol,SNAP)的首部給出。幸運的是, 802定義的有效長度值與以太網的有效類型值無一相同,這樣,就可以對兩種幀格式進行區分。
在以太網幀格式中,類型字段之后就是數據;而在802幀格式中,跟隨在后面的是3字節的802.2 LLC和5字節的802.2 SNAP。目的服務訪問點( Destination Service Access Point,DSAP)和源服務訪問點(Source Service Access Point,SSAP)的值都設為0xaa。Ctrl字段的值設為3。隨后的3個字節org code都置為0。再接下來的2個字節類型字段和以太網幀格式一樣(其他類型字段值可以參見RFC 1340 [Reynolds and Postel 1992])。
CRC字段用于幀內后續字節差錯的循環冗余碼檢驗(檢驗和)(它也被稱為FCS或幀檢驗序列)。
802.3標準定義的幀和以太網的幀都有最小長度要求。802.3規定數據部分必須至少為38字節,而對于以太網,則要求最少要有46字節。為了保證這一點,必須在不足的空間插入填充(pad)字節。在開始觀察線路上的分組時將遇到這種最小長度的情況。
在本書中,我們在需要的時候將給出以太網的封裝格式,因為這是最為常見的封裝格式。
- 第1章 概述
- 1.1 引言
- 1.2 分層
- 1.3 TCP/IP的分層
- 1.4 互聯網的地址
- 1.5 域名系統
- 1.6 封裝
- 1.7 分用
- 1.8 客戶-服務器模型
- 1.9 端口號
- 1.10 標準化過程
- 1.11 RFC
- 1.12 標準的簡單服務
- 1.13 互聯網
- 1.14 實現
- 1.15 應用編程接口
- 1.16 測試網絡
- 1.17 小結
- 第2章 鏈路層
- 2.1 引言
- 2.2 以太網和IEEE 802封裝
- 2.3 尾部封裝
- 2.4 SLIP:串行線路IP
- 2.5 壓縮的SLIP
- 2.6 PPP:點對點協議
- 2.7 環回接口
- 2.8 最大傳輸單元MTU
- 2.9 路徑MTU
- 2.10 串行線路吞吐量計算
- 2.11 小結
- 第3章 IP:網際協議
- 3.1 引言
- 3.2 IP首部
- 3.3 IP路由選擇
- 3.4 子網尋址
- 3.5 子網掩碼
- 3.6 特殊情況的IP地址
- 3.7 一個子網的例子
- 3.8 ifconfig命令
- 3.9 netstat命令
- 3.10 IP的未來
- 3.11 小結
- 第4章 ARP:地址解析協議
- 4.1 引言
- 4.2 一個例子
- 4.3 ARP高速緩存
- 4.4 ARP的分組格式
- 4.5 ARP舉例
- 4.5.1 一般的例子
- 4.5.2 對不存在主機的ARP請求
- 4.5.3 ARP高速緩存超時設置
- 4.6 ARP代理
- 4.7 免費ARP
- 4.8 arp命令
- 4.9 小結
- 第5章 RARP:逆地址解析協議
- 5.1 引言
- 5.2 RARP的分組格式
- 5.3 RARP舉例
- 5.4 RARP服務器的設計
- 5.4.1 作為用戶進程的RARP服務器
- 5.4.2 每個網絡有多個RARP服務器
- 5.5 小結
- 第6章 ICMP:Internet控制報文協議
- 6.1 引言
- 6.2 ICMP報文的類型
- 6.3 ICMP地址掩碼請求與應答
- 6.4 ICMP時間戳請求與應答
- 6.4.1 舉例
- 6.4.2 另一種方法
- 6.5 ICMP端口不可達差錯
- 6.6 ICMP報文的4.4BSD處理
- 6.7 小結
- 第7章 Ping程序
- 7.1 引言
- 7.2 Ping程序
- 7.2.1 LAN輸出
- 7.2.2 WAN輸出
- 7.2.3 線路SLIP鏈接
- 7.2.4 撥號SLIP鏈路
- 7.3 IP記錄路由選項
- 7.3.1 通常的例子
- 7.3.2 異常的輸出
- 7.4 IP時間戳選項
- 7.5 小結
- 第8章 Traceroute程序
- 8.1 引言
- 8.2 Traceroute程序的操作
- 8.3 局域網輸出
- 8.4 廣域網輸出
- 8.5 IP源站選路選項
- 8.5.1 寬松的源站選路的traceroute程序示例
- 8.5.2 嚴格的源站選路的traceroute程序示例
- 8.5.3 寬松的源站選路traceroute程序的往返路由
- 8.6 小結
- 第9章 IP選路
- 9.1 引言
- 9.2 選路的原理
- 9.2.1 簡單路由表
- 9.2.2 初始化路由表
- 9.2.3 較復雜的路由表
- 9.2.4 沒有到達目的地的路由
- 9.3 ICMP主機與網絡不可達差錯
- 9.4 轉發或不轉發
- 9.5 ICMP重定向差錯
- 9.5.1 一個例子
- 9.5.2 更多的細節
- 9.6 ICMP路由器發現報文
- 9.6.1 路由器操作
- 9.6.2 主機操作
- 9.6.3 實現
- 9.7 小結