链路层协议

2015-12-31 20:59:01   最后更新: 2016-01-02 10:09:16   访问数量:543




在上一篇日志中,我们介绍了 TCP/IP 协议族,可以看到,链路层有三个目的:

  1. 为 IP 模块发送和接收 IP 数据报
  2. 为 ARP 模块发送和接收 ARP 应答
  3. 为 RARP 发送 RARP 请求和接收 RARP 应答

 

现行最常用的链路层封装格式是以太网(RFC 894)和 IEEE 802(RFC 1042),还有一种因为遭到强烈反对而不被使用的尾部封装格式(RFC 893)

 

下图展示了 RFC 894 和 RFC 1042 两种封装格式:

 

 

RFC 893 尾部封装格式是一种早期的试验格式,他将变长的首部全部移动到数据之后,CRC 之前,这样,计算机可以直接将数据放进内存分页,从而节约了内存复制的时间,而 TCP 数据报的长度正好是 512 字节的整数倍,可以使用页表来存储

但是这样接收方不能很快找到数据报的标识、长度等信息,为解析造成了困难,所以没有被使用

 

以太网和 802.3 对数据帧的长度都有一个限制,其最大值分别是 1500 和 1492 字节,链路层的这个限制被称为最大传输单元 -- MTU

不同类型的网络大多都有一个上限

如果数据的长度比链路层的 MTU 还大,那么 IP 层就需要分片,将数据分成每片都小于 MTU 的若干片

 

SLIP 主要用于家庭中 RS-232 串行端口和高速调制解调器接入 internet

IP 数据报以一个称作 END(0xc0)的字符作为中止,为了防止错误,通常在数据开始之前也会有一个 END 字符

这个简单的协议有以下三个缺陷:

  1. 两端都需要对方的 IP 却没有在通信的报文中写入 IP 的信息
  2. 数据帧中没有类型字段,所以他只能用于 SLIP,而不能用于其他的任何协议
  3. SLIP 没有在数据帧中加入检验字段,这样如果因为网络问题导致数据出错,接收方将无法判断

 

由于串行线路的速率通常较低,并且通常是交互式的,有很多小的 TCP 分组进行交换,因此,诞生了一个新的协议 CSLIP,即压缩 SLIP,他一般能把 40 个字节压缩到 3 或 5 个字节

现在大多数 SLIP 产品都支持 CSLIP 链路

 

PPP 即点对点协议解决了 SLIP 协议中的缺陷

如下图所示,PPP 协议包含了:

  1. 串行链路上封装 IP 数据报的方法
  2. 建立、配置及测试数据链路的链路控制协议 -- LCP,并允许通信双方确定不同的选项
  3. 针对不同的网络层协议的控制协议 -- NCP 体系,比如 IP NCP 允许双方商定是否对报文进行压缩,类似于 CSLIP

 

 

PPP 协议的每一帧都以 0x7e 开始和结束

 

PPP 与 SLIP 类似,主要用于低速串行链路,但与 SLIP 相比有点是显而易见的:

  1. 支持在单根串行线路上运行多种协议
  2. 每一帧都有循环冗余检验 CRC
  3. 通信双方可以进行 IP 地址的动态协商(使用 IP 网络控制协议)
  4. 与 CSLIP 类似,PPP 可以对 TCP 和 IP 报文首部进行压缩
  5. 链路控制协议可以对多个数据链路选项进行设置

 






技术帖      技术分享      协议      protocol      以太网      链路层      ppp      mtu      internet.ieee      8021x      8023      slip      cslip      tcp/ip      tcp/ip详解     


京ICP备15018585号