09
2025
04
17:13:05

从icmp认识ipv4包结构

目录

    • ping 1.0.0.1 回包报文十进制显示

    • 一个 IPv4 包的结构

    • 解析

      • 69 0 0 60

      • 50 51 0 0

      • 55 1 141 14

      • 1 0 0 1

      • 192 168 2 215

      • ICMP 报文

        • 0 0 75 233

        • 179 202 0 76

    • 报文获取代码

    • 参考


ping 1.0.0.1 回包报文十进制显示

69 0 0 60 
50 51 0 0 
55 1 141 14 
1 0 0 1 
192 168 2 215 
0 0 75 233 
179 202 0 76 
0 0 0 0 
0 0 0 0 
0 0 0 0 
0 0 0 0 
0 0 0 0 
0 0 0 0 
0 0 0 0 
0 0 0 0

一个 IPv4 包的结构

一个 IPv4 包的结构

解析

69 0 0 60

  • 69 转成16进制为45

    • 4 为 版本 ( version ),4代表ipv4

    • 5 头部长度 ,表示头部由多少个4字节组成,详情可见下图的例子
      头部长度

  • 0 表示区分服务和显式拥塞通告

  • 0 服务类型

  • 60 表示 ip包全长
    即60个字节,对应报文每行4个字节,一共15行。

50 51 0 0

  • 50 51 为 标识符

  • 0 标识

  • 0 分片偏移

55 1 141 14

  • 51 存活时间
    也就是 TTL,routetrace 用的就是这个

  • 1 协议
    1 为互联网控制消息协议,缩写ICMP

  • 141 14 头部校验
    该字段只对 IP 头部查错,而不关心数据部分。

1 0 0 1

源地址,因为是个回包,所以源地址是我们ping的地址

192 168 2 215

目的地址,为我本地网卡地址

ICMP 报文

0 0 75 233

  • 0 表示ICMP类型:回显应答(ping应答)

  • 0 code

  • 75 233 Checksum

179 202 0 76

  • 179 202 Identifier

  • 0 76 Sequence Number

报文获取代码

ping 代码可见 php ping ipv4 by socket

        socket_recvfrom($sock, $recv, 65535 , 0, $host, $port);	// 回包报文十进制显示
        echo implode(' ',unpack('C*', $recv));
        $recv = unpack('C*', $recv);	

参考

IP包结构
ipv4 ICMP 报文




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://zblog.hqyman.cn/post/10280.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: