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

本文主要是介绍【网络基础】ICMP协议详解:背景功能、到报文及ping、traceroute命令的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. 前言
  • 2. ICMP的功能
  • 3. ICMP 的报文
    • ① 报文格式:
    • ② ICMP报文类型与描述:
  • 4. ping 命令
    • ① 概念及功能
    • ② 示例输出
    • ③ 注意事项:
  • 5. 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 packets1  router.local (192.168.1.1)  1.234 ms  1.456 ms  1.678 ms2  isp-gateway (10.0.0.1)  10.123 ms  10.345 ms  10.567 ms3  203.0.113.1 (203.0.113.1)  20.234 ms  20.456 ms  20.678 ms4  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 帮助用户深入了解数据包传输的路径和延迟,以便优化网络性能和解决连接问题。

这篇关于【网络基础】ICMP协议详解:背景功能、到报文及ping、traceroute命令的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1112097

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor