第21章 TCP的超时与重传
21.11 重新分组
当T C P超时并重传时,它不一定要重传同样的报文段。相反, T C P允许进行重新分组而发送一个较大的报文段,这将有助于提高性能(当然,这个较大的报文段不能够超过接收方声明的M S S)。在协议中这是允许的,因为 T C P是使用字节序号而不是报文段序号来进行识别它所要发送的数据和进行确认。
在实际中,可以很容易地看到这一点。我们使用 s o c k程序连接到丢弃服务器并键入一行。接着拔掉以太网电缆并再键入一行。当这一行被重传时,键入第 3行。我们预期下一个重传包含第2次和第3次键入的数据。
第1行和第2行显示了头一行(“hello there”)被发送及其A C K。接着我们拔掉以太网电缆并键入“line number 2”(1 4字节,包括换行)。这些数据在第3行被发送,并在第4和第5行被重传。
在第6行重传前,我们键入“ and 3”(6个字节,包括换行),并观察到这个重传包括 2 0个字节:键入的两行。当A C K在第9行到达时,它确认了这2 0字节的数据。