ARP协议
ARP协议是位于数据链路层的地址解析协议(Address Resolution Protocol
)是通过解析IP地址
得到MAC地址
的一个TCP/IP协议。
主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
在TCP/IP
分层结构中,把ARP
划分为网络层
数据链路层在进行数据封装时,需要目的MAC地址
E2|ARP
以太网首部:以太网目的地址(6B)|以太网源地址(6B)|帧类型(2B)
以太网ARP字段:
ARP首部:硬件类型(2B)|协议类型(2B)|硬件地址长度(2B)|协议地址长度(1B)|操作(2B)
发送者硬件地址(6B)|发送者IP地址(4B)|目标硬件地址(6B)|目标IP地址(4B)
ARP协议包主要分为 ARP 请求包和 ARP 响应包。
-
Address Resolution Protocol (request):ARP 请求数据包结构 发送=ARP请求=广播
sender-IP: 发送者的IP地址
sender-MAC: 发送者的MAC地址
target-ip: 在发送 ARP 广播时,为全 0 (00:00:00:00:00:00)。 为获得某个IP地址的MAC地址。先进行广播
target-mac: 目标端 IP 地址。
E2封装:
D-MAC:全F 广播
S-MAC:自身MAC
-
Address Resolution Protocol (reply):ARP 回复数据包结构 回复=ARP应答=单播
sender-ip: 发送者的IP地址
sender-mac: 发送者的MAC地址
target-ip: ARP请求中的源地址变为ARP应答中的目的地址
target-mac: 目标端 IP 地址。
E2封装:
D-MAC:来源MAC 单播
S-MAC:自身MAC
回复后就能够获取到目的地的MAC地址
同一个广播域的主机通信依赖于MAC地址。所以通信之前会先在网络上发一个广播,询问对应IP地址的MAC地址。发送方就拿到了接收方的MAC地址,进而完成通信。
通过ARP广播(泛洪)获取MAC地址,接收方单播回复,广播方获取到MAC地址并加入缓存中。
广播地址:FF:FF:FF:FF
-
广播域:广播报文所能传递的范围
-
交换机的所有端口同一个广播域,(不划分vlan的情况下)
-
路由器每个接口都是一个广播域,(不划分vlan的情况下) 广播报文是无法穿越路由器的三层接口的
如果目标的IP地址不在同一个广播域,必须通过网关(gateway)来中转,所以会在与网关直连的网卡上请求网关的MAC地址。网关收到目标地址的应答后将建立新的ARP表项并将开始维护ARP缓存表,然后完成最终的通信。
ARP缓存表
ARP协议引入了ARP缓存表的概念,每台主机或路由器在维护着一个ARP缓存表(ARP table),这个表包含IP地址到MAC地址的映射关系,表中记录了对,他们是主机最近运行时获得关于其他主机的IP地址到MAC地址的映射,当需要发送数据的时候,主机就会根据数据报中的目标IP地址信息,然后在ARP缓存表中进行查找对应的MAC地址,最后通过网卡将数据发送出去。
ARP缓存表包含一个寿命值(TTL,也称作生存时间),它将记录每个ARP表项的生存时间,生存时间到了就会从缓存表中删除。从一个表项放置到ARP缓存表中开始,一个表项通常的生存时间一般是10
分钟吗,
建立ARP表项
。 以我们的电脑为例,在开机的时候,我们的电脑肯定是没有ARP表项
的(或者应该说只有路由器的ARP表项
,因为可能是动态获取IP地址
动态ARP缓存 ------老化时间
如果在ARP缓存中没有查询到该IP-MAc映射,则发送ARP广播帧进行ARP请求
如果向外网段发送消息,先向ARP表查询是否有网关的地址映射。没有则向网关地址发送ARP,获取网关的MAC地址。
arp -a #查看ARP表项
正向ARP
已知IP获取MAC
(RARP:Reverse Address Resolution Protocol):反向地址转换协议
已知MAC获取IP
arp绑定 通常是为了安全和管理
无故ARP
Gratuitous ARP不同于一般的ARP请求,它并非期待得到ip对应的mac地址,而是当主机启动的时候,将发送一个Gratuitous arp请求,即请求自己的ip地址的mac地址。
指主机发送ARP查找自己的IP地址。通常,它发生在系统引导期间进 行接口配置的时候。
免费ARP可以用来探测IP地址是否冲突。
重复地址检测DAD(Duplicate Address Detect)是在接口使用某个IPv6单播地址之前进行的,主要是为了探测是否有其它的节点使用了该地址。
IPV4每次获得一个单播地址都要发送广播GARP(免费ARP,无故ARP),进行重复地址检测,确认无人使用后在使用次地址。
此时发送的报文,源MAC目的MAC都是自己。如果广播域中没有人回复,则没有冲突。反之冲突。
如果没有手动更改,则会一直发送免费ARP。会有重复的报文在网段中泛洪。
ARP代理
同─网段、不同物理网络上的计算机之间,可以通过ARP代理实现相互通信。
ICMP
ICMP(Internet Control Message Protocol)Internet控制报文协议,它是网络层的一个重要协议。用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息
Ping——检测链路通断到目的地设备连通性
ICMP协议用来在网络设备间传递各种差错和控制信息
-
ICMP用来传递差错、控制、查询等信息。
-
是一个测试协议,测试联通性。从网络层开始
-
有来有回,会发送一个ICMP Echo Request 请求报文,请求返回 ICMP Echo Reply
-
ICMP无回复,ping不通
-
请求超时
-
数据不可达,无法访问目标主机
-
C:\Users\su>ping 8.8.8.8
正在 Ping 8.8.8.8 具有 32 字节的数据:
来自 8.8.8.8 的回复: 字节=32 时间=20ms TTL=114
来自 8.8.8.8 的回复: 字节=32 时间=20ms TTL=114
来自 8.8.8.8 的回复: 字节=32 时间=20ms TTL=114
来自 8.8.8.8 的回复: 字节=32 时间=21ms TTL=114
8.8.8.8 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 20ms,最长 = 21ms,平均 = 20ms
时间:数据来回时间
TTL:Time to Love 生存时间,一个路由一跳,默认一般是225,每经过一个路由减1,防止回环,到0被放弃
Tracert路由追踪
TTL值为0时将不转发,直接回复主机,主机TTL=0返回获取封装的IP地址
先发一个TTL=1,获取第一个路由地址
再发一个TTL=2,获取第二个路由地址
再发一个TTL=3,获取第三个路由地址,以此类推,一直到达目的地址,目的地址也会返回一个信息
TTL也使用ICMP封装,类型为11,编码为0
tracert -d 8.8.8.8 // -d 取消域名解析
C:\Users\su>Tracert 8.8.8.8
通过最多 30 个跃点跟踪
到 dns.google [8.8.8.8] 的路由:
1 2 ms 2 ms 4 ms 192.168.0.1 [192.168.0.1]
2 4 ms 3 ms 4 ms 192.168.1.1 [192.168.1.1]
3 5 ms 4 ms 4 ms 100.64.0.1
4 6 ms 6 ms 5 ms 58.20.126.241
5 26 ms 25 ms 26 ms 119.39.126.113
6 * * * 请求超时。
7 20 ms 24 ms 22 ms 219.158.8.114
8 19 ms 22 ms 21 ms 219.158.97.29
9 21 ms 21 ms 21 ms 219.158.16.246
10 27 ms 30 ms 29 ms 72.14.213.114
11 21 ms * 21 ms 108.170.241.1
12 21 ms 20 ms 22 ms 209.85.143.37
13 21 ms 19 ms 20 ms dns.google [8.8.8.8]
跟踪完成。
请求超时,但任然会转发
默认尝试5次ping,如果某次ping通了,将返回访问的IP地址。
加速器原理,改变了网关地址
ICMP报文结构
Type(8B)、Code(8B)、Checksum(16B)
Type:类型,Code:标识,Checksum:检验
类型 | 编码 | 描述 |
---|---|---|
3 | 0 | Echo Reply |
0 | 0 | 网络不可达 |
3 | 1 | 主机不可达 |
3 | 2 | 协议不可达 |
3 | 3 | 端口不可达 |
5 | 0 | 重定向 |
8 | 0 | Echo Request |
11 | 0 | TTL超时 |
当网络设备无法访问目标网络时,会自动发送lCMP目的不可达报文到发送端设备。
ICMP Echo Request和ICMP Echo Reply分别用来查询和响应某些信息,进行差错检测。
ICMP从上到下越来越精确
错误消息类型:
网络不可达 :无法通过路由转发抵达主机
主机不可达: 源主机已经能够到达目的主机的网络,节点没法找到目的ip,查询目的ip的mac地址失败,目的主机的无法到达,返回一个错误消息目的主机不可达
协议不可达: 已经找到主机,对方的协议未开启,访问失败
端口不可达: 未开放对应端口,端口不可达
重定向: ICMP报文会把下一跳的地址发送给主机
ICMP重定向报文是ICMP控制报文中的一种。在特定的情况下,当路由器检测到一台机器使用非优化路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由。路由器也会把初始数据包向它的目的地转发。
发生ICMP重定向通常有两种情况:
1)当路由器从某个接口收到数据还需要从相同接口转发该数据时;
2)当路由器从某个接口到发往远程网络的数据时发现源ip地址与下一跳属于同一网段时。
跨网段访问需要通过网关,网关查询发现需要再次从原来的接口转发。此路由是次优路径,路由会给主机发送ICMP重定向报文信息封装地址给主机。
重定向路由是动态时效,重启后失效,如果设置静态才会永久保存。
对于网络设备,禁止发放ICMP报文。回复ICMP报文会暴露回应方的IP地址信息
多路径探测
从路由的多个端口,向外发包,以TLL递增的形式,获取路由经过的地址
标签:ARP,常用,--,8.8,MAC,计算机网络,地址,ms,ICMP From: https://www.cnblogs.com/xuanstudy/p/17100596.html