一、ICMP协议
1.协议简介
ICMP(Internet Control Message Protocol,互联网控制消息协议)是TCP/IP协议族中的一个重要子协议,该协议位于网络层。主要用于在IP主机和路由器之间传递控制消息,报告网络通信中的各种问题。虽然这些控制消息虽然不传输实际的用户数据,但对于数据的准确、可靠传递起着重要作用。ICMP协议的主要目的是提高IP数据报的成功传输率,确保数据通信的稳定性和可靠性。
2.ICMP的主要作用
差错报告:当数据包在网络传输过程中遇到问题时,ICMP协议可以向发送方报告错误信息,帮助发送方采取相应的措施。
网络诊断:提供了多种查询报文,用于诊断网络连接和路径信息,最常用的工具有ping和traceroute。
流量控制:可以通过源抑制报文通知发送方降低数据发送速率,以缓解网络拥塞。
路由重定向:可以通知主机或路由器更优的路由路径,提高网络传输效率。
3.ICMP报文格式
Type:1字节,表示ICMP报文的类型。
Code:1字节,表示ICMP报文的代码,对类型进行进一步说明。
Checksum:2字节,用于校验整个ICMP报文的完整性。
Data:可变长度,包含具体的控制信息或数据。
4.ICMP报文类型
ICMP报文主要分为两大类:差错报文和查询报文。
ICMP常见报文代码如下:
TYPE | CODE | Description | Query | Error |
0 | 0 | Echo Reply——回显应答(Ping应答) | x | |
3 | 0 | Network Unreachable——网络不可达 | x | |
3 | 1 | Host Unreachable——主机不可达 | x | |
3 | 2 | Protocol Unreachable——协议不可达 | x | |
3 | 3 | Port Unreachable——端口不可达 | x | |
3 | 4 | Fragmentation needed but no frag. bit set——需要进行分片但设置不分片比特 | x | |
3 | 5 | Source routing failed——源站选路失败 | x | |
3 | 6 | Destination network unknown——目的网络未知 | x | |
3 | 7 | Destination host unknown——目的主机未知 | x | |
3 | 8 | Source host isolated (obsolete)——源主机被隔离(作废不用) | x | |
3 | 9 | Destination network administratively prohibited——目的网络被强制禁止 | x | |
3 | 10 | Destination host administratively prohibited——目的主机被强制禁止 | x | |
3 | 11 | Network unreachable for TOS——由于服务类型TOS,网络不可达 | x | |
3 | 12 | Host unreachable for TOS——由于服务类型TOS,主机不可达 | x | |
3 | 13 | Communication administratively prohibited by filtering——由于过滤,通信被强制禁止 | x | |
3 | 14 | Host precedence violation——主机越权 | x | |
3 | 15 | Precedence cutoff in effect——优先中止生效 | x | |
4 | 0 | Source quench——源端被关闭(基本流控制) | ||
5 | 0 | Redirect for network——对网络重定向 | ||
5 | 1 | Redirect for host——对主机重定向 | ||
5 | 2 | Redirect for TOS and network——对服务类型和网络重定向 | ||
5 | 3 | Redirect for TOS and host——对服务类型和主机重定向 | ||
8 | 0 | Echo request——回显请求(Ping请求) | x | |
9 | 0 | Router advertisement——路由器通告 | ||
10 | 0 | Route solicitation——路由器请求 | ||
11 | 0 | TTL equals 0 during transit——传输期间生存时间为0 | x | |
11 | 1 | TTL equals 0 during reassembly——在数据报组装期间生存时间为0 | x | |
12 | 0 | IP header bad (catchall error)——坏的IP首部(包括各种差错) | x | |
12 | 1 | Required options missing——缺少必需的选项 | x | |
13 | 0 | Timestamp request (obsolete)——时间戳请求(作废不用) | x | |
14 | Timestamp reply (obsolete)——时间戳应答(作废不用) | x | ||
15 | 0 | nformation request (obsolete)——信息请求(作废不用) | x | |
16 | 0 | Information reply (obsolete)——信息应答(作废不用) | x | |
17 | 0 | Address mask request——地址掩码请求 | x | |
18 | 0 | Address mask reply——地址掩码应答 |
【考点】常见ICMP类型0,3,8,11这几类常考。
5.ICMP报文的实际案例
ping和Tracert是ICMP协议的具体应用。
5.1 Ping命令
Ping命令是基于ICMP协议的常用网络诊断工具,用于测试网络连通性。以下是Ping命令的工作流程:
1. 发送回显请求报文:发送方主机构造一个ICMP回显请求报文(Type 8),并将其封装在IP数据报中发送给目标主机。
2. 接收回显应答报文:目标主机收到回显请求报文后,构造一个ICMP回显应答报文(Type 0),并将其封装在IP数据报中发送回发送方主机。
3. 显示结果:发送方主机收到回显应答报文后,显示目标主机的IP地址、数据大小和往返时间。
5.2 Traceroute命令
Traceroute命令用于显示数据包从源主机到目标主机的路径信息,常用于诊断网络连接问题。以下是Traceroute命令的工作流程:
1. 发送ICMP报文:发送方主机发送一个带有TTL值为1的ICMP报文(通常是回显请求报文),当该报文到达第一个路由器时,TTL值减为0,路由器丢弃该报文并发送一个超时报文(Type 11)回给发送方。
2. 记录路径信息:发送方记录第一个路由器的IP地址,然后发送一个带有TTL值为2的ICMP报文,重复上述过程,直到数据包到达目标主机或达到最大TTL值。
3. 显示结果:发送方主机显示从源主机到目标主机的每一步路径信息,包括每个路由器的IP地址和响应时间。
【考点】ping和tracert使用的ICMP类型。
6.ICMPv6
ICMPV6协议用于报告IPv6节点在数据包处理过程中出现的错误消息,并实现简单的网络诊断功能。
ICMPv6新增加的邻居发现功能代替了ARP协议的功能,所以在IPv6体系结构中已经没有 ARP协议了除了支持 IPv6地址格式之外,
ICMPv6还为支持 IPv6中的路由优化、IP组播、移动IP等增加了一些新的报文类型。
ICMP-ping如下图
ICMPv6报文有两种:差错报文及信息报文。
IANA在IPv6包头的NextHeader字段中,为ICMPv6分配的值是58。如果报文存在IPv6扩展包头,那么ICMPv6载荷与TCP、UDP载荷一样,必须位于所有扩展包头之后。在IPv6包头中,NextHead=58则表示IPv6包头后封装着一个ICMPv6报文。
在ICMPv6的报文头部中,Type字段用于指示报文类型,Code字段用于进一步指示报文的作用。以下是一些常见的ICMPv6报文类型:
ICMPv6常见报文类型
二、ARP协议
1.协议简介
地址解析协议,将一个已知的IP地址解析成MAC地址,通过网卡绑定的IP地址进行通信;为了实现IP地址与MAC地址的查询与转换,引入ARP缓存表,这个表包含IP地址到MAC地址的映射;当需要发送数据时,主机会根据数据报中的目标IP地址信息,然后在ARP缓存表中进行查找对应的MAC地址,最后通过网卡将数据发送出去。
2.ARP协议的工作方式
ARP通过广播的方式工作。
具体来说,当主机A想要与主机B通信,而A只知道B的IP地址时,就会发出一个ARP请求:“这个IP地址XXX.XXX.XXX.XXX是谁的?请把你的MAC地址告诉我!”。
这个请求会像"广播"一样,传遍整个网段,每一台主机都能收到。当主机B看到这个请求,发现目标IP正是自己时,就会回应一个ARP响应:“这个IP是我的,我的MAC地址是YY-YY-YY-YY-YY-YY”。
主机A收到响应后,就能将IP和MAC的映射关系存入自己的ARP缓存表中,供后续通信使用。
3.ARP首部
-
硬件类型
:2 字节,硬件地址类型,值为 1 时表示以太网 -
协议类型
:2 字节,表示映射的协议地址类型,对于 IP 协议值为 0x0800 -
MAC地址长度
:1 字节,表示 MAC 地址长度,以字节为单位,此处为 6 -
IP协议地址长度
:1 字节,表示 IP 的长度,以字节为单位,此处为 4 -
操作类型
:2 字节,指定本次 ARP 报文类型。ARP 请求(1)、ARP 应答(2)、RARP 请求(3)、RARP 应答(4) -
源MAC地址
:6 字节,发送方的硬件地址 -
源IP地址
:4 字节,发送方的 IP 地址 -
目的MAC地址
:6 字节,接收方硬件地址,在请求报文中该字段值全为 0,即 00:00:00:00:00:00,表示任意地址,等待接收方来补充 -
目的IP地址
:4 字节,接收方的 IP 地址
4.免费ARP
免费ARP报文是一种特殊的ARP报文,该报文中携带的发送端IP地址和目标IP地址都是本机IP地址,报文源MAC地址是本机MAC地址,报文的目的MAC地址是广播地址。设备通过对外发送免费ARP报文来实现以下功能:
(1)确定其它设备的IP地址是否与本机的IP地址冲突。当其它设备收到免费ARP报文后,如果发现报文中的IP地址和自己的IP地址相同,则给发送免费ARP报文的设备返回一个ARP应答,告知该设备IP地址冲突。
(2)设备改变了硬件地址,通过发送免费ARP报文通知其它设备更新ARP表项。
5.作用
宣告作用。它以广播的形式将数据包发送出去,不需要得到回应,只为了告诉其它主机自己的 IP 地址和 MAC 地址。
可用于检测 IP 地址冲突。当一台主机发送了免费 ARP 请求报文后,如果收到了 ARP 响应报文则说明网络内已经存在使用该IP 地址的主机。(DHCP、VRRP协议)
可用于更新其它主机的 ARP 缓存表。如果该主机更换了网卡,而其它主机的 ARP 缓存表仍然保留着原来的 MAC地址。这时,通过免费的 ARP 数据包,更新其它主机的 ARP 缓存表。ARP 报文
6.ARP欺骗
ARP 可以说是最不安全的协议,传播中没有身份验证,对于网络中的任意主机都可以接收到发送者的 arp 包,因此可以假装成目标主机并返回给源主机错误的 mac 地址,当源主机发送数据时就会将数据发送到错误的主机上,造成数据泄露等安全问题
主机 A 想要和主机 C 进行通信,发送的 ARP 数据包被 hacker 截取后,伪造成主机 C,将自己的 mac 地址发送给主机 A,主机 A 就会将 hacker 的 mac 地址存到自己的 arp 缓存表中,这样以后发送到主机 C 的数据全都会发送到 hacker 的主机上
ARP 欺骗会造成数据的泄露,假如网页上没有使用 https 证书,数据都会以明文的形式传输,很容易泄露数据。
ARP欺骗的防范
-
使用静态 ARP 表:静态 ARP 表是手动配置的 ARP 表,可以避免 ARP 欺骗攻击。管理员可以在网络设备上手动配置每个设备的 MAC 地址和 IP 地址的对应关系,从而限制 ARP 欺骗攻击
-
使用动态 ARP 检测工具:动态 ARP 检测工具可以检测网络中的 ARP 欺骗攻击,并且可以发出警报或者自动阻止攻击。例如,ARPwatch、ARPdefender 等工具可以帮助管理员实时监控网络中的 ARP 请求和响应,从而及时发现并防止 ARP 欺骗攻击
-
使用加密协议:使用加密协议可以保护网络中的通信,从而避免 ARP 欺骗攻击。例如,使用 SSL、TLS 等加密协议可以保护 Web 应用程序的通信,从而避免中间人攻击
-
使用虚拟专用网络(VPN):使用 VPN 可以将网络流量加密并隧道化,从而避免 ARP 欺骗攻击。VPN 可以将本地网络与远程网络之间建立一个安全的隧道,从而保护网络通信的安全
三、软考真题
2023年11月网络规划设计师
tracert探测分组利用了()类型的ICMP消息,而中间路由器或目标主机返回的分组里利用了( )类型的ICMP消息。
第一问选项:
A.Type=3,Code=7
B.Type=11,Code=0
C.Type=0,Code=0
D.Type=8,Code=0
第二问选项:
A.Type=3,Code=7
B.Type=11,Code=0
C.Type=0,Code=0
D.Type=8,Code=0
【解析】答案是D、B。首先了解tracert在windows和linux下发送和目的返回的值不同。看题目说的是中间路由器或目的主机返回分组,说明目的主机和中间路由器返回值一致,是基于windows下的tracert。发送采用Type=8,Code=0的ICMP Request报文,中间和目的返回TTL超时报文,Type=11,Code=0。
2021年11月网络规划设计师:
traceroute在进行路由追踪时发出的ICMP消息是(),收到的消息是中间节点或目的节点返回的()
第一问选项:
A.Echo Request
B.Timestamp Request
C.Echo Reply
D.Timestamp Reply
第二问选项:
A.Destination Unreachable
B.TTL Exceeded
C.Parameter Problem
D.Source Route Failed
【解析】答案是A、B。与2023年11月网规考的一致,只不是一个考类型英文一个考Type和Code具体值。
3、ARP协议数据单元封装在 (1) 中发送,ICMP协议数据单元封装在 (2) 中发送。
(1)
A.IP数据报
B.TCP报文
C.以太帧
D.UDP报文
(2)
A.IP数据报
B.TCP报文
C.以太帧
D.UDP报文