数据链路层:以太网协议、ARP协议、MTU

网络层只负责数据的源端和目的端,而链路层就是负责相邻设备之间的数据帧传输。相邻设备之间也需要描述识别(因为一个设备可能有很多相邻设备)。链路层相邻设备之间的识别是通过MAC地址实现的

以太网协议

在这里插入图片描述

  • MAC地址:网卡的硬件地址,uint8_t mac[6],每一个网卡设备都拥有自己独有的MAC地址,唯一标识一个设备
  • 48位对端MAC地址、48位源端MAC地址:描述识别相邻设备(描述了相邻设备之间的数据传输)
  • 16位上层协议类型:网络层的协议类型,在数据分用时选择上层的解析协议
  • 32位CRC校验和:数据帧尾,包含校验和在内

如何获取对端的MAC地址?
ARP协议

ARP协议

ARP协议是一个介于网络层和链路层之间的协议,通过IP地址获取相邻设备的MAC地址。
在这里插入图片描述

  • 2字节硬件类型:定义运行ARP的网络类型(以太网)
  • 2字节协议类型:定义使用什么协议,IP地址来转换MAC地址
  • 1字节硬件地址长度:用于定义物理地址长度,指MAC地址的长度
  • 1字节协议地址长度:用于定义逻辑地址长度,指IP地址长度
  • 6字节发送端以太网地址:源主机的MAC地址
  • 4字节发送端IP地址:源主机的IP地址
  • 6字节目的以太网地址:目的MAC地址
  • 4字节目的IP地址:目的主机的IP地址
  1. 以太网协议首部中存在目的MAC地址的含义:
    设置为 0xFFFFFFFFFFFF,是为了在链路层进行广播,即在当前局域网中进行广播。
  2. 28字节ARP请求头部中,目的MAC地址填充为全0,即0x000000000000
    请求当中,设置目的IP地址,当设备接收到ARP请求后,对比ARP请求头部中的目的IP地址是否和自己的IP地址相符,如果相符,则组织ARP响应,将自己的MAC地址回复出去,若不符合直接丢弃。
  3. ARP协议只在子网内部有效
  4. 当前主机获取到相邻设备的MAC地址后,会缓存一段时间(一般默认时20~30分钟)
    因为如果相邻设备的网络中断,下次连接网络后IP地址可能会发生变化,则源主机需要重新获取MAC地址。

ARP局域网欺骗攻击:恶意主机收到ARP请求之后伪装自己,告诉源主机自己就是目标主机,将自己的MAC地址发送过去。
解决办法:防火墙白名单(将信任的相邻设备添加到白名单中)。

MTU(最大传输单元)

链路层限制的数据帧大小(根据组网方式不同,默认数值也不同,以太网中默认1500字节)。
在这里插入图片描述
在这里插入图片描述
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进行分包处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值