网络|链路层协议——以太网协议


以太网协议

  • 一、以太网帧格式
  • 二、ARP协议
    • 2.1 协议格式
    • 2.2 作用
    • 2.3 工作流程
    • 2.4 ARP局域网欺骗攻击
  • 三、MTU对于上层协议的影响
    • 3.1 TCP协议的影响
    • 3.2 UDP协议的影响

链路层协议主要是负责相邻设备之间的数据传输。
一、以太网帧格式 网络|链路层协议——以太网协议
文章图片

max地址:网卡设备的物理硬件地址,通常出厂时就会设定。
48位对端mac地址+48位源端mac地址:无符号6字节整数,标识相邻两个设备。
16位上层协议类型:记录网路层(有可能是介于网络层和链路层之间的协议,例如ARP协议、RARP协议)使用的协议,用于数据分用。
0800为IP数据报协议类型
0806为ARP请求、应答协议类型
0835为RARP请求、应答协议类型
46~1500字节的上层交付的数据:网络层(有可能是介于网络层和链路层的数据)进行封装后交付到链路层的数据,以太网帧中的数据长度规定最小46字节,最大1500字节。
32位CRC:校验数据一致性。
二、ARP协议 2.1 协议格式 网络|链路层协议——以太网协议
文章图片

ARP数据就是数据一个介于网络层和链路层的数据,该数据到链路层后(上层协议类型为0806)进行链路层的封装。
16位硬件类型:链路层网络类型,1为以太网。
16位协议类型:要装换的地址类型,0x0800为IP地址。
8位硬件地址长度:以太网地址为6个字节。
8位协议地址长度:IP地址长度为4个字节。
16位op字段:op字段为1表示ARP请求,op字段为2表示ARP应答。
48位源端mac地址+32位源端IP地址:对于ARP请求而言,描述发送方信息。
48位对端mac地址+32位对端IP地址:对于ARP请求而言,对端max地址未知,通过对端IP地址,得到max地址,做出ARP应答(ARP协议的作用)。
18个字节的补充数据:ARP数据包大小为28个字节,但是以太网帧中的数据长度规定最小46字节,所以后面补充18个字节数据,该数据无任何意义。
2.2 作用 我们首先需要知道,数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址不知道,则无法发送数据,因此在通讯前必须获得目的主机的硬件地址。
ARP协议的作用就是建立主机IP地址与MAC地址的映射关系。
2.3 工作流程
1.源主机发出ARP请求,询问某IP地址的主机的硬件地址是多少, 并将这个请求广播到本地网段。
2.目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中,做出应答;
每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址
2.4 ARP局域网欺骗攻击 由于ARP请求是一个广播请求,所以就有可能出现恶意主机,伪装IP地址,给你进行ARP应答,你就会将后续的数据发送到这个恶意主机。(破解攻击的方法:防火墙mac地址白名单)
三、MTU对于上层协议的影响 MTU是链路层限制的最大数据帧大小,以太网协议默认是大小为1500。
3.1 TCP协议的影响 在建立连接时,三次握手会协商mss(最大数据段大小),通信过程中都会从缓冲区取出不大于mss大小的数据进行数据传输,然而mss是通过mtu计算得到的
mss=mtu-IP报头(20)-TCP报头(20)=mtu-40
TCP在传输层会自动进行数据分段,所以在网络层不需要进行数据分片
3.2 UDP协议的影响 【网络|链路层协议——以太网协议】UDP是无连接的,所以不会协商mss,只要数据小于最大数据报长度(64k-28)就可以传输,但是若大于mtu大小,就会在网络层进行数据分片。
但是,分片越多越危险,若单个分片出问题,则原始报文重组就会失败,就会造成所有分片被丢弃(所以对于UDP传输,用户尽可能在应用程对数据进行分包,传输的大小可以自己计算一个mss进行数据传输)

    推荐阅读