【网络基础】ICMP协议详解:背景功能、到报文及ping、traceroute命令的使用

1. 前言

ICMP协议(Internet Control Message Protocol),即互联网控制消息协议。 是一个网络层协议

  • 新搭建好的网络往往需要先测试验证网络是否畅通;但是IP协议并不提供可靠传输,如果发生丢包,IP协议并不会通知传输层是否丢包以及丢包的原因。

2. ICMP的功能

ICMP正是为了解决这一情况而存在的,其主要功能包括:

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

在这里插入图片描述


3. ICMP 的报文

① 报文格式:

下面是ICMP的报文格式,做了解即可:
在这里插入图片描述

ICMP主要分为两种报文:

  1. 一类是通知出错原因
  2. 一类是用于诊断查询

② ICMP报文类型与描述:

类型编号类型名称描述
0回显应答 (Echo Reply)用于响应回显请求(Ping 命令)
3目标不可达 (Destination Unreachable)数据包无法到达目的地,子类型包括网络不可达、主机不可达等
4源抑制 (Source Quench)请求源主机减缓发送速度(已废弃)
5重定向 (Redirect)通知主机更改路由路径
8回显请求 (Echo Request)用于测试目标主机的可达性(Ping 命令)
11超时 (Time Exceeded)数据包在网络中处理超时
12参数问题 (Parameter Problem)数据包头部字段有问题
13时间戳请求 (Timestamp Request)请求目标主机的时间戳
14时间戳应答 (Timestamp Reply)响应时间戳请求,发送主机的时间戳
15信息请求 (Information Request)获取目标主机的信息(已废弃)
16信息应答 (Information Reply)响应信息请求(已废弃)
17地址掩码请求 (Address Mask Request)请求目标主机的地址掩码
18地址掩码应答 (Address Mask Reply)响应地址掩码请求,发送主机的地址掩码

4. ping 命令

① 概念及功能

我们知道:

ping 命令 是一种用于测试网络连接状态的工具。它通过发送 ICMP(Internet Control Message Protocol) 回显请求(Echo Request)消息到目标主机,并接收其响应(Echo Reply),以确定目标主机是否可达以及网络的延迟情况。以下是 ping 命令的主要功能和用法:

功能:

  1. 检查网络连接:确定目标主机是否在网络上可达。
  2. 测量延迟:计算从发送请求到接收到响应的时间(通常以毫秒为单位),以评估网络延迟。
  3. 诊断网络问题:帮助识别网络连接问题或故障位置。

基本用法

在命令行中输入 ping 命令,后跟目标主机的 IP 地址或域名:

ping <目标IP地址或域名>

例如,要检查 example.com 的连接状态,可以输入:

ping example.com

常见选项

  • -c <次数>:指定发送的请求数量。例如,ping -c 4 example.com 只发送 4 个请求。
  • -t <时间>:指定请求的超时时间。
  • -i <间隔>:指定发送请求的间隔时间(秒)。

② 示例输出

PING example.com (93.184.216.34): 56 data bytes
64 bytes from 93.184.216.34: icmp_seq=0 ttl=56 time=12.3 ms
64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=12.1 ms
64 bytes from 93.184.216.34: icmp_seq=2 ttl=56 time=12.0 ms
64 bytes from 93.184.216.34: icmp_seq=3 ttl=56 time=12.2 ms

--- example.com ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 12.0/12.2/12.3 ms

解释

  • 64 bytes from 93.184.216.34:显示接收到的回应的字节数及来源 IP 地址。
  • icmp_seq=0:ICMP 请求的序列号。
  • ttl=56:时间生存值,表示数据包经过的路由器数量。
  • time=12.3 ms:往返时间,即从发送请求到收到响应的时间。
  • 0% packet loss:丢包率,显示丢失的数据包百分比。
  • round-trip min/avg/max:最小、平均和最大往返时间。

③ 注意事项:

  • 使用 ping命令时,ping 的是域名, 而不是url;一个域名可以通过DNS解析成IP地址。
  • ping命令不光能验证网络的连通性, 同时也会统计响应时间和TTL(IP包中的Time To Live, 生存周期)。
  • ping命令会先发送一个 ICMP Echo Request给对端。
  • 对端接收到之后, 会返回一个ICMP Echo Reply;

在这里插入图片描述

那么如果有一个问题:telnet是23端口, ssh是22端口, 那么ping是什么端口?

  • 这个问题本身是有错误的,正如前面所说:ping命令基于ICMP(网络层)。而端口号是传输层的内容;ICMP不关注端口号这样的信息。

5. traceroute命令

traceroute 命令 基于ICMP协议实现, 能够打印出可执行程序主机, 一直到目标主机之前经历多少路由器

traceroute 命令用于跟踪数据包从源主机到目标主机的路径,帮助识别网络路径上的每个路由节点。它可以显示数据包经过的各个网络设备及其延迟,便于定位网络问题。以下是 traceroute 的基本用法和功能:


① 概念 及 功能

  1. 显示路径:列出从源主机到目标主机的每一个跳点(路由器)。
  2. 测量延迟:显示每个跳点的响应时间,有助于发现延迟较大的节点。

基本用法

在命令行中输入 traceroute 命令,后跟目标主机的 IP 地址或域名:

traceroute <目标IP地址或域名>

例如,要跟踪到 example.com 的路径,可以输入:

traceroute example.com

常见选项

  • -m <最大跳数>:设置最大的跳数(即路由器数量)。例如,traceroute -m 20 example.com 设置最大跳数为 20。
  • -p <端口>:指定使用的端口号。默认使用 33434。
  • -q <查询数>:设置每个跳点发送的探测包数量。默认是 3。

② 示例输出

traceroute to example.com (93.184.216.34), 30 hops max, 60 byte packets
 1  router.local (192.168.1.1)  1.234 ms  1.456 ms  1.678 ms
 2  isp-gateway (10.0.0.1)  10.123 ms  10.345 ms  10.567 ms
 3  203.0.113.1 (203.0.113.1)  20.234 ms  20.456 ms  20.678 ms
 4  example.com (93.184.216.34)  30.123 ms  30.345 ms  30.567 ms

解释

  • 1 router.local (192.168.1.1) 1.234 ms:显示第一个跳点的信息,包括 IP 地址和延迟时间。
  • 30 hops max:最多 30 个跳点。
  • 60 byte packets:发送的数据包大小为 60 字节。

traceroute 帮助用户深入了解数据包传输的路径和延迟,以便优化网络性能和解决连接问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值