我目前正在试验 Icmp 协议,我想实现一个新的类IcmpPacket
。我在 Wikipedia 上阅读了该协议,还在 MSDN 上找到了一篇关于使用 Icmp 进行 ping 的文章。由于两个网站之间存在一些差异,我有点困惑。
Wikipedia 将 Icmp 数据包的结构定义如下: 1 字节类型 1 字节代码 2 字节校验和 4 字节剩余头部(无论是什么)
在 MSDN 上有一个针对此类的示例IcmpPacket
(该类的摘录)
public class IcmpPacket {
public byte Type;
public byte SubCode;
public UInt16 CheckSum;
public UInt16 Identifier;
public UInt16 SequenceNumber;
public byte[] Data;
}
前三个属性很清楚,但是Identifier
和SequenceNumber
(=> 标题的其余部分?)
我得到的另一个问题是,如果我想使用ping 服务器,IcmpPacket
我真的需要Identifier
,吗?(我的主人说最小的 IcmpPacket 可能是 28Bytes 大,所以如果取and ,我是否必须用 填充剩余的 20 Bytes ?)SequenceNumber
Data
Identifier
SequenceNumber
Data
PS:是否有一个网站可以很好地描述 Icmp 的结构?