前言
网络传输的本质:类似收发快递,是在两点之间的网络中寻找目的地址的过程;
数据想要在数据链路层传输,需要被封装为数据帧,数据帧中包含源IP、目的IP、源MAC、目的MAC
当我们在浏览器中输入1个网站后,会通过公共的DNS服务可以查询到该域名对应的IP地址,也就是目的IP地址;
但目的MAC地址是怎么获取到的?
难道也有1个类似于DNS的公共服务,维护着全球接入网络设备的物理MAC地址吗?
一、ARP协议
ARP协议全称:地址解析协议,简称ARP(Address Resolution Protocol),是根据IP地址获取物理MAC地址的1个TCP/IP协议。
1.ARP由来
如上图所示
在IP1和IP2之间进行网络传输的过程,是经过多个路由器分阶段完成的;
路由器中的路由表可以通过路由计算知道:去往目的IP地址需要经过哪个下一跳IP地址转发出去,但是不知道该下一跳具体的物理MAC地址?
在逐段传输的过程中目的和源IP地址一直不变(使用了NAT除外)路由器在同网段中发送ARP广播查询路由器接口(下一跳)的物理MAC地址,目的和源MAC地址一直发生变化;
在网络中,采用路由逻辑寻址+ARP物理寻址机制,完成点到点的数据传输;
2.ARP缓存表
在网络中,只要具备发送和接收数据功能的设备都会维护1个ARP表,起到ARP信息缓存的作用;
ARP表中保存着主机和路由器IP地址与物理MAC地址的映射表;
接口: 192.168.56.1 --- 0xb Internet 地址 物理地址 类型 192.168.56.255 ff-ff-ff-ff-ff-ff 静态 224.0.0.2 01-00-5e-00-00-02 静态 224.0.0.22 01-00-5e-00-00-16 静态 224.0.0.251 01-00-5e-00-00-fb 静态 224.0.0.252 01-00-5e-00-00-fc 静态 239.255.255.250 01-00-5e-7f-ff-fa 静态 接口: 192.168.57.1 --- 0xf Internet 地址 物理地址 类型 192.168.57.255 ff-ff-ff-ff-ff-ff 静态 224.0.0.2 01-00-5e-00-00-02 静态 224.0.0.22 01-00-5e-00-00-16 静态 224.0.0.251 01-00-5e-00-00-fb 静态 224.0.0.252 01-00-5e-00-00-fc 静态 239.255.255.250 01-00-5e-7f-ff-fa 静态 接口: 192.168.0.168 --- 0x11 Internet 地址 物理地址 类型 192.168.0.1 64-e1-72-e3-e4-b3 动态 192.168.0.255 ff-ff-ff-ff-ff-ff 静态 224.0.0.2 01-00-5e-00-00-02 静态 224.0.0.22 01-00-5e-00-00-16 静态 224.0.0.251 01-00-5e-00-00-fb 静态 224.0.0.252 01-00-5e-00-00-fc 静态 239.255.255.250 01-00-5e-7f-ff-fa 静态 255.255.255.255 ff-ff-ff-ff-ff-ff 静态
ARP表中的每1条映射条目都可以设置过期时间,超过该时间该路由条目将从ARP缓存表中被删除;
当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,首先查询本机的ARP表中,也就是根据主机B的IP地址查找其对应的物理地址。
- 如找到,就将此物理MAC地址写入数据帧,然后通过局域网将该数据帧发送到此物理地址。
- 若没有找到主机 B 的 IP 地址的项目,主机 A 就启动 ARP,来找出主机 B 的物理地址。
3.ARP特点
通过以上对ARP的理解得出ARP具备以下特点
- ARP缓存
- ARP不会直接查询目的IP对应的目的MAC地址
- ARP同一网段中广播,被路由器隔断
4.总结
MAC地址+ARP:解决网络中点到点传输(完成短期目标)
IP地址+路由+MAC地址+ARP:完成网络中端到端的传输(完成长期目标)
二、ARP工作流程
ARP协议全称:地址解析协议,简称ARP(Address Resolution Protocol),是根据IP地址获取物理MAC地址的1个TCP/IP协议。
只要接入网络的设备,具备发送和接收数据的功能就会在该设备内部维护1张ARP表。
1.子网内通信
多个设备接入1个交换机, 它们之间的通信称为子网内通信;
数据发送方发送ARP广播通过交换机换发ARP广播到所以子网内设备
数据接收方通过单波应答自己的MAC地址给发送方;
2.跨子网通信
2个不同网段的局域网,通过1个3层路由器连接并配置路由,组成的局域网其实还是局域网,它们之间的通信称为跨子网通信;
通常情况下,在局域网中的设备都会配置1个默认网关;
数据发送方发送的ARP广播跨子网,由局域网内的默认网关修改源MAC为默认网关的物理MAC地址、目标MAC为默认网关下一跳的地址,封装成新的数据帧,进行物理层传输;
3.跨互联网通信
2个局域网,通过运营商网络连接,它们之间的通信称为跨互联网通信;
2个局域网想要跨互联网进行网络通信,必需使用公网IP,因为公网IP有限,运营商网络不干涉内网IP的路由配置,除非专线;
NAT-Network Address Translation是指网络地址转换;
NAT是用于在局域网络中使用私有IP地址,连接互联网时,转而使用全局IP地址的技术。
NAT实际上是为解决IPv4地址短缺而开发的技术。
如果我在家庭内网使用内网IP为192.168.1.10的PC,通过内网的默认网关(192.168.1.254) 访问了www.baidu.com;
默认网关会把我PC的内网IP(192.168.1.10)的源IP转换成了默认网关的公网IP;
当百度的服务器响应的数据包,再次回到内网的默认网关,那默认网关如何,把响应报文再次转发到内网中的PC呢?
这就需要默认网关支持NAT技术;
三、ARP攻击
采用手工配置静态ARP表可以防止ARP攻击
1.ARP恶意代理
伪造网关响应ARP广播,所有传输数据都经过该恶意代理
2.篡改ARP表
篡改网络设备中的ARP表使其找不到代理网关,无法上网;