数据链路层以太网协议
目录
一、以太网协议格式
二、局域网通信
三、碰撞避免
四、MTU
五、交换机
实现网络通信,首先要实现的是局域网通信。例如,分别处于两个局域网中的主机1和主机2,要想实现主机1和主机2的通信,首先得实现各自局域网中主机与路由器的通信,即局域网通信。数据链路层解决的就是局域网通信问题。
一、以太网协议格式
网络层的数据交付给数据链路层,经过数据链路层封装后的数据统称为数据帧。数据链路层采用的是以太网协议,则称为以太网帧;采用PPP协议,则称为PPP帧;采用WiFi协议,则称为WiFi帧
此处介绍的是以太网协议,即以太网帧。以太网协议采用的是定长报头,14字节。
- 目的地址:目标主机的MAC地址
- 源地址:当前主机的MAC地址
- 类型:标识数据中封装的网络层协议类型,例如IP协议、ARP协议、RARP协议
- 数据:网络层数据
- CRC:检测数据帧在传输过程中是否发生比特错误
二、局域网通信
以太网是数据链路层最常用的协议之一,主要用于有线局域网的通信。
假设同一个局域网中存在主机1~6,主机1想要给主机6发送数据,要经过如下步骤:
- 主机1网络层:将网络层数据交给数据链路层
- 主机1数据链路层:网卡对网络层数据进行封装,称为数据帧,并将数据帧交给物理层
- 主机1物理层:网卡将数据帧转换成比特流,再使用物理编码将比特流转换为光/电信号后交给物理传输介质(光缆、电缆)
- 其他主机物理层:局域网中的所有主机的网卡都能收到光/电信号,将光/电信号转换为比特流。网卡再解析比特流,将比特流转换为数据帧,最后将数据帧交给数据链路层
- 其他主机数据链路层:提取数据帧报头,对比目的地址和当前主机的MAC地址。MAC地址相同,则去除数据帧报头得到网络层数据,将网络层数据交给网络层;MAC地址不相同,直接丢弃该数据帧。
- 主机6数据链路层:MAC地址相同,去除数据帧报头,将余下的网络层数据交给网络层
三、碰撞避免
由于局域网中多台主机共享同一个传输媒介,数据的光电信号在传输媒介中会相互干扰,即数据碰撞,而局域网也被称为碰撞域。因此局域网通信时不允许两台主机同时发送数据。
局域网引入了碰撞避免机制,如果发生数据碰撞,那么对应的主机会进行休眠,休眠时间结束后再进行数据重传。
四、MTU
MTU是数据链路层传输的数据帧的有效载荷最大字节数,不同的数据链路层协议规定的MTU不同,以太网协议规定的MTU是1500字节。假设传输层使用TCP协议(20字节报头),网络层使用IP协议(20字节报头),那么网络层交给数据链路层的数据最大只能是1460字节(不考虑协议选项)。对于超过MTU的数据,网络层例如IP协议会进行IP分片解决问题。
设置MTU的原因就是,发送较长的数据会导致占用共享传输介质的时间更久,发生碰撞的概率越大,因此要限制数据帧的大小。
五、交换机
尽管局域网中有碰撞避免算法减少数据碰撞,但是当同一个局域网中的数据越来越多时,发生数据碰撞的概率必然会增大,就会导致数据链路层要频繁地进行数据重传,造成网络卡顿(这也是为什么人多的地方网速慢地原因)
为了解决这个问题,引入了交换机。交换机的作用就是划分碰撞域,它将局域网的一整个大的碰撞域划分为多个小碰撞域,从而降低数据碰撞的概率。
例如一个局域网存在主机1~6,在该局域网中引入一个交换机,它将局域网这个大碰撞域划分为两个小碰撞域A和B,并且交换机有两个接口A和B分别连接碰撞域A和B。碰撞域A中是主机1~3,碰撞域B中是主机4~6。开始时交换机并不知道各个主机在哪一个碰撞域中,当主机1给主机6发送数据时,交换机本身也在局域网中,也会收到主机1发送的数据,它会将数据转发到碰撞域B中,同时记录接口A连接的碰撞域A中有主机1。通过这种方式,当主机之间发送数据时,交换机就可以知道每台主机分别在哪一个碰撞域中。如果主机1再对主机2发送数据,那么交换机就不需要对数据进行转发,因为它知道主机1和主机2再同一个碰撞域中。
通过交换机,将大碰撞域划分为多个小碰撞域,各个碰撞域之间相互隔离,只有经过交换机的转发才可以将数据发送到其他碰撞域。这样降低了数据碰撞的概率,不同碰撞域中的主机可以同时发送数据。