我试图了解TCP中的传输和ACK如何工作。 在这个图中,当A重新发送seq 100后,他收到三个重复ACK,B将用121 ACK或158 ACK应答? 
重传的话题已经在networking和相关的文献中被广泛地logging下来,所以对于由于段超时过期而导致的重传的情况,我只是想用一些数据包捕获的例子来引用Novell文档 :
TCP通过发送确认接收到的数据段来实现可靠性。 […] [T]在重传超时检测到段丢失后,发送方被迫重新传输所有段。
[…]
图3描述了一个TCP跟踪,其顺序字节直到顺序号2028597920被正确接收,此时有一个段丢失。 不知道这个损失,发件人继续发送数据到2028605220,此时它再次丢失数据段和整个数据pipe道,重新发送到2028605220。 这导致实际成功接收的五个分组的重传。

pipe道的典型重传和排水。
通过使用select性确认scheme,接收方可以有select地确认丢失后收到的分段。 发送者然后只需要重发丢失的段。 这些丢失的段或分组在数据stream中也被称为“空洞”。
如果您只按照RFC 2581查看快速重传/快速恢复特性,则重传行为会有所不同。 HOST B将发出重复的ACK,根据你的数字暗示向一个段需要重发的HOST A 当然,它也会接收和缓冲接收窗口大小的后续段 – 这就是段重新sorting机制的工作原理。 在接收到丢失的段时,重新sorting机制将能够组装stream,并且HOST B的堆栈将确认最后接收到的段(157)。