一、IP分片
1. 何时分片?
ip层转发报文的时候,会根据查询的路由表出接口上的mtu和报文的长度,如果报文的长度大于出接口上的MTU,则进行数据分片。
2. 何时重组?
接收端负责重组,因为不同的分片报文可能经过不同的路径到达目的地,所以中间没有办法重组。
3. 分片的过程
发送数据为1500的UDP数据包,接口MTU为1500,只有最后一个分片包里面包含UDP头部
4. 存在的问题
(1) 分片报文丢失一个,必须重传整个IP报文段。 //TCP有超时重传机制,但是UDP需要自己实现,只重发一个分片报文是不可能的,因为分片如果发生在中间的路由器上,原始系统无法知道数据报是如何分片的。
(2) 重组超时 //系统会为分片的报文分配内存,如果一直收不到完整的报文,那势必造成系统内存耗尽,攻击者可以利用这一特性攻击你的电脑, 解决办法就是在收到第一个分片报文的时候,就启动一个定时器, 收到新的分片报文也不重置, 超时之后就回复icmpv4超时消息,然后丢弃已经接收到的报文。