数据包分离和重新组装

翻译:Liu Zehua

    版权所有,1987,Charles L. Hedrick. 任何人在符合下列条件下可以复制这份文档的一部分或者全部:(1) 任何对本文档的完整复制或再版必须注明 Rutgers University是该文档的来源,同时附上本布告;(2)任何其它对本文档的使用必须提及本文档以及Rutgers University,以及说明本文档为Charles Hedrick版权所有,而且是在许可之下使用。

    TCP/IP是设计来使用于不同种类的网络。不幸的是,对大的信息包应该是怎样,不同网络的设计者有不同的看法。以太网信息包可以长达1500字节(八位字节)。ARPA网的却最多只有大约1000字节。一些非常快的网络有大更多的信息包大小。首先,你可能以为IP只需要尽可能小的大小。可是,这会导致严重的性能问题。当传送大文件时,大的信息包比小的要有效率得多。所以我们需要能够使用尽可能大的信息包大小。但是我们也需要可以处理有信息包大小限制的网络。对于这一点,有两种方法。第一,TCP能够协商数据包的大小。当打开一个TCP连接时,连接的两端可以传送他们能够处理的最大数据包大小。比较小的一个就被采用。这种方法允许两个可以处理大数据包的网络使用大的数据包,同时允许他们和不能处理大数据包的网络通讯。可是,这并没有彻底解决问题。最严重的问题是连接的两端不需要知道这其中所有的步骤。例如,当在Rutgers()和Berkeley(柏克利大学)之间传送数据时,两端的计算机都在以太网上的可能性很高。因此两端都可以处理1500字节的数据包。但是,建立起来的连接同时需要经过ARPA网。ARPA网不可以处理那么大的数据包。因为这一点,很多方法可以用来把数据包分成几部分。(这个叫做“分段”(fragmentation)) IP头信息包含了该数据包是否可以分离以及怎样可以把分离的个部分重新合并的完整信息。如果一个网关连接一个以太网到ARPA网,它必须接收1500字节的以太数据包,把它分离成几部分,再把这些转换成可以在ARPA网上用的包。此外,每一个应用TCP/IP的主机都必须可以接收这种已经分离的部分并把他们重新组合。这个叫做“重新组装”(reassembly)。

    不同的TCP/IP应用在怎样确定使用什么数据包大小这一方面并不一致。很多 TCP/IP应用使用576字节的数据包,当它们不能确认整个传输路径都可以处理大数据包。使用这个相当保守的策略是因为有很多TCP/IP应用的重新组装的程序有问题。应用者通常要避免分段的出现。不同的应用者有不同的途径去决定什么时候可以使用大数据包。有一些人只在局域网使用大数据包。其他人会在同一个校园内的网络之间使用。576字节是一个“安全”的大小,这是每一个TCP/IP应用所必须支持的.