网络层协议 -- ICMP协议

目录

ICMP协议

ICMP功能

ICMP协议格式

ping命令

一个值得注意的坑

traceroute命令

[CMP 的优缺点](#CMP 的优缺点)

[ICMP 的安全性](#ICMP 的安全性)


ICMP协议

ICMP(Internet Control Message Protocol,互联网控制消息协议)是 TCP/IP 协议族中的一种网络层协议,但IP协议并不提供可靠传输,如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因,因此ICMP协议就用于在 IP 网络中传递控制消息和错误报告。

  • ICMP 主要用于诊断网络问题、检测网络可达性和报告错误条件。
  • ICMP 是网络管理和故障排除的重要工具,常见的工具如 ping 和 traceroute 都依赖于 ICMP。

ICMP功能

ICMP主要的功能包括

  • 确认IP包是否成功到达目的地址
  • 通知再发送过程中IP包被丢包的原因
  • ICMP也是基于IP协议工作的,但是它并不是传输层的功能,因此人们依旧把它归结为网络层协议。
  • ICMP只能搭配IPv4使用,如果是IPv6的情况下,需要使用ICMPv6协议。

举个例子

当主机A向主机B发送数据时,但是主机B已经离线或者关机时

当数据包抵达主机B所在局域网的入口路由器时,路由器为了获取主机B的MAC地址,会向其发送ARP请求。然而,由于主机B已离线,路由器在多次尝试且未收到任何响应后,便会向主机A返回一个ICMP Destination Unreachable(目标不可达)报文。此时,主机A即可得知发送至主机B的数据无法送达。

ICMP协议格式

关于报文格式如下:

仅作了解

ICMP 消息分为两大类:

  1. 错误报告消息
    • 用于报告网络中的错误条件,如目的地不可达、超时等。
  2. 查询消息
    • 用于网络诊断,如回显请求(Echo Request)和回显应答(Echo Reply)。

其中报文中第一个字段类型,填充不同内容,会指定不同的类型,其ICMP包常见类型如下:

ping命令

ping命令就是ICMP的最常应用场景之一,其主要作用便是用于网络连通信测试。

使用 ping 工具检测目标设备是否可达。在此ping以下百度试试

  • 注意,此处ping的是百度的域名,该域名会由DNS解析成IP地址
  • ping命令不仅能验证网络的连通性,同时也会统计响应时间和TTL(IP包中的Time To Live,生存时间)。
  • ping命令会先发送一个ICMP Echo Request给对端。
  • 对端接收到之后,会返回一个ICMP Echo Reply。

一个值得注意的坑

如果问你:telnet是23端口,ssh是22端口,那么ping是什么端口?

答案:ping命令是基于ICMP协议的,ICMP协议在网络层,并非传输层。而端口号是传输层的内容。所以ICMP根本就不关心端口号,所以ping并不在什么端口上。

traceroute命令

除了ping命令,traceroute命令也是ICMP另一个最常应用场景之一,其主要作用是检测数据包的传输路径。

在使用该命令之前,还是要先下载

复制代码
sudo apt install traceroute

之后,我们可以尝试检测向百度发送数据包的传输路径。

CMP 的优缺点

优点:

  • 简单高效:ICMP 消息结构简单,开销小。
  • 广泛支持:几乎所有支持 IP 协议的设备都支持 ICMP。
  • 诊断功能强大:提供丰富的网络诊断和错误报告功能。

缺点:

  • 安全性问题:ICMP 可能被用于网络攻击(如 Ping Flood、Smurf Attack)。
  • 不可靠性:ICMP 不提供可靠性保证,消息可能丢失或被忽略。

ICMP 的安全性

为了提高 ICMP 的安全性,可以采取以下措施:

  • 防火墙过滤:配置防火墙规则,限制 ICMP 消息的传输。
  • 速率限制:限制 ICMP 消息的发送速率,防止网络攻击。
  • 禁用不必要的 ICMP 功能:在网络设备上禁用不必要的 ICMP 消息类型。
相关推荐
A小辣椒2 天前
TShark:Wireshark CLI 功能
linux
A小辣椒2 天前
TShark:基础知识
linux
AlfredZhao2 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao3 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334663 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪3 天前
linux 拷贝文件或目录到指定的位置
linux
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush44 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5204 天前
Linux 11 动态监控指令top
linux