Mar*_*kel 2 ping ipv6 icmp boost-asio
参考这个问题和ASIO库,我想知道ICMP v6应答包的最大大小是多少.我正在使用ASIO库来监听和接收ICMPv6数据包,但我不知道使用什么大小的缓冲区来防止缓冲区溢出.我对IPv6支持扩展标头感到困惑.
例如:
asio::streambuf replyBuffer;
replyBuffer.consume(replyBuffer.size());
size_t length = icmpV6Socket->receive(replyBuffer.prepare(65536) );
Run Code Online (Sandbox Code Playgroud)
Boost.Asio 缓冲区的一个重要特性是它们可以防止缓冲区溢出.Boost.Asio的缓冲区将实际内存和大小的句柄组合在一起.因此,只要正确设置或推导出大小,Boost.Asio操作就不会产生缓冲区溢出.
然而,ICMPv6尺寸的细节如下. IPv6标头是40个字节,并保留2个字节来表示有效载荷长度.因此,IPv6的最大有效负载(包括扩展头)为65,535.这与IPv4不同,其中总长度包括标题本身.所述的ICMPv6回显应答报头为8个字节.
因此:
| 归档时间: |
|
| 查看次数: |
1823 次 |
| 最近记录: |