• 【网络协议】聊聊ICMP与ping是如何测试网络联通性


    ICMP协议格式

    ping是基于iCMP协议工作的,ICMP全称Internet Control Message Protocol,就是互联网控制报文协议。其实就是有点类似于古代行军打仗,哨探进行前方探明具体情况。
    IMCP本身处于网络层,将报文封装在IP包里,因为需要有源地址和目标地址,所以整体内容格式简单。
    在这里插入图片描述
    最常用的类型是主动请求为 8,主动请求的应答为 0。

    查询报文类型

    查询类的报文其实主动发起,比如连接服务器不通,使用ping xxx。去测试网络是否联通。主动请求是ICMP ECHO REQUEST,主动请求的响应是 ICMP ECHO REPLY,还有序号,标记那个请求返回来的数据。
    在这里插入图片描述

    差错报文类型

    差错报文类型其实就是网络等出现异常情况主要如下几种情况

    • 终点不可达
      • 网络不可达、主机不可达、协议不可达、端口不可达等情况。
    • 源站抑制 : 发送端发送的速度太快
    • 时间超时:网络超过规定时间,比如设置30S超时,但是服务端31S返回的成功。但是对于调用方来说超时了。
    • 路由重定向:在网络中下次发送给另一个路由器。

    ping:查询报文类型的使用

    整个流程其实先构建一个ICMP请求包,类型是8,然后有对方的IP地址,到IP层添加上对应的源和目的IP地址。MAC添加对应的目标MAC和源MAC。如果在ARP表中存储的有MAC地址,直接使用,否则的话,就需要通过IP地址先通过ARP请求查找到对应的IP地址的MAC,等目标IP地址确认是发送给自己的数据。就会把数据一层层拨开,然后返回应答响应,类型是0,最终会收到对应的信息。
    在这里插入图片描述
    ping 这个程序是使用了 ICMP 里面的 ECHO REQUEST 和 ECHO REPLY 类型的。

    Traceroute:差错报文类型的使用

    Traceroute 的第一个作用就是故意设置特殊的 TTL,来追踪去往目的地时沿途经过的路由器。

    小结

    本篇主要介绍了PING使用的底层协议类型,一种是主动探查的查询报文,一种一场报告的差错报文。Ping使用查询报文,Traceroute 使用差错报文。

  • 相关阅读:
    【复盘】记录一次数据库连接资源占用完毕
    LVS+Keepalived群集
    前端怎么从H5调起微信扫描二维码?小程序使用扫码功能.
    大型分布式系统下缓存应该怎么玩,才能用得高效
    python数据处理—pandas相关函数的使用(持续更新)
    vue的事件处理
    LeetCode-268(Python)—— 丢失的数字
    ZooKeeper学习笔记
    SAP ME21N\ME22N\ME23N采购订单增强:抬头、行项目取值处理
    普通人修谱必须读的三本书,最后一本市场买不到
  • 原文地址:https://blog.csdn.net/jia970426/article/details/133965635