本文转载自实验楼:链路层简介
简介
网络层协议的数据单元是 IP 数据报 ,而数据链路层的工作就是把网络层交下来的 IP 数据报 封装为 帧(frame)发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。 为达到这一目的,数据链路必须具备一系列相应的功能,主要有:
将数据封装为帧(frame),帧是数据链路层的传送单位;
控制帧的传输,包括处理传输差错,调节发送速率与接收方相匹配;
在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。
数据帧的结构是这样的:
Paste_Image.png
PPP(点对点协议)
PPP(点到点协议)是为在同等单元之间传输数据设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据。设计目的主要是用来通过 拨号或专线 方式建立 点对点 连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。
点对点协议(PPP)为在点对点连接上传输多协议数据包提供了一个标准方法。PPP 最初设计是为两个对等节点之间的 IP 流量传输提供一种封装协议。在 TCP/IP 协议集中它是一种用来同步调制连接的数据链路层协议。
SLIP 与 PPP
1.SLIP 协议
SLIP 的全称为 Serial Line IP(串行线路 IP)。它是一种对 IP 数据报进行封装的简单形式。 SLIP 协议规定的帧格式规则:
IP 数据报以一个称作 END(0xc0)的特殊字符结束。同时为了防止数据报传输之前的线路噪音被误认为是数据报内容,在数据报开始处添加一个 END 字符;
如果 IP 数据报中含有 END 字符,就连续传输 0xdb 和 0xdc 来取代它。0xdb 是 SLIP 的 ESC 字符,但它的值与 ASCⅡ码中的 ESC(0x1b)不同;
如果 IP 数据报中含有 ESC 字符,就连续传输 0xdb 和 0xdd 来取代它。
PPP协议PPP 协议修改了 SLIP 协议中的缺陷,包括以下三个部分:
- PPP 封装 IP 数据报既支持数据为 8 位和无奇偶校验的异步模式,又支持面向比特的同步链接;
- 通过 LCP(链路控制协议)允许双方进行协商;
- 通过 NCP(网络控制协议)允许双方在网络层上进行协商。
PPP 协议的字符规则与 SLIP 有所不同:
- PPP 帧以标志字符 0x7e 开始和结束,紧接着是一个值为 0xff 的地址字节,然后是一个值为 0x03 的控制字节;
- 由于标志字符是 0x7e,当它出现在信息字段中时,需要连续传送 0x7d 和 0x5e 来替代它;
- 当在信息字段中遇到 0x7d 时,需要连续传送 0x7d 和 0x5d 来替代它。
- 默认情况下,如果字符的值小于 0x20,需要连续传送 0x7d 和 0x21 来替代它。
PPP 与 SLIP 相比具有下列优点:
- PPP 支持在单根串行线路上运行多种网络层协议;
- 每一帧都有 CRC 校验;
- 通信双方可以用 NCP 进行 IP 地址的动态协商;
- 可以类似于 CSLIP 对 TCP 和 IP 首部进行压缩;
- LCP 可以对多个数据链路选项进行设置。
MTU
为了提供足够快的响应时间,以太网和 IEEE802.3 对数据帧长度都有限制,其最大值分别为 1500 字节和 1492 字节,链路层的这个特性称作 MTU ,即 最大传输单元 。
当网络层传下来一个 IP 数据报,并且其长度比链路层的 MTU 大,那么网络层就需要对数据报进行分片,使每一片都小于 MTU。
MTU 分为接口 MTU 和路径 MTU:接口 MTU 是所指定的接口所允许发送的最大数据长度;路径 MTU 指两台通信主机路径中最小的 MTU 值。路径 MTU 是不对称的,它在两个方向上不一定一致。
用命令 netstat -in 可以查看网络接口的 MTU:
网友评论