TCP/IP学习记录,如有错误请指正,谢谢!!!
TCP/IP协议族之链路层(二)
链路层是最底层协议,主要有三个目的:
1. 为IP模块发送和接收IP数据报
2. 为ARP模块发送ARP请求和接收ARP应答
3. 为RARP发送RARP请求和接收RARP应答。
TCP/IP支持多种不同的链路层协议,这取决于硬件。如:以太网、令牌环网、FDDI(光纤分布式数据接口)及RS232串行线路等。
以太网链路层协议
以太网这个术语一般指数字设备公司(Digital Equipment Corp.)、英特尔公司(Intel Corp.)和Xerox公司在1982年联合公布的一个标准,是当今TCP/IP采用的主要局域网技术,采用一种称作CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入(Carrier Sense, Multiple Access with Collision Detection),速率为10Mb/s,地址为48bit。
串行接口链路协议(SLIP: Serial Line IP 和PPP: Point to Point Protocol)
SLIP协议定义的帧格式
1. IP数据报以一个称作END(0xc0)的结束字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报内容,大多娄实现在数据报开始处也传一个END字符(如果有线路噪声,那么END字符将结束这份错误的报文。这样当前的报文得以正确地传输,而前面一个错误报文交给上层后,会发现其内容毫无意义而被丢弃)。
2. 如果IP报文中某个字符为END,那么就要连续传输两个字节0xdb和0xdc来取代它。0xdb这个特殊字符被称作SLIP的ESC字符,但它的值与ASCII码的ESC字符(0x1b)不同。
3. 如果IP报文中某个字符为SLIP的ESC字符,那么就要连续传输两个字节0xdb和0xdd取代它。
SLIP的缺陷
1. 每一端必须知道对方的IP地址。
2. 数据帧中没有类型字段,如果一条串行线路用于SLIP,那么它不能同时使用其它协议。
3. 没有在数据帧中加上校验和,如果出错只能通过上层协议来发现。
PPP修改了SLIP的缺陷,包括以下三部分
1. 在串行链路上封装IP数据报的方法。PPP既支持数据为8位和无奇偶检验的异步,还面向比特链接。
2. 建立、配置及测试数据链路的链路控制协议(LCP:Link Control Protocol)。它允许通信双方进行协商,以确定不同的选项。
3. 针对不同网络层协议的网络控制协议(NCP: Network Control Protocol)体系。当前RFC定义的网络层有IP、 OSI网络层、 DECnet以及AppleTalk。
PPP数据帧格式
每一帧都以0x7e开始和结束,紧接着一个地址字节,值始终是0xff,然后是一个值为0x03的控制字节,接下来是协议字段,0x0021表示信息是一个IP数据报,0xc021表示信息是链路控制数据,0x8021表示信息是网络控制数据。CRC字段是循环冗余检验码。
由于标志字符的值是0x7e,字段出现该字符时需要转义,具体过程如下:
1. 当遇到0x7e,需连续传送两个字符:0x7d和0x5e,实现标志转义。
2. 当遇到0x7d,需连续传送两个字符:0x7d和0x5d,以实现转义字符的转义。
3. 默认情况下,如果字符的值小于0x20(比如,一个ASCII控制字符),一般都要进行转义。(例如,遇到字符0x01时需连续传两个字符0x7d 和 0x21(这时正好是0x01第六个比特取补码后变为1,而前面两种情况均把它变为0)。
PPP较SLIP的优点
1. PPP支持在单根串行线路上运行多种协议,不只是IP协议。
2. 每一帧都循环冗余检验。
3. 通信双方可以进行IP地址的动态协商(使用IP网络控制协议)。
4. 与CSLIP相似,对TCP和IP报文首部进行压缩。
5. 链路控制协议可以对多个数据链路选项进行设置。为这些优点付出的代价是在每一帧的首部增加3个字节。
最大传输单元MTU
以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节,链路层这个特性称作MTU。如果IP层有一个数据报要传,而且数据的长度比链路层的MTU不大,那么IP层就需要进行分片,把数据报分成若干片,这样每一片都小于MTU。