本问题来自于《计算机网络:自顶而下方法(第5版)》第三章复习题R9。
Q:在我们的rdt/TCP协议中,为什么需要引入序号?
- 首先给出rdt语境下序号的定义:序号(sequence number)是数据分组中的一种字段。接收方通过检查序号,知道收到的分组是否是一次重传(之前已收到过这个分组,则拥有相同序号)。
- 起因:网络层是不可靠的,通过引入序号实现重传,
- 引入序号的目的:提供端到端的可靠传输。
- 总结:序列号的作用是为了同步数据。客户端向服务端发送数据报文,服务器收到后会回复一个带有ACK标志的确认报文段。客户端收到该确认报文段,就知道数据已经成功发送,否则,报文会被重发。
题外话:序号的空间与窗口长度大小有关。停等模式中,序号只需要一个bit就可以了(0/1,序号空间为2),因为此时窗口长度为1。流水线模式下,最少得有窗口长度翻倍的序号空间。
参考:TCP/IP 协议及其应用