数据链路层解决的是:直接相连的主机之间,进行数据交付的问题
认识以太网
- "以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;
- 例如以太网中的网线必须使用双绞线; 传输速率有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地址
注意:
- 在ARP过程中,收到的任何arp报文,并且交付给了ARP层,都是先看op!
- 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欺骗
- 攻击者首先扫描网络中的IP地址和MAC地址,获取网络拓扑信息。
- 然后,攻击者构造伪造的ARP数据包,其中包含网络中其他设备的IP地址和攻击者自己的MAC地址
- 攻击者将这些伪造的ARP数据包发送到网络中。
- 当被攻击的设备接收到这些伪造的ARP数据包时,会更新其ARP缓存表,将攻击者的MAC地址映射到目标IP地址上。
- 此后,被攻击的设备将数据包发送到攻击者控制的设备上,而不是真正的目标设备。因此,攻击者可以截获网络流量并篡改数据包。