TCP/IP详解notes:02数据链路层
2.1 引言
TCP/IP协议族
中,链路层
主要有三个目的:
IP模块
发送
和接收
IP数据报
;ARP模块
发送ARP请求
和接收ARP应答
;RARP模块
发送RARP请求
和接收RARP应答
.
TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网,令牌环网,FDDI(光纤分布式数据接口)及RS-232串行线路等.
在本章中,我们将详细讨论以太网链路层协议,两个串行接口链路层协议(SLIP和PPP),以及大多数实现都包含的环回(loopback)驱动程序.
2.2 以太网和IEEE 802封装
以太网
:这个术语一般是指数字设备公司(Digital Equipment Corp.),英特尔公司(Intel Corp.)和Xerox公司在1982年联合公布的一个标准
.
它是当今TCP/IP采用的主要的局域网技术
.它采用一种称作CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入(Carrier Sense, Multiple Access with Collision Detection).
2.3 尾部封装
RFC 893[Leffler and Karels 1984]描述了另一种用于以太网的封装格式
,称作尾部封装(trailer encapsulation).
现在,尾部封装已遭到反对.
2.4 SLIP:串行线路IP
SLIP的全称是Serial Line IP.它是一种在串行线路上对IP数据报进行封装的简单形式,在RFC 1055[Romkey 1988]中有详细描述.
SLIP协议定义的帧格式
:
- IP数据报以一个称作
END(0xc0)的特殊字符结束
.同时,为了防止数据报到来之前的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个END字符(如果有线路噪声,那么END字符将结束这份错误的报文.这样当前的报文得以正确地传输,而前一个错误报文交给上层后,会发现其内容毫无意义而被丢弃). - 如果IP报文中
某个字符为END,那么就要连续传输两个字节0xdb和0xdc来取代它
.0xdb
这个特殊字符被称作SLIP的ESC字符
,但是它的值与ASCII码的ESC字符(0x1b)不同. - 如果IP报文中某个字符为SLIP的ESC字符,那么就要连续传输两个字节0xdb和0xdd来取代它. 图2-2中的例子就是含有一个END字符和一个ESC字符的IP报文.在这个例子中,在串行线路上传输的总字节数是原IP报文长度再加4个字节.