ICMP
ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
ICMP协议的功能只要有:
- 确认IP包是否到达目标地址
- 通知在发送过程中IP包被丢弃的原因
ICMP的报文分为两类,一类是ICMP询问报文;一类是ICMP差错报告报文
常见ICMP类型
不发送ICMP差错报文的情况:
- 对于第一个ip分片后的所有ip分片报文不发送ICMP差错报文
- 对具有组播地址的数据报不发送ICMP报文
- 对具有特殊地址(127.0.0.0或0.0.0.0)不发送ICMP差错报文
ICMP 协议多应用在 ping 和 tracert 命令:
- ping 命令使用 ICMP 回送请求和应答报文:在网络可达性测试中使用的分组网间探测命令 ping 能产生 ICMP 回送请求和应答报文。目的主机收到 ICMP 回送请求报文后立刻回送应答报文,若源主机能收到 ICMP 回送应答报文,则说明到达该主机的网络正常。
- 路由分析诊断 tracert 使用了 ICMP时间超过报文:tracert 命令主要用来显示数据包到达目的主机所经过的路径。通过执行一个 tracert 到对方主机的命令,返回数据包到达目的主机所经历的路径详细信息,并显示每个路径所消耗的时间。
举个例子:
ICMP Destination Unreachalbe
看下回送请求和回送应答的报文
icmp request
icmp reply
ARP协议
地址解析协议(Address Resolution Protocol),只要通过目标设备的IP地址,查询目标设备的MAC地址。
通信过程:
- 主机A要和主机B进行通信,首先要知道主机B的mac地址,所以会发送ARP广播
- 其他主机收到后,发现找的不是自己,就会丢弃
- 主机B拆包后,发现找的是自己,会进行单播回应,并记录在自己的ARP缓存表中
ARP解析
ARP表
代理ARP
代理ARP一般就是通过网关设备,使用自己的 MAC 地址来对另一设备的ARP请求作出应答。
为什么需要代理ARP?
先要了解,路由器的重要功能之一就是隔离广播域,阻止广播包扩散,否则会造成网络风暴。
ARP请求是个广播包,如果目标地址在同一个局域网内,就会收到应答。但是如果目标地址不在同一个局域网,该如何处理?路由器就提供了代理ARP解决这个问题。
代理ARP
两台主机PC1和PC2,PC1发送ARP请求PC2的MAC地址时,由于路由器不转发广播包,ARP请求只能到达路由器。如果路由器启用了代理ARP功能,并知道PC2属于它连接的网络,那么路由器就用自己接口的MAC地址代替PC2的MAC地址来对主机PC1进行ARP应答。
RARP协议
反向地址转换协议(Reverse Address Resolution Protocol)允许局域网的物理机器从网关服务器的ARP表或者缓存上请求其 IP 地址。即:根据其MAC地址寻找IP地址。
RARP
免费ARP
在获取或变更IP地址时,向外发出一个ARP,但请求的目标IP为本地。
一个主机可以通过它来确定另一个主机是否设置了相同的 IP地址。正常情况下发送免费ARP请求不会收到ARP应答,如果收到了一个ARP应答,则说明网络中存在与本机相同的IP地址的主机,发生了地址冲突。
ARP欺骗
通过广播向局域网的其他主机广播一个伪造的网关MAC地址和IP地址对应表,局域网其他主机收到这个伪造的信息之后就会更新自己的ARP表。这样,当这些主机向外发送报文时,虽然会根据正确的网关的IP地址发包,但实际上却发送到了一个错误的MAC地址上,导致数据包无法发送出去,从而出现无法上网等情况。
可以通过设置静态的MAC->IP对应表,不再接收广播收到的ARP信息。