链路层—>ETH(以太网)协议

  • Post author:
  • Post category:其他


链路层负责相邻设备之间的数据帧传输,典型协议有:ETHH(以太网协议),ARP协议,MTU;

网络层是通过IP地址定位起点与终点;链路层是负责起点到终点之间的相邻设备间传输。相邻设备之间的识别是通过MAC地址完成的。

MAC地址:网卡的物理硬件地址–通常出厂时设定的,通常可以修改。

Uint8_t mac[6] —>为无符号的六个字节的数据。



ETH(以太网)协议格式:

在这里插入图片描述

6字节对端源端MAC地址和6字节对端MAC地址: 长度是48位,是在网卡出厂时固化的

MAC地址:网卡的物理硬件地址,用于表示硬件设备。

2字节上层协议类型:帧协议类型字段有三种值,分别对应IP、ARP、RARP

4字节帧尾:帧末尾是CRC校验码


如何知道指定相邻设备的MAC地址?


ARP协议:是一个介于网络层与链路层之间的协议,通过IP地址获取相邻设备的MAC地址。–>过程:组织ARP请求(包含源端MAC,源端IP,指定相邻设备IP…等信息),广播ARP请求,相邻设备都能收到ARP请求,检测对端IP地址是否和自己匹配,匹配则组织ARP响应返回,否则直接丢弃。

ARP广播只会广播一层,局域网内。

通ARP协议获取到了IP地址和MAC地址映射关系后,缓存起来,然后可用ETH协议传输。



ARP协议格式

在这里插入图片描述

注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。

硬件类型指链路层网络类型,1为以太网;

协议类型指要转换的地址类型,0x0800为IP地址;

硬件地址长度对于以太网地址为6字节;

协议地址长度对于和IP地址为4字节;

op字段为1表示ARP请求,op字段为2表示ARP应答。


ARP欺骗攻击(局域网内)

:伪造IP进行ARP响应 解决方法:防火墙MAC白名单。

在这里插入图片描述

MTU:最大传输单元~组网方式不同,默认值也不同;以太网默认MTU=1500字节.


MTU对于编程的影响:

  1. 对于TCP:

    Tcp:tcp三次握手时协商的MSS(最大数据段大小),就是根据MTU计算得到的。MSS=MTU-40.tcp在每次发送数据时取出不大于MSS的数据发送。

    TCP在网络层不会产生数据分片,因为在传输层自动进行分段。
  2. 对于UDP:

    udp不存在MSS,只要最大数据大小小于64k-40就能发送。但是一旦大于MTU就会在网络层进行数据分片,然而一旦分片就要在对端进行重组,重组过程在一个分片出现问题,整个报文都会被丢弃。分片越多,危险越大。

    因此udp编程时,程序员要尽量考虑MTU对于udp传输的影响,在应用层进行分包管理,尽量减少分片概率。



版权声明:本文为S5242原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。