Ping工作原理

目的

本文主要是梳理ping的工作原理- 揭开 ICMP 面纱, 其中会涉及到一些基础网络知识, 方便我们能更加了解网络知识 - ICMP。

ping

在实际开发过程中, 我们经常会本地去ping 某个ip地址, 查看网络情况, 去做一些对应排除工作。
如下图:
在这里插入图片描述
然后事实上, 我们却没有在意ping 下实际工作原理。 至少之前我是没有, 哈哈 _. 现在就是像特意去了解下。

网络协议 OSI

OSI(Open System Interconnect),即开放式系统互连。
开放式系统互连

不管是四层 还是七层 网络协议。 ping 使用协议处于网络中的网络层,(与 IP 同层),但ICMP使用时必须增加IP报头
在这里插入图片描述
网络层IP报文结构如下图
在这里插入图片描述
首部校验
在这里插入图片描述

ICMP

什么是ICMP

ICMP 的全称是 Internet Control Message Protocol(互联网控制协议),它是一种互联网套件,它用于IP 协议中发送控制消息。也就是说,ICMP 是依靠 IP 协议来完成信息发送的,它是 IP 的主要部分,但是从体系结构上来讲,它位于 IP 之上,因为 ICMP 报文是承载在 IP 分组中的,就和 TCP 与 UDP 报文段作为 IP 有效载荷被承载那样。这也就是说,当主机收到一个指明上层协议为 ICMP 的 IP 数据报时,它会分解出该数据报的内容给 ICMP,就像分解数据报的内容给 TCP 和 UDP 一样。

ICMP 协议和 TCP、UDP 等协议不同,它不用于传输数据,只是用来发送消息。因为 IP 协议现在有两类版本:IPv4 和 IPv6 ,所以 ICMP 也有两个版本:ICMPv4 和 ICMPv6。

作用

通常用于返回的错误信息或是分析路由。ICMP错误消息总是包括了源数据并返回给发送者。 ICMP错误消息的例子之一是TTL值过期。每个路由器在转发数据报的时候都会把IP包头中的TTL值减1。如果TTL值为0,“TTL在传输中过期”的消息将会回报给源地址。 每个ICMP消息都是直接封装在一个IP数据包中的,因此,和UDP一样,ICMP是不可靠的。

功能

  • 确认 IP 包是否能够成功到达目标地址,当两个设备通过互联网相连时,任意一个设备发送给另一个设备的 IP 包如果没有到达,就会生成 ICMP 数据包发送给设备共享。
  • 网络诊断,经常使用 ICMP 数据包的两个终端程序是 ping 和 traceroute,traceroute 程序用于显示两台互联网设备之间可能的路径并测量数据包在 IP 网络上的时延。ping 程序是 traceroute 的简化版本,我们经常使用 ping 命令来测试两台设备之间是否互联,ping 通常用来测试两台主机之间的连接速度,并准确报告数据包到达目的地并返回后所花费的时间。

如果在 IP 通信过程中由于某个 IP 包由于某种原因未能到达目标主机,那么这个具体的原因将由 ICMP 进行通知,下面是一个 ICMP 的通知示意图
在这里插入图片描述

报文类型

具体ICMP包, 通知类型如下
在这里插入图片描述
上表显示的 ICMP 通知类型主要分为两类:

  • 有关 IP 数据报传递的 ICMP 报文,这类报文也叫做差错报文(error message)。 。最常见的差错报文类型包括目标不可达(类型 3 )、重定向(类型 5)、超时(类型 11)。
  • 有关信息采集和配置的 ICMP 报文,这类报文也被称为查询 quer

相关推荐

  1. Golang WebSocket Ping Pong

    2024-03-14 12:00:05       28 阅读
  2. docker内部无法使用ping等网络工具解决方案

    2024-03-14 12:00:05       18 阅读
  3. springboot工作原理

    2024-03-14 12:00:05       30 阅读
  4. @EventListener工作原理

    2024-03-14 12:00:05       42 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-14 12:00:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-14 12:00:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-14 12:00:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-14 12:00:05       18 阅读

热门阅读

  1. 软考 系统架构设计师之回归及知识点回顾(4)

    2024-03-14 12:00:05       22 阅读
  2. 临近取样(KNN)算法基本原理&sklearn实现

    2024-03-14 12:00:05       15 阅读
  3. 各个类型和Json类型的相互转换

    2024-03-14 12:00:05       22 阅读
  4. 【算法】KY33 密码翻译

    2024-03-14 12:00:05       18 阅读
  5. 力扣Python方法解析

    2024-03-14 12:00:05       19 阅读
  6. Element Plus与Ant Design Vue:选型对比

    2024-03-14 12:00:05       18 阅读
  7. JVM-2

    JVM-2

    2024-03-14 12:00:05      16 阅读
  8. Ribbon

    2024-03-14 12:00:05       20 阅读
  9. SpringBoot中的HttpServletRequest

    2024-03-14 12:00:05       19 阅读
  10. Linux tar静态编译过程记录

    2024-03-14 12:00:05       21 阅读
  11. Vivado原语模板

    2024-03-14 12:00:05       19 阅读