第七节.ICMP 和 ARP
ICMP 重定向
重定向是嵌套报文
不同网段,通信的时候,报文数据找网关(路由地图 - 路由表)
重定向解决的是次优路径问题
设备首先到达网关,查询路由表之后,发现还是要让发送的端口,发送一次数据去往服务器,会触发重定向,网关往回发送一条包含正确下一跳的报文(ICMP 重定向报文),达成最优路径。
ARP 协议 (正向 ARP)
1.1.1.1/24 1.1.1.2/24
S-MAC: 00-00-01 S-IP:1.1.1.1
D-MAC:? D-IP:1.1.1.2 目的 id 是在 ping 的时候自己输入的
目的 mac 怎么找
全 1 发广播 但是不满足单播通信的规范 所以不行 ×
在这个时候,要开发新的协议 ARP 地址解析协议
作用:在已知 IP 地址的情况下,去求与之对应的 MAC 地址
是封装在数据链路层的 2.5 层协议
ARP MAC 求法
步骤 1
会检测对方 IP 地址和我是否在同一网段
跨网段,会 ARP 请求网关 mac 地址
比对: 网络地址 - - - -> 自己 IP S-IP+自己掩码
对方 IP D-IP+自己掩码
相同 = 进行第 1.5 步 查看本地 ARP 动态缓存有没有对方 IP 的 mac 如果有,直接进行数据封装,如果没有就进行下一步不同 = 进行第 1.5 步 查看本地 ARP 动态缓存是否有网关 IP 对应的 mac 如果有,直接进行数据封装,如果没有就进行下一步
步骤 2
借用 ARP 协议实现该操作(获取对方 IP 对应的 mac)
sender- ip 发送者的 IP
告知发送者是谁 我是 1.1.1.1
sender- mac 发送者的 mac
告知发送者是谁 我是 00-00-01
target-ip 接收者的 IP
请问 1.1.12
target-mac 接收者的 mac
你的 mac 是多少?(不知道,但是不能不填写,因为要完成封装。填写全 0)
全 0 代表未知
E2 补充
D-MAC 目的 mac
填充全 F 全 1 相当于发广播 网络中所有人都接收到。
S-MAC 源 mac
00-00-01
广播域
广播报文所能传递的范围
- 交换机的所有端口都是一个广播域(不划分 vlan)
- 路由器每个接口都是一个广播域
- 广播报文是无法穿越路由器的三层接口的
也就是同一个网段下就是在同一个广播域下。
发送端 ARP 请求 广播报文
sender- ip 1.1.1.1
sender- mac 00-00-01
target-ip 1.1.1.2
target-mac?00-00-00
E2 请求报文
D-MAC: 全 F
S-MAC:00-00-01
接收端 ARP 应答 单播报文
sender- ip 1.1.1.2
sender- mac 00-00-02
target-ip 1.1.1.1
target-mac 00-00-01
E2 应答报文
D-MAC:00-00-01
S-MAC:00-00-02
ARP 映射表 (动态 ARP 缓存)
为了解决访问多次访问对端的需求
映射表中会存放 MAC 地址 以及对应的 IP 地址
比如 IP 地址 MAC 地址
1.1.1.1 00-00-01
在第一次 ARP 请求和应答以后就形成了 ARP 映射表
老化时间
MAC 映射表是 20min 老化时间
老化探测机制:
20min 一到会发送 单播-单播-广播的 ARP 探测报文 有回应就将老化时间刷新,重新开始计时。
华为特色改进 :
10 分钟的时候第一次单播
15 分钟发送一次单播
20 分钟发送一次广播
RARP 协议 (反向 ARP)
网吧电脑 接口无 IP 我们会接入一台设备 记录 大量 IP 地址 和 MAC 地址的映射关系
会寻找 MAC,然后发送对应的 IP 地址
更好的解决方案是 DHCP 协议
定向 ARP
DLCI 号 - - - IP 地址
帧中继
现在的网络环境下很难有定向的应用
ARP 代理
三种形式:
路由式 路由器启用 ARP 代理 会查询本地路由表 会使用当前 mac 回复主机 A,然后转发数据给主机 B,主机 B 回复路由器
vlan 内 vlan 间
免费 ARP
也叫无故 ARP
有可能造成泛洪,用作检测地址是否有重复,有 IP 地址启用自动触发
会有标识符,源 ip 和目的 ip 都是自己