1. 数据链路层
1.1. 数据链路层概述
链路是从一个结点到相邻结点的一段物理线路,数据链路则是在链路的基础上增加了一些必要的硬件(如网络适配器)和软件(如协议的实现)
网络中的主机、路由器等都必须实现数据链路层
局域网中的主机、交换机等都必须实现数据链路层
局域网属于数据链路层
局域网虽然是个网络。但我们并不把局域网放在网络层中讨论。这是因为在网络层要讨论的是多个网络互连的问题,是讨论分组怎么从一个网络,通过路由器,转发到另一个网络。
而在同一个局域网中,分组怎么从一台主机传送到另一台主机,但并不经过路由器转发。从整个互联网来看,局域网仍属于数据链路层的范围
1.2. 三个问题
1.2.1. 帧界定
封装成帧 (framing) 就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。
首部和尾部的一个重要作用就是进行帧定界。
1.2.2. 发送方向
可以用编址(地址)的来解决
将帧的目的地址添加在帧中一起传输
1.2.3. 数据碰撞
1.3. 三个过程
1.3.1. 封装成帧
封装成帧 (framing) 就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。
首部和尾部的一个重要作用就是进行帧定界。
前导码
前同步码:作用是使接收方的时钟同步
帧开始定界符:表明其后面紧跟着的就是MAC帧
另外以太网还规定了帧间间隔为96比特时间,因此,MAC帧不需要帧结束定界符
1.3.2. 差错控制
奇偶校验
奇校验(odd parity):让传输的数据(包含校验位)中1的个数为奇数。即:如果传输字节中1的个数是偶数,则校验位为“1”,奇数相反。
偶校验(even parity):让传输的数据(包含校验位)中1的个数为偶数。即:如果传输字节中1的个数是偶数,则校验位为“0”,奇数相反。
需要传输”11001110”,数据中含5个”1”,所以其奇校验位为”0”,同时把”110011100”传输给接收方,接收方收到数据后再一次计算奇偶性,”110011100”中仍然含有5个”1”,所以接收方计算出的奇校验位还是”0”,与发送方一致,表示在此次传输过程中未发生错误。
当出现奇数个误码时,可检测出错误
奇校验使1的个数为奇数个,不是则发生误码
循环冗余校验CRC(Cyclic Redundancy Check)
1.3.3. 可靠传输
- 解决透明传输问题
数据链路层应该对上层交付的数据有限制,其内容不能包含帧定界符的值
面向字节的物理链路使用字节填充 (byte stuffing) 或字符填充 (character stuffing),面向比特的物理链路使用比特填充的方法实现透明输
停止-等待协议的信道利用率
假设收发双方之间是一条直通的信道
TD:是发送方发送数据分组所耗费的发送时延
RTT:是收发双方之间的往返时间
TA:是接收方发送确认分组所耗费的发送时延
TA一般都远小于TD,可以忽略,当RTT远大于TD时,信道利用率会非常低