链路层详解---MTU最大传输单元


链路层

负责相邻设备之间的数据帧传输
在这里插入图片描述
链路层就是负责每一个相邻节点之间的数据传输
相邻设备之间也需要描述识别(因为一个设备有可能有很多相邻设备)
链路层相邻设备之间的识别是通过MAC地址实现的
MAC地址:网卡的硬件地址(uint8_t mac[6])
在这里插入图片描述
48位对端MAC地址/48位源端MAC地址:描述识别相邻的设备—描述了相邻设备之间的数据传输
16位上层协议类型:网络层的协议类型,进行数据分用时选择上层的解析协议
32位CRC校验和:数据帧尾,包含检验和在内

如何获取对端的MAC地址

一个主机,第一次通过网线连接到路由器上,然后发送DHCP请求,路由器收到之后就会响应,给主机分配IP地址
ARP协议:是一个介于网络层和链路层之间的协议----通过IP地址获取MAC地址
过程:封装ARP请求,然后将ARP请求广播到整个局域网中,(以太网头中设置的对端MAC地址FFFFFFFFFFFF,ARP请求中描述自己的MAC地址和IP地址,以及对端的IP地址,对端的MAC地址空白),相邻设备收到这个ARP请求后,检测目的IP地址是否与自己相符,若相符则组织ARP响应,填充自己的MAC回复出去,若不符合则直接丢弃.
ARP局域网欺骗攻击:恶意主机收到ARP广播请求,伪装自己,告诉主机自己就是目标主机,将自己的MAC地址发送过去(所在私网,局域网的攻击,广播单层网络)
主机获取到相邻设备MAC地址之后,会缓存一段时间(一般20-30分钟)
解决:防火墙白名单

MTU----最大传输单元

链路层限制的数据帧大小(根据组网方式不同,默认数值也不同----以太网默认1518字节,包含18字节的以太网帧头帧尾)

mtu对上层协议应用的影响:

tcp协议:tcp在传输层,三次握手的时候,进行MSS-最大数据段大小协商,告诉对方自己的MSS是多少,然后通信双方取较小的一方作为最大传输数据段大小,每次从发送缓冲区中取出不大于MSS大小数据进行传输-----因此通常也说tcp在传输层会自动进行数据分段
MSS=MTU-最小IP报头长度-最小TCP报头长度(MSS=1500-20-20=1460)

udp协议:因为udp不考虑MSS(对于udp不存在MSS的概念),只要数据段大小小于64K-28,就可以进行传输,但是这个数据大小若是大于mtu则会在网络层进行数据分片。

问题:udp不保证数据可靠传输,一个UDP报文若在网络层进行分片,则传输过程中,一个分片出现问题,整个UDP报文都会被丢弃;意味着UDP传输过程中,分片越多,在传输出问题的几率越大
解决:程序员在应用层使用UDP协议的时候最好就能考虑MSS问题,将udp数据段按照计算的mss进行分包处理

猜你喜欢

转载自blog.csdn.net/Hedenghui777/article/details/113790623
MTU