gpt4 book ai didi

boost-asio - ICMP IPv6 数据包的最大大小

转载 作者:行者123 更新时间:2023-12-04 00:50:37 28 4
gpt4 key购买 nike

引用this问题和ASIO libary ,我想知道 ICMP v6 回复数据包的最大大小是多少。我正在使用 ASIO 库来监听和接收 ICMPv6 数据包,但我不知道要使用多大的缓冲区来防止缓冲区溢出。我对支持扩展 header 的 IPv6 感到困惑。

Ex 代码:

asio::streambuf replyBuffer;
replyBuffer.consume(replyBuffer.size());
size_t length = icmpV6Socket->receive(replyBuffer.prepare(65536) );

最佳答案

Boost.Asio 的重要功能之一 buffers是它们提供防止缓冲区溢出的保护。 Boost.Asio 的缓冲区将实际内存和大小的句柄配对在一起。因此,只要正确设置或推断大小,Boost.Asio 操作就不会产生缓冲区溢出。

不过,ICMPv6 大小的详细信息如下。 IPv6 Header为40字节,预留2字节表示Payload Length。因此,IPv6 的最大有效负载(包括扩展 header )为 65,535。这与 IPv4 不同,其中总长度包括 header 本身。 ICMPv6 Echo Reply header是8个字节。

因此:

  • 最大 IPv6 数据包为 65,575 字节(最大负载为 65,535 + header 为 40)。
  • 最大 IPv6 负载为 65,535 字节。
  • ICMPv6 回显回复正文的最大长度为 65,527 字节。 (最大负载为 65,535 - ICMPv6 回显回复 header 为 8)。

关于boost-asio - ICMP IPv6 数据包的最大大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15434362/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com