Golang实现ping

本文详细介绍了ICMP报头的结构,包括Type、Code、Checksum、ID和Sequence字段,并列举了一些可能的消息类型。通过理解这些基础知识,可以更好地了解如何在Golang中实现ping功能。
摘要由CSDN通过智能技术生成

ICMP部分的结构

报头

ICMP报头从IP报头的第160位开始,即第20个字节开始(除非使用了IP报头的可选部分)。

Bits 160-167 168-175 176-183 184-191
160 Type Code 校验码(checksum)
192 ID 序号(sequence)
  • Type - ICMP的类型,标识生成的错误报文;
  • Code - 进一步划分ICMP的类型,该字段用来查找产生错误的原因.;例如,ICMP的目标不可达类型可以把这个位设为1至15等来表示不同的意思。
  • Checksum - 校验码部分,这个字段包含有从ICMP报头和数据部分计算得来的,用于检查错误的数据,其中此校验码字段的值视为0。
  • ID - 这个字段包含了ID值,在Echo Reply类型的消息中要返回这个字段。
  • Sequence - 这个字段包含一个序号,同样要在Echo Reply类型的消息中要返回这个字段。

可能的消息列表(不是全部)

类型 代码 描述
0 - Echo Reply 0 echo响应 (被程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值