Q:什么是finite state machines (FSM)? A:FSM(Finite State Machine),有限状态机,其在任意时刻都处于有限状态集合中的某一状态。下面的针对sender以及receiver的状态分析图就是FSM
RDT 1.0:
RDT 1.0协议是在理想情况下 - no bit errors - no loss of packets
Acknowledgements (ACKs): receiver explicitly tells sender that pkt received OK Negative acknowledgements (NAKs): receiver explicitly tells sender that pkt had errors
这里面提到了Stop and wait protocols 就是说等sender给receiver发送了一个数据包以后,需要等待reciever反过来发送给ACK或者NAK。只有收到的receiver的信息以后sender才会继续发送给第二个数据包或者重新发送上一个数据包。
因为对于RDT 2.0来说,receiver就算接收到了ACK或者NAK,也不知道是哪个数据包(retransmission的数据包 or 当前的数据包) 因此RDT2.1引入了一个 sequence number(0 or 1) 发送方添加序列号到每个pkt,接收方检查这个序列号,以确定是否收到的包是一个重传,接收方丢弃(不交付)重复的pkt
RDT 2.2跟RDT 2.1不同的地方在于RDT 2.2只是使用一个ACK而不使用NAK E.g. 如果接收方接收到0号数据包,返回(ACK,1),发送方接着发送1号数据包。如果接收方接收到0号数据包出现错误,返回(ACK,0),发送方重传0号数据包。
RDT 3.0:
rdt3.0在rdt2.2的基础之上在处理了数据包丢失的情况中增加了 Countdown Timer的机制,如果在(RTT+Processing time at receiver)时间段内,发送方没有接收到反馈信息,那么发送方默认数据包已经丢失了,会自动重传。
Reference:
[1]JamesF.Kurose, and KeithW.Ross. 计算机网络:自顶向下方法. 机械工业出版社, 2009. [2]https://www.zhihu.com/question/366259154/answer/983403348