TCP/IP四层模型之链路层学习笔记
从之前的学习来看,链路层必须具备以下功能:
- 将数据封装成帧,帧是数据链路层的传送单位
- 控制帧的传输,包括处理传输差错,调节发送速率与接收方相匹配
- 在两个网络实体之间提供数据链路通路的建立、维持和释放的管理
1.差错控制
接收方通过CRC码或者奇偶校验检查可以判定帧在传输过程中是否发生差错。一旦发送差错,一般会采用反馈重发的方法来纠正。接收方接收到帧时就会给发送发发送一个信息以告知是否需要重发,否则一直重发直到成功。
为了避免传输过程停滞不前,通常使用计时器来限定接收方发回反馈消息的时间间隔。当发送发发送一帧的时候就开始计时,若在规定时间内未能接收到接收方的反馈信息,则判定超时,就需要重新发送。
为了避免同一帧被多次收发,对帧进行了编号,赋予每个帧一个序号,接收方可以通过序号来判定这是新发送的还是重新发送的帧,以此来确定是否需要接收提交给网络层。
2.流量控制
由于发送发和接受发的设备等硬件条件或者网络问题的不同,导致双发的收发速率不可能完美相等,所以可能导致发送了巨多巨多的帧以至于接收方被“淹没”,从而导致帧丢失。流量控制主要是限制发送方的发送速率,告知发送发什么时候可以接着发送,什么时候需要暂停发送等待反馈信息。
3.以太网
- DEC、intel和Xerox公司联合发布的标准
- IEEE802提供的标准集802.3
4.PPP协议
同等单元之间传输数据而设计的链路层协议,支持全双工操作,并按照顺序传输数据。
5.SLIP与PPP协议
SLIP,serial line IP 串行线路IP,是一种对IP数据包进行封装的简单形式。
IP数据包以一个称作END(0xc0)的特殊字符结束,同时为了防止数据包传输之时的线路噪音被误认为时数据包内容,在数据包开始处添加了一个END字符。如果在IP数据包中包含有END字符,则用连续的0xdb和0xdc来取代。如果在IP数据包中包含有ESC字符,就用连续的0xdb和0xdd来取代。
SLIP缺陷:
- 每一端必须知道对端的IP地址,但又没办法把本端IP地址传给对端。
- 数据帧中无类型字段,当一条串行线路使用SLIP时则不能使用其他协议。
- SLIP数据帧中午checksum,只能依靠上层协议来发现和纠正错误。
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 可以对多个数据链路选项进行设置。
6.MTU
为了提供足够快的响应时间,以太网和 IEEE802.3 对数据帧长度都有限制,其最大值分别为 1500 字节和 1492 字节,链路层的这个特性称作 MTU ,即 最大传输单元 。
当网络层传下来一个 IP 数据报,并且其长度比链路层的 MTU 大,那么网络层就需要对数据报进行分片,使每一片都小于 MTU。
MTU 分为接口 MTU 和路径 MTU:接口 MTU 是所指定的接口所允许发送的最大数据长度;路径 MTU 指两台通信主机路径中最小的 MTU 值。路径 MTU 是不对称的,它在两个方向上不一定一致。
在Linxu系统下可以用命令netstat -in来查看网络接口的MTU