网络层描述了数据的起点和终点,但是在传输的过程中还是要经过很多的小路径传输,而链路层就是负责相邻设备之间的数据传输,那么链路层是如何来识别相邻设备的?通过MAC地址来识别相邻设备,MAC地址就是网卡的物理地址,这样就可以进行数据传输。
- 48位的对端MAC地址、48位的源端地址,描述是哪两个相邻设备进行通信
- 16位的上层协议类型,用于数据分用上层协议的选择
- 32位的检验和
如何得到MAC地址:
ARP协议:介于网络层和链路层之间的协议,可以通过ip地址获取到MAC地址
- 广播ARP请求,请求中包含对端的ip地址
- 与它相邻的设备都会收到这个ARP请求,若请求中的ip地址与自己的相同,那么则填入自己的MAC地址进行ARP响应
- 收到ARP响应,就知道了指定的相邻设备的MAC地址,从而进行数据传输(会将MAC地址缓存起来,缓存时间不长)
ARP欺骗攻击:
广播请求通过ip获取MAC,恶意主机收到ARP请求,伪造ip地址,将自己的MAC地址发送给源端,这样就能接收到对方发送的数据
MTU:链路层规定的最大传输单元
MTU对于编程的影响:
- TCP:
- UDP: