ping协议(ICMP)的原理

article/2025/10/7 4:18:22

文章目录

  • ping的工作原理
    • 查询报文类型
    • 差错报文类型
      • 目标不可达消息
      • 重定向消息
      • 超时消息
    • 查询报文类型的使用
      • 整个流程
    • 差错报文类型的使用

ping的工作原理

ping是基于ICMP(Internet Control Message Protocol)协议工作的,首先熟悉一下ICMP协议
互联网控制报文协议
ICMP功能:确认IP包是否成功送达目标地址,报告发送过程中IP包被废弃的原因改善网络设置等。
在这里插入图片描述
ICMP 的这种通知消息会使用 IP 进行发送 。
ICMP报文是封装在IP包里的,工作在网路层,是IP协议的助手。
在这里插入图片描述
ICMP 包头的类型字段,大致可以分为两大类:

  • 一类是用于诊断的查询消息,也就是「查询报文类型」
  • 另一类是通知出错原因的错误消息,也就是「差错报文类型」
    在这里插入图片描述

查询报文类型

回送消息用于进行通信的主机或路由器之间,判断所发送的数据包是否已经成功到达对端的一种消息,ping命令就是利用这个消息实现的。
可以向对端主机发送回送请求的消息(8),也可以接收对端主机发送回来的回送应答(0)。
在这里插入图片描述
相比于原生ICMP,这里多两个字段:

  • 标识符:用以区分是哪个应用程序发ICMP包,比如用进程PID作为标识符;
  • 序号:序列号从0开始,每发送一次新的回送请求就会加1,用来确认网络包是否丢失;
    选项数据中,ping还会存放发送请求的时间值,来计算往返时间,说明路程长短。

在这里插入图片描述

差错报文类型

目标不可达消息 —— 类型 为 3
原点抑制消息 —— 类型 4
重定向消息 —— 类型 5
超时消息 —— 类型 11

目标不可达消息

网络不可达 0 :IP地址是分为网络号和主机号的,所以当路由器中的路由器表匹配不到接收方IP的网络号
主机不可达 1 :路由器表中没有该主机的信息或主机没有连接到网络
协议不可达 2:主机使用TCP协议访问对端主机时,能找到对端的主机了,但是对端主机防火墙禁止TCP协议访问,会通过ICMP协议以协议不可达的原因告知主机
端口不可达 3:对端主机没有进程监听8080端口

重定向消息

路由器发送端主机使用不是最优的路径发送数据,那么它会返回一个ICMP重定向消息给这个主机,在这个消息中包含了最合适的路由消息和源数据。

超时消息

IP包中有一个字段叫做TTL(生存周期),它的值随着每经过一次路由器就会减1,直到减到0时该IP包会被丢弃。设置 IP 包生存周期的主要目的,是为了在路由控制遇到问题发生循环状况时,避免 IP 包无休止地在网络上被转发

查询报文类型的使用

同个子网下的主机 A 和 主机 B,主机 A 执行ping 主机 B 后,我们来看看其间发送了什么?

在这里插入图片描述
ping命令执行的时候,源主机首先会构建一个ICMP回送请求消息数据包。
ICNO数据包内包含多个字段,最重要的两个是:

  • 类型 8
  • 序号 用来区分连续ping的时候发出的多个数据包 每发送一个请求数据包序号就会自动加1
    在这里插入图片描述
    然后,由 ICMP 协议将这个数据包连同地址 192.168.1.2 一起交给 IP 层。IP 层将以 192.168.1.2 作为目的地址,本机 IP 地址作为源地址,协议字段设置为 1 表示是 ICMP 协议,再加上一些其他控制信息,构建一个 IP 数据包。
    在这里插入图片描述
    接下来,需要加入 MAC 头。如果在本地 ARP 映射表中查找出 IP 地址 192.168.1.2 所对应的 MAC 地址,则可以直接使用;如果没有,则需要发送 ARP 协议查询 MAC 地址,获得 MAC 地址后,由数据链路层构建一个数据帧,目的地址是 IP 层传过来的 MAC 地址,源地址则是本机的 MAC 地址;还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。
    在这里插入图片描述

