(网络)链路层:以太网协议解析(mac地址 + ARP协议 + MTU)

之前我们学习了应用层的http和https、传输层的tcp和udp、网络层的IP,接下来到链路层了,我们来看链路层的以太网协议吧~

文章目录

  • 以太网协议
    • 以太网帧格式
    • 认识MAC地址
  • ARP协议
  • MTU的认识和影响



以太网协议

在这之前我们要知道:链路层负责相邻设备之间的数据传输

以太网帧格式

(网络)链路层:以太网协议解析(mac地址 + ARP协议 + MTU)_第1张图片

认识MAC地址

  • MAC地址用来识别数据链路层中相连的节点;
  • 长度为48位, 即6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
  • 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)

ARP协议

我们知道通信时要求的五元组:源端ip+源端mac+对端ip+对端mac+协议类型

我们知道对端的IP地址,那么如何获取对端的mac地址呢?
这就引入了arp协议

ARP协议:通过IP地址获取mac地址

ARP协议介于网络层与链路层之间,可以说是网络层协议,也可以说是链路层协议

过程:

  1. 广播ARP请求(源端mac,源端ip,对端mac–留空,对端ip)
  2. 与自己相邻的设备都能收到广播的arp请求,相邻设备收到之后检测对端ip与自己是否一致,一致则把自己的mac地址组织ARP响应。
  3. 获取到相邻设备的mac地址后会缓存起来ip-mac映射关系,但是不会缓存太久(一般是20min)[因为dhcp动态分配ip,ip可能会变,如果一直缓存可能会出现冲突]

ARP协议可能会有ARP局域网欺骗攻击的危险,即局域网中有恶意主机伪装ip地址,给你进行arp响应,这样你的数据就会他所劫持。

解决方案:防火墙中的mac地址白名单

只有白名单上的mac才是我认识的,其他一概不认识。


MTU的认识和影响

MTU:最大传输单元 --- 链路层限制的最大的数据帧大小(以太网默认1500)

(网络)链路层:以太网协议解析(mac地址 + ARP协议 + MTU)_第2张图片

还记得IP协议中分片标识吗?那时我们就说如果数据长度大于mtu,会在网络层进行分片。mtu即为这里的最大数据传输单元

mtu对于编程的影响:

  1. tcp协议

三次握手时会协商mss(最大数据段大小),之后通信时,都会从缓冲区中取出不大于mss大小的数据进行传输。
然而mss就是根据mtu计算得到的,mss=mtu-最小ip报头-最小tcp报头=mtu-40
因此我们说tcp在传输层会自动进行数据分段,在网络层不会进行数据分片。
(网络)链路层:以太网协议解析(mac地址 + ARP协议 + MTU)_第3张图片

  1. udp协议

udp是不会协商mss的,只要数据小于64k-28就可以进行传输,但是大于mtu的话就要在网络层进行数据分片。
但是分片越多传输越危险,因为udp是不可靠传输,当一个分片出问题时,原始报文重组失败只能把所有分片全部丢弃(因此要尽可能减少数据分片的几率)
udp通信编程时,程序猿可以在应用层进行数据分包,传输的时候计算mss,就可以减少数据分片。

你可能感兴趣的:(网络,以太网,链路层,MTU,ARP协议)