【超详细】数据链路层和ARP协议

数据链路层解决的是:直接相连的主机之间,进行数据交付的问题

认识以太网

  • "以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;
  • 例如以太网中的网线必须使用双绞线; 传输速率有10M, 100M, 1000M等;
  • 以太网是当前应用最广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN等;

以太网帧(Mac帧)格式

  • 源地址和目的地址是指网卡的硬件地址(也叫MAC地址), 长度是48位,是在网卡出厂时固化的
  • 帧协议类型字段有三种值,分别对应IP、ARP、RARP
  • 帧末尾是CRC校验码

Mac地址

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

对比理解MAC地址和IP地址

  • IP地址描述的是路途总体的 起点 和 终点
  • MAC地址描述的是路途上的每一个区间的起点和终点

局域网通信原理过程

ARP协议

虽然我们在这里介绍ARP协议, 但是需要强调, ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网络层之间的协议,ARP协议,属于Mac帧上层,但是归属到数据链路层

ARP协议的作用

ARP协议建立了主机 IP地址 和 MAC地址 的映射关系.

  • 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的Mac地址,因为出来局域网之后,源和目的Mac地址都会被丢弃
  • 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的Mac地址与本机不符,则直接丢弃
  • 因此在通讯前必须获得目的主机的Mac地址

ARP协议的原理

  • 源主机发出ARP请求,询问“IP地址是172.20.1.2的主机的Mac地址是多少”, 并将这个请求广播到本地网段(以太网帧首部的Mac地址填FF:FF:FF:FF:FF:FF表示广播);
  • 目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的Mac填写在应答包中; 

ARP数据报的格式

  • 注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的
  • 硬件类型指链路层网络类型,1为以太网;
  • 协议类型指要转换的地址类型,0x0800为IP地址;
  • 硬件地址长度对于以太网地址为6字节;
  • 协议地址长度对于和IP地址为4字节;
  • op字段为1表示ARP请求,op字段为2表示ARP应答
  • 帧类型是0806就是ARP请求或者应答

 ARP的过程

主机R寻找主机B的Mac地址,构建ARP请求,然后发送都局域网中,局域网中的每个主机都会收到这个请求,假如主机A收到了这个请求,发现目的Mac地址是全F的广播地址,主机A就受理这个报文,看到的帧类型是0806,这个是ARP的请求或者响应,然后将Mac帧的报头和有效载荷分离,交付给ARP软件层,先看op,发现op是请求,再看目的ip地址,发现是ipB,和自己的不匹配就丢弃掉,其他的主机也一样丢弃掉,最终就匹配对了主机B,主机B就构建应答发送回去

发送回去的应答局域网中的每个主机都能收到的,假如主机K收到这个应答,发现目的Mac地址不匹配就直接丢弃掉,其他主机也一样。 最后目的Mac地址和主机R匹配对了,将Mac帧的报头和有效载荷分离,交付给了ARP软件层,先看op,是响应,再看源Mac地址和源IP,就找到了IPB对应的Mac地址

注意:

  1. 在ARP过程中,收到的任何arp报文,并且交付给了ARP层,都是先看op!
  2. OP决定了什么呢??ARP的类型:请求,应答。请求的话,继续看ARP里的目的IP是否匹配。应答的话,直接看目标主机的Mac地址和IP地址的对应关系

ARP的周边问题

1.每台主机都维护一个ARP缓存表,主机的Mac地址和IP地址,会被主机缓存起来临时缓存起来,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址

2.可以通过我的IP和子网掩码,得到我的网络号,然后拼接IP地址,Ping这个网络号下所有的主机,得到所有主机的IP和mac

3.如果我收到多次同样的arp应答,会以最新的为准,这就会产生一个ARP欺骗

  1. 攻击者首先扫描网络中的IP地址和MAC地址,获取网络拓扑信息。
  2. 然后,攻击者构造伪造的ARP数据包,其中包含网络中其他设备的IP地址和攻击者自己的MAC地址
  3. 攻击者将这些伪造的ARP数据包发送到网络中。
  4. 当被攻击的设备接收到这些伪造的ARP数据包时,会更新其ARP缓存表,将攻击者的MAC地址映射到目标IP地址上。
  5. 此后,被攻击的设备将数据包发送到攻击者控制的设备上,而不是真正的目标设备。因此,攻击者可以截获网络流量并篡改数据包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱敲代码的奇点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值