主机 B 收到这个数据帧后,先检查它的目的 MAC 地址,并和本机的 MAC 地址对比,如符合,则接收,否则就丢弃。
接收后检查该数据帧,将 IP 数据包从帧中提取出来,交给本机的 IP 层。同样,IP 层检查后,将有用的信息提取后交给 ICMP 协议
主机 B 会构建一个 ICMP 回送响应消息数据包,回送响应数据包的类型字段为 0,序号为接收到的请求数据包中的序号,然后再发送出去给主机 A。
在规定的时候间内,源主机如果没有接到 ICMP 的应答包,则说明目标主机不可达;如果接收到了 ICMP 回送响应消息,则说明目标主机可达。

此时,源主机会检查,用当前时刻减去该数据包最初从源主机上发出的时刻,就是 ICMP 数据包的时间延迟。

整个流程

可以看出 ping 这个程序是使用了 ICMP 里面的 ECHO REQUEST(类型为 8 ) 和 ECHO REPLY (类型为 0)。
在这里插入图片描述

差错报文类型的使用

traceroute 192.168.1.100
traceroute 的第一个作用就是故意设置特殊的 TTL,来追踪去往目的地时沿途经过的路由器
原理:利用 IP 包的生存期限 从 1 开始按照顺序递增的同时发送 UDP 包,强制接收 ICMP 超时消息的一种方法。
比如,将 TTL 设置 为 1,则遇到第一个路由器,就牺牲了,接着返回 ICMP 差错报文网络包,类型是时间超时。
接下来将 TTL 设置为 2,第一个路由器过了,遇到第二个路由器也牺牲了,也同时返回了 ICMP 差错报文数据包,如此往复,直到到达目的主机。这样的过程,traceroute 就可以拿到了所有的路由器 IP。
traceroute 还有一个作用是故意设置不分片,从而确定路径的 MTU。这样做的目的为了路径MTU发现
它的工作原理如下:
首先在发送端主机发送 IP 数据报时,将 IP 包首部的分片禁止标志位设置为 1。根据这个标志位,途中的路由器不会对大数据包进行分片,而是将包丢弃
随后,通过一个 ICMP 的不可达消息将数据链路上 MTU 的值一起给发送主机,不可达消息的类型为「需要进行分片但设置了不分片位」。
发送主机端每次收到 ICMP 差错报文时就减少包的大小,以此来定位一个合适的 MTU 值,以便能到达目标主机。


http://chatgpt.dhexx.cn/article/gWyRuYb1.shtml

相关文章

ping ip+端口

windows 在window中想要ping 某个地址,只需要在cmd 中输入:pingIP ping 127.0.0.1但是这样只能知道ip是可以ping通的,并不知道它的某个端口是否可以ping通,于是可以使用telnet命令。 只需要在cmd中输入:Telnet IP 端…

2.1 TCP/IP命令(Ping)

2.1 TCP/IP命令(Ping) 1.概念 Ping命令来源于物理学中测声纳脉冲的回应情况,利用它可以检查网络是否连通,从而帮助我们分析和判定网络故障。ping命令使用的是ICMP(Internet Control Message Protocol)协议,即Internet控制消息协议的缩写&am…

通过抓包深入分析HTTPS

