ping协议(ICMP)的原理

这篇具有很好参考价值的文章主要介绍了ping协议(ICMP)的原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ping的工作原理

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

  • 一类是用于诊断的查询消息,也就是「查询报文类型」
  • 另一类是通知出错原因的错误消息,也就是「差错报文类型」
    ping 协议,计算机基础&网络编程,网络,服务器,网络协议

查询报文类型

回送消息用于进行通信的主机或路由器之间,判断所发送的数据包是否已经成功到达对端的一种消息,ping命令就是利用这个消息实现的。
可以向对端主机发送回送请求的消息(8),也可以接收对端主机发送回来的回送应答(0)。
ping 协议,计算机基础&网络编程,网络,服务器,网络协议
相比于原生ICMP,这里多两个字段:

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

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 协议,计算机基础&网络编程,网络,服务器,网络协议
ping命令执行的时候,源主机首先会构建一个ICMP回送请求消息数据包。
ICNO数据包内包含多个字段,最重要的两个是:

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

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

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

整个流程

可以看出 ping 这个程序是使用了 ICMP 里面的 ECHO REQUEST(类型为 8 ) 和 ECHO REPLY (类型为 0)。
ping 协议,计算机基础&网络编程,网络,服务器,网络协议

差错报文类型的使用

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 值,以便能到达目标主机。文章来源地址https://www.toymoban.com/news/detail-698333.html

到了这里,关于ping协议(ICMP)的原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [ARM汇编]计算机原理与数制基础—1.1.1计算机的基本原理

    计算机是一种能够根据指令集自动、高速处理数据的现代化设备。它的基本原理可以总结为:输入、存储、处理和输出数据。接下来,我们将详细介绍这些基本原理。 输入 计算机通过输入设备(如键盘、鼠标等)接收外部数据。用户可以通过这些设备输入指令或数据,计算

    2024年02月08日
    浏览(44)
  • 哈工大计算机网络课程传输层协议之:拥塞控制原理剖析

    哈工大计算机网络课程传输层协议详解之:可靠数据传输的基本原理 哈工大计算机网络课程传输层协议详解之:流水线机制与滑动窗口协议 哈工大计算机网络课程传输层协议详解之:TCP协议 **拥塞(Congestion)** 非正式定义:“太多发送主机发送了太多数据或者发送速度太快

    2024年02月11日
    浏览(42)
  • 计算机网络 day6 arp病毒 - ICMP协议 - ping命令 - Linux手工配置IP地址

    目录 arp协议 arp病毒欺骗 arp病毒的运行原理 arp病毒产生的后果: 解决方法: ICMP协议 ICMP用在哪里?     ICMP协议数据的封装过程 ​编辑 为什么icmp协议封装好数据后,还要加一个ip包头,再使用ip协议再次进行封装,也就是在网络层封装了2次?  2种类型的ICMP数据包 1、ec

    2024年02月16日
    浏览(55)
  • SNMP 计算机网络管理 实验3(三) SNMP协议工作原理验证与分析

    一、实验目的     学习捕获SNMP报文,通过报文分析理解SNMP协议的工作过程。 二、实验内容与设计思想 实验内容:编写代码,测试   1)使用snmputilg发送SNMP数据包; 使用wireshark抓包;使用netstat -an查看代理站TCP/UDP连接表,分析并验证SNMP协议的工作过程;   2)自行挑选MIB-2功

    2024年02月11日
    浏览(47)
  • SNMP 计算机网络管理 实验3(二)SNMP协议工作原理验证与分析

    ⬜⬜⬜ 🐰🟧🟨🟩🟦🟪(*^▽^*)欢迎光临 🟧🟨🟩🟦🟪🐰⬜⬜⬜ ✏️write in front✏️ 📝个人主页:陈丹宇jmu 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 🙉联系作者🙈by QQ:813942269🐧 🌈致亲爱的读者:很高兴你能看到我的文章,希望我的文章可以帮助到你,祝万事

    2024年02月11日
    浏览(40)
  • 计算机网络基础(四)—— 什么是TCP/IP协议?是两种网络协议?

    字面上的意思,很多人看到会以为TCP/IP协议说的就是两种协议TCP和IP。 它指的确实是这两种协议,但很多时候,他还有另一个说法“TCP/IP协议簇”,指的是利用IP进行通信时所必须用到的协议群的统称,诸如IP、HTTP、FTP等都属于其中的一种协议。 TCP/IP是Internet的核心协议,是

    2024年02月04日
    浏览(137)
  • 哈工大计算机网络传输层协议详解之:可靠数据传输的基本原理

    哈工大计算机网络课程传输层协议详解之:流水线机制与滑动窗口协议 哈工大计算机网络课程传输层协议详解之:TCP协议 哈工大计算机网络课程传输层协议详解之:拥塞控制原理剖析 什么是可靠? 不错、不丢、不乱 可靠数据传输协议 可靠数据传输对应用层、传输层、链路

    2024年02月12日
    浏览(46)
  • 计算机组成原理基础练习题第一章

    有些计算机将一部分软件永恒地存于只读存储器中,称之为() A.硬件    B.软件 C. 固件     D.辅助存储器 输入、输出装置以及外界的辅助存储器称为() A.操作系统    B.存储器 C.主机       D. 外围设备 完整的计算机系统包括() A.运算器、存储器、控制器   

    2024年02月04日
    浏览(58)
  • linux ping命令原理与用法(ping指令)ICMP(Internet Control Message Protocol,互联网控制报文协议)TTL(Time to Live)数据包生存时间

    Ping是一种网络工具,用于测试主机之间的连通性。它基于ICMP(Internet Control Message Protocol,互联网控制报文协议)来发送探测包并接收响应。 Ping工具发送一个ICMP Echo Request(回显请求)消息到目标主机,目标主机收到请求后会返回一个ICMP Echo Reply(回显回复)消息作为响应。

    2024年02月04日
    浏览(50)
  • 如何在eNSP将多台计算机ping通?

    一台上网终端需配置的三个地址: 实验所需设备: 实验过程 1.IP地址 2.子网掩码 3.网关IP:现在主机使用的网关,一般指的是默认网关。 1.路由器:本实验采用AR3260 在eNSP中路由器分为很多种:根据日常使用及电脑配置情况给大家进行简单介绍: AR201:大家可以理解为是配置

    2024年02月02日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包