目录
一. 数据链路层概述
二. 以太网
2.1 以太网的概念
2.2 以太网数据帧
2.3 对于MAC地址的认识
2.4 数据碰撞问题
三. MTU和MSS
3.1 什么是MTU
3.2 MTU对UDP的影响
3.3 MTU对TCP的影响(MSS的概念)
四. ARP协议
4.1 ARP协议的作用
4.2 ARP数据报
4.3 ARP协议工作流程
五. 总结
数据链路层在是计算机网络通信中,TCP/IP五层模型的倒数第二层,TCP/IP五层模型从上层到下层分别为:应用层、传输层、网络层、数据链路层和物理层。
数据链路层的基本功能为:负责设备之间数据帧的交换和识别,进行数据帧同步、冲突检测、数据校验等工作,遵循以太网、令牌环网、无线LAN等标准。工作在数据链路层的典型设备是交换机。数据链路层通过交换报文,实现将数据发送和接收到特定得网络设备中去。
以太网数据帧包含三部分内容:报头、有效数据、CRC校验码。其中数据是指的网络层封装的IP报文数据(IP报头+数据),而以太网帧报头中的源地址和目的地址是数据链路层的MAC地址(以太网地址),这是个6字节数据,区别于4字节IP地址。
IP地址用于在网络中表示主机的唯一性,MAC地址用于在数据链路层标识网络设备的唯一性。
如图2.2所示,假设在局域网中有 主机A ~ 主机E,假设主机A要给主机D发送数据,那么主机A会将数据封装好以太网帧报头后,放到当前所处的局域网中,当前局域网中的主机A~E都可以看到刚才主机A发送的数据。
当主机从网络中接收到一个MAC帧报文时,会从报头中提取出目的MAC地址,并在数据链路层与自身的MAC地址进行比较,如果相同就向网络层交付,不同就直接丢弃。以图2.2为例,假设 主机A~主机E 的MAC地址为 MAC_A ~ MAC_E ,那么主机A向主机E发送数据时,以太网帧报头中的源地址和目的地址分别为MAC_A和MAC_D,这样虽然主机B、C、D能够看到数据帧,但是对比MAC地址不匹配后直接丢弃数据。
在同一个局域网中,如果两台主机同时发送数据,那么它们发送的数据可能会在局域网中发生碰撞,而如果数据之间发生了碰撞,那么数据就无效了,需要被丢弃重发。发送数据的主机是能够识别到碰撞的,如果识别到了碰撞,就要执行碰撞避免算法。
一个局域网中,如果主机数量过多,那么有两台主机同时发送数据的可能性就会大大增加,这样会导致发送数据碰撞、重新发送数据的可能性大增,从而导致网络拥塞。
为了让一个局域网中能够容纳更多的主机,并且能够保证网络不过度拥塞,交换机作为一种将局域网划分为多个子网的设备,被引入进来。
如图2.3所示,交换机将路由器组成的局域网划分为两个子网,其中主机A、B、C位于一个子网,主机D、E位于另一个子网,假设主机A要给主机D发送数据,同时主机B也向局域网中发送了数据,那么数据就会在AB所在的子网内生碰撞,交换机能够检查出碰撞,就不会将数据再向主机D、E发送了,这样就大大降低了数据发生碰撞所带来的影响。
如图2.4所示,假设主机A要给主机C发送数据,这就相当于是局域网内部通信,当交换机发现数据已经被主机C读走了,就不会继续向主机D、E发送了,这样就有效降低了局域网的负载。
MTU就是数据链路层单次传输数据大小的限制,这是由数据链路层的硬件条件所限制的。不同的数据链路层,MTU的大小不同,在以太网中,MTU大小为1500bytes。
MTU数据数据链路层,如果上层的IP报文过大,那么就需要进行分片,这样数据链路层才可以对报文进行转发。如果IP报文太小(小于46bytes),那么就需要对报文进行填充,这样才可以转发。
对于MTU,我们有以下几点理解:
MTU的大小会限制单条报文最大的长度,UDP协议全程用户数据报协议,面向数据报,一条报文不能被拆分为多个,即:发送与接收是一一对应的。
UDP协议没有可靠性保证机制,如果数据在网络传输的过程中发生了丢包,那么对端主机就永远不会接收到这条报文了。那么,如果一个UDP报文携带了太多的数据(超过1472bytes:1500 - 20字节IP报头 + 8字节UDP报头),那么这条UDP报文中的数据就要在网络层被分片,这样就增加了丢包的概率,从而进一步降低UDP协议的可靠性。因此,使用UDP协议进行数据传输时,要额外注意控制单条报文的大小,尽可能的避免分片情况。
通过ifconfig指令,可以查看当前设备的MAC地址和MTU(见图3.3)。
当我们希望与另一台主机进行通信时,我们可以知道对端的IP地址,但是难以得知其MAC地址,ARP请求/响应,就是用于获取并缓存目的主机的MAC地址的。
ARP协议,可用于在主机内部建立IP地址与MAC地址的映射关系。当主机ARP请求/应答获取某台主机的MAC地址后,会缓存 IP地址<->MAC地址 的映射关系,并维持一段时间,之后一段时间再向这台主机发送消息就不用ARP获取MAC地址了。
在ARP应答/请求报文格式如图4.2所示,其中每部分的含义为:
报头:
数据:
在两台主机正式进行通信之前,发送数据的主机,要通过ARP请求,获取目的主机的MAC地址,并缓存目的主机的IP地址和MAC地址之间的映射关系: