1、引言
在TCP/IP协议簇中,链路层的目的有三个:
(1)为IP模块 发送和接收IP数据 报
(2)为ARP模块发送ARP请求和接收ARP应答
(3) 为RARP模块发送RARP请求和接收RARP应答
TCP/IP支持多种不同的链路层协议,取决于网络所使用的硬件,如以太网、令牌环网、FDDI(光纤分布式数据接口)及RS-232串行线路等。
2、以太网和IEEE802封装
帧格式采用48bit的目的地址和源地址。ARP和RARP协议对32bit的IP地址和48bit的硬件地址进行映射。
802标准定义的帧格式中,长度字段是指它后续数据的字节长度,但不是包括CRC检验码。以太网的类型字段定义的后续数据的类型。在802标准定义的帧格式 中,类型字段由后续 的子网接入协议(SNAP)的首部给出。
以太网帧格式中,类型字段后是数据;在802帧格式中,跟随在后面的是3字节的802.2 LLC和5字节的802.5 SNAP。目的服务访问点(Destination Service Access Point)和源服务访问点(Source Service Access Point)r 的值都设置为0xaa。Ctrl字段的值设置为0x03。随后的3个字节org code设置0,再接下来的2字节与以太网的格式一样。
CRC字段用于帧内后续字节差错的循环冗余检验,也称为FCS
802标准定义的帧和以太网的帧都有最小长度要求。802规定数据部分必须至少为38字节,而以太网规定最少为46字节。为了保证这一点,对于不满足的空间插入填充字节。
3、SLIP:串行线路IP
全称Serial Line IP,是一种在串行线路上对IP数据报封装的简单形式,其帧格式为:
(1)IP数据报以一个称作END(0xc0)的特殊字符结束。在数据报的开始处也传一个END字符。
(2)如果IP报文中某个字符为END,就用连续的两个字符0xdb和0xdc来取代它。0xdb字符也称作SLIP的ESC字符。
(3)如果IP报文中某个字符为ESC,就用连续两个字符0xdb和0xdd来取代。
其缺陷:
(1)每一端必须知道对方的IP地址。没有办法将本端的IP地址通知给另一端
(2)数据帧中没有类型字段。如果一条串行线路用于SLIP,那么它就不能用于其它协议。
(3)没有在数据帧中加入检验和,只能通过上层协议来实现。
4、PPP:点对点协议
PPP,修改了SLIP的所有缺陷,包括三个部分
(1)在串行线路上封装IP数据报的方法。既支持数据为8位和无奇偶检验位的异步模式,也支持面向比特的同步连接。
(2)建立、配置及测试数据链路的链路控制协议(LCP:Link Control Protocol)
(3)针对不同网络层协议的网络控制协议(NCP:Network Control Protocol)
每一帧以标志字符0x7e开始和结束。紧接是一个地址字节,值始终是0xff,然后是一个值为0x03的控制字节,接下来是类型字段,类似于以太网中的类型字段的功能,当它的值 为0x0021时, 表示信息字段是一个IP数据报,值 为0xc021时,表示信息字段链路控制数据,值为0x8021时,表示信息字段是网络控制数据。
由于标志字符的值是0x7e,当字符出现在信息字段中,需要转义
(1)当遇到字符0x7e时,需连续传送两个字符,0x7d和0x5e
(2)当遇到转义字符0x7dJF ,需连续传送两个字符,0x7d和0x5d,以实现转义字符的转义
(3)默认情况下,如果字符的值小于0x20,一般都要进行转义。
5、最大 传输单元MTU
以太网和802.3对数据帧的长度都 有一个限制,最大值 分别为1500和1492字节。链路上的这个特性称作MTU,最大传输单元。如果IP层的数据比链路层的MTU大,IP层需要进行分片。