Mar*_*kel 0 networking ipv4 ipv6 istream icmp
如果IPv4有问题并且我想从std :: istream中提取IP和ICMP头,首先我得到最初的20个字节,然后检查IPv4头中提供的头长度是否大于20个字节以便提取任何选项.下一个字节是ICMP数据包.使用IPv4标头内携带的标头长度值,我可以看到IP标头的预期大小.
但是如何获得IPv6标头的确切大小?IPv6标头内部有一个有效负载值,包括标头扩展的大小以及更高级别的数据,如ICMP.我需要知道IPv6头的大小,包括头扩展但没有更高级别的数据,以便知道ICMPv6头在std :: istream中的起始位置.
谢谢!
rya*_*ork 12
IPv6标头的大小固定为40个字节 - 尽管如您所知,可能存在遵循初始IPv6标头但不属于传输层数据报的扩展.要确定IPv6标头后面是否包含标头扩展,请检查"下一个标头"字段.存储在此字段中的值将告诉您下一个标头是传输级别标头(IE TCP/UDP标头),IP级别标头扩展(IE ICMP)还是介于两者之间的任何内容.此列表提供下一个标题字段的所有可能值的列表.
一旦确定了下一个头的类型,就可以相应地处理它 - 所有扩展头的第一个字节应该是"下一个头"字段,这样它们就可以链接在一起,如果扩展头是可变长度的,第二个字节应该是'hdr ext field',它可以用来确定它的大小.
| 归档时间: |
|
| 查看次数: |
2399 次 |
| 最近记录: |