本文字数:6189字 预计阅读时间:16分钟 Https介绍 https其实是在http上加了一层(SSL/TSL)加密协议,根据维基百科的解释: ❝ 超文本传输安全协议(英语:HyperText Transfer Protocol Secure,缩写&a…

用Wireshark抓包分析协议 计算机网络

此篇博客记录使用Wireshark抓包分析协议。 目录 一、DNS 二、分析TCP握手过程 三、TLS报文 四、HTTP协议 五、SMTP 六、ARP 七、RTP 八、RTMP 一、DNS DNS是域名系统,Domain Name System的缩写,是基于TCP/IP的一个服务。DNS是将主机名到IP地址转…

TCP/IP协议抓包分析

目录 一、TCP/IP协议在协议中分层的位置 二、TCP三次握手流程 三、打开wireshark抓包 四、TCP三次握手分析 1、TCP第一次握手 五、四次挥手流程 六、四次挥手抓包分析 一、TCP/IP协议在协议中分层的位置 二、TCP三次握手流程 1、客户端向服务端发送⼀个SYN1(…

使用Wireshark抓包分析TCP协议

wireshark数据包详细栏每个字段对应的分层。 1、分层介绍 1.1、数据链路层 我们点开这个字段,从该字段中可以看到相邻两个设备的MAC地址 1.2、网络层 本层主要负责将TCP层传输下来的数据加上目标地址和源地址。 1.3、传输层 这一层用到了TCP协议 tcp包头 每个字…

wireshark抓包分析——TCP/IP协议

本文来自网易云社区 当我们需要跟踪网络有关的信息时,经常会说“抓包”。这里抓包究竟是什么?抓到的包又能分析出什么?在本文中以TCP/IP协议为例,简单介绍TCP/IP协议以及如何通过wireshark抓包分析。 Wireshark 是最著名的网络通…

使用wireshark抓包分析实战

今天继续给大家介绍渗透测试相关知识,本文主要内容是使用wireshark抓包分析实战。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 一、wireshark分析ARP协议 …

Wireshark抓包及分析——HTTP

1、首先我们打开 Wireshark,可以看到有很多的网络,选择自己正在使用的网络,比如我现在就是使用 WLAN,双击点开就可以了。 2、然后开始抓包分析,在浏览器中输入网址 3、可以看到 Wireshark 已经抓到很多数据包&…

Http实战之Wireshark抓包分析

Http相关的文章网上一搜一大把,所以笔者这一系列的文章不会只陈述一些概念,更多的是通过实战(抓包代码实现)的方式来跟大家讨论Http协议中的各种细节,帮助大家理解那些反反复复记不住的的概念! 搭建测试项目…

Wireshark抓包详细分析

wireshark抓包介绍 这里选了wifi网卡,开始抓包 上方的文本框可以输入一些规则,对抓到的包进行过滤。 过滤策略: 只看 TCP 协议的包,可以输入 tcp 然后回车;如果想看使用 UDP 协议的某个端口,输入 udp.p…

TCP 实战抓包分析

提纲 正文 显形“不可见”的网络包 网络世界中的数据包交互我们肉眼是看不见的,它们就好像隐形了一样,我们对着课本学习计算机网络的时候就会觉得非常的抽象,加大了学习的难度。 还别说,我自己在大学的时候,也是如…

计算机网络【wireshark抓包分析】

一个完整的三次握手就是:请求(SYN) — 应答(SYNACK) — 再次确认(SYN)。完成三次握手,客户端与服务器开始传送数据。 实验流程: 1、首先我们打开wireshark软件的主界面&a…

wireshark抓包分析(ARP,IP,ICMP)

ARP 介绍: 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息&#xf…

HTTP协议抓包分析

文章目录 HTTP请求报文和响应报文的结构示意图请求报文分析响应报文分析参考资料 本次使用的测试的网站是:http://www.people.com.cn 15 Agu 2019记下:最好是就使用http的网站来分析。因为现在很多网站都是支持的https协议。但是因为我现在也是一个小白&…

html将字符串转为数值,JavaScript字符串转数字的5种方法及其陷阱

JavaScript 是一个神奇的语言,字符串转数字有 5 种方法,各有各的坑法!下面本篇文章就来介绍一下JavaScript字符串转数字的5种方法及其陷阱,希望对大家有所帮助。 String 转换为 Number 有很多种方式,我可以想到的有 5 种!parseInt(num); // 默认方式 (没有基数) parseInt…

CenterNet代码解析

CenterNet代码解析 CenterNet网络 代码解析 代码网址:https://github.com/xingyizhou/CenterNet

【计算机视觉】PnP算法简介与代码解析-柴政(solvepnp理论篇)

PnP算法简介与代码解析-柴政 PnP求解算法是指通过多对3D与2D匹配点,在已知或者未知相机内参的情况下,利用最小化重投影误差来求解相机外参的算法。PnP求解算法是SLAM前端位姿跟踪部分中常用的算法之一,本次公开课,将详细讲述P3P、…

Polygon zkEVM节点代码解析

1. 引言 前序博客: Polygon zkEVM网络节点 相关代码: https://github.com/0xPolygonHermez/zkevm-node(Go语言) Polygon zkEVM节点提供的主要服务模块有: 1)JSON-RPC服务2)Sequencer服务3&…

ICCV2017跟踪算法BACF原理及代码解析

文章和代码下载地址: Galoogahi H K, Fagg A, Lucey S. Learning Background-Aware Correlation Filters for Visual Tracking. 代码下载地址:http://www.hamedkiani.com/bacf.html BACF就是将MCCF多通道特征应用到CFLB上,然后通过ADMM求解…