Tea*_*App 7 sockets networking tcp network-protocols ipv6
我正在开发一个项目,其中包括使用java套接字开发应用程序.然而,在阅读一些基本原理和新近推出的IPv6范式时,这促使我在下面提出问题,
从IPv6中删除碎片有什么好处?
如果有人能让我理解为什么会有帮助吗?
我在互联网上进行了研究,但没有找到任何有用的描述.
Mik*_*ton 13
由于IPv6报头没有IPv4所做的片段偏移字段,因此常见的误解是没有 IPv6碎片; 但是,它并不完全准确.IPv6不允许路由器对数据包进行分段; 但是,端节点可以插入IPv6分段头1.
作为RFC 5722规定2,与破碎的问题之一是,它往往会造成安全漏洞.在20世纪90年代后期,Windows 95上发生了几起众所周知的攻击,这些攻击利用了重叠的IPv4片段3 ; 此外,由于必须处理的长问题列表,分组的串联分段有可能烧入因特网路由器芯片.最大的问题之一是,在路由器中缓冲的重叠片段(等待重组)可能会在该设备被错误处理时导致该设备上的安全漏洞.最终结果是大多数路由器实现将需要分段的数据包推送到软件; 这不会在很大的速度下扩展.
另一个问题是,如果重新组合片段,则必须将它们缓冲一段时间,直到收到其余片段.有人可能利用这种动态并发送大量未完成的IP片段; 迫使有问题的设备花费许多资源等待重新组装的机会.智能实现限制了未完成片段的数量,以防止拒绝服务; 但是,限制未完成的片段可能会合法地影响可以重新组装的有效片段的数量.
简而言之,允许路由器处理碎片的问题太多了.如果IPv6数据包需要分段,则主机实现应足够智能以使用TCP路径MTU发现.这也意味着需要端到端地允许几条ICMPv6消息; 有趣的是,许多IPv4防火墙管理员阻止ICMP防范恶意网络映射(然后天真地阻止所有ICMPv6),没有意识到阻止所有ICMPv6以微妙的方式破坏事物4.
请参见Internet协议版本6(IPv6)规范的第4.5节
常用防火墙使用[RFC1858]中指定的算法来清除试图覆盖传输层标头部分的恶意数据包,以绕过入站连接检查.[RFC1858]通过建议丢弃片段偏移量为1的数据包来防止对上层协议(在本例中为TCP)的重叠片段攻击.
虽然这适用于IPv4片段,但它不适用于IPv6片段.这是因为IPv6数据包的可分段部分可以在TCP标头之前包含扩展标头,从而降低了此检查的效率.
我没有给你“官方”答案,但仅根据阅读 IPv6 如何处理太大的数据报,我的猜测是减少路由器上的负载。分段和重组会在路由器上产生开销。IPv6 将这一负担转移到终端节点,并要求它们执行 MTU 发现以确定它们可以发送的最大数据报大小。按理说,终端节点更适合这项任务,因为它们需要处理的数据较少。实际上,路由器的任务已经够多了。强制节点处理它并允许路由器简单地丢弃超过其 MTU 阈值的内容是有意义的。
理想情况下,最终结果是路由器在 IPv6 下(所有条件相同)可以处理比 IPv4 下更大的负载,因为它们不必担心分段/重组。该处理器能力可以专用于路由流量。
| 归档时间: |
|
| 查看次数: |
9008 次 |
| 最近记录: |