尽管 IP 分片看起来是是透明的,但有一点让人不想使用它:即使只丢失一片数据也要重传整个数据报。为什么会发生这种情况呢?
因为 IP 层本身没有超时重传的机制——由更高层来负责超时和重传( TCP 有超时和重传机制,但 UDP 没有。一些 UDP 应用程序本身也执行超时和重传)。当来自 TCP 报文段的某一片丢失后,TCP 在超时后重发整个 TCP 报文段,该报文段对应于一份 IP 数据报。没有办法只重传数据报中的一个数据片。事实上,如果对数据分片的是中间路由器,而不是起始端系统,那么起始端系统就不无知道数据报是如何被分片的,因为这个原因,经常要避免分片。
注意:把一份 IP 数据报分片以后,只有到达目的地才进行重新组装(这里的重新组装与其他的网络协议不同,它们要求在下一站就进行重新组装,而不是在最终的目的地)。重新组装由目的端的 IP 层来完成,其目的是使分片和重新组装过程对运输层 ( TCP 和UDP ) 是透明的,除了某些可能的越级操作处。已经分片过的数据报有可能会再次进行分片(可能不止一次)。IP 首部中包含的数据为分片和重新组装提供了足够的信息。