计算机网络的一些常见概念

第三章

  1. rdt1.0:可靠信道上的可靠数据传输,不会发生任何差错;FSM如下:
    rdt_send():接收到上层的数据,这一个事件,就有了下面的动作,即,封装make_pke()和发送udt_send();
    rdt_rcv():接收到这个包,这是一个事件,就有了下面的动作:即,解封extract()和上交deliver_data()计算机网络的一些常见概念
  2. rdt2.0:比特差错信道上的可靠数据传输,即,数据都可以接收得到,有可能产生比特错,比如打电话时,你说话对方听得到但是听不清楚,要求重新说。
  3. 基于重传机制的可靠数据传输协议称为自动重传请求协议ARQ,其差错机制需要给分组附加额外的比特一起发送。如rdt2.0协议,分组增加检验和checksum字段。
  4. rdt2.0较rdt1.0增加了采用了差错检测、肯定确认与否定确认及重传
    (1)、等待上层数据 ->上层数据传来rdt_send(data) ->计算校验和,封装成分组make_pkt(data,checksum) ->发送分组udt_send(sndpkt);
    收到ACK分组
    rdt_rcv(rcvpkt) && is ACK(rcvpkt) -> 返回初始状态
    收到NAK分组
    rdt_rcv(rcvpkt) && is NAK(rcvpkt) ->重传上次发送的分组udt_send(sndpkt) ->等待ACK或NAK
    corrupt():即分组出错。
    rdt2.0无差错时的操作流程:
    计算机网络的一些常见概念
    有差错时的操作流程:
    计算机网络的一些常见概念
  5. rdt2.0协议解决了分组出错的问题,但是如果返回的ACK或者NAK出现了问题,发送方无法知道接收方是否正确接收了上一块数据。
  6. 处理ACK或者NAK受损的方法:
    (1)增加足够的检验和比特:使接收方不仅可以检测差错,还可进行恢复。适用于会产生差错但不丢失分组的信道。
    (2)当发送方收到含糊不清的ACK或NAK分组时: 只简单地重发当前数据分组。但是简单重发会导致产生冗余分组,即,收到了含糊不清的ACK,再次重发此分组,从而导致冗余,给分组添加一个序号字段,可解决
  7. 停等协议:只需用一个比特,即“0”和“1”两种不同的序号。
  8. rdt2.1:rdt2.0的改进,可处理冗余分组,将分组01交替编号。
    计算机网络的一些常见概念
    计算机网络的一些常见概念
    执行流程跟rdt2.0类似。
  9. 接收方收到受损的分组时,丢弃,**不发送NAK,改为发送一个对前一个正确接收分组的ACK。**rdt2.2实现无NAK的可靠数据传输;
    发方: isACK(rcvpkt,0/1) ,收方: make_pkt(ACK,0/1,checksum)
    rdt2.2与rdt2.1的发送方类似;
    rdt2.2的接收方如下()因为无NAK与ACK之分,所以接收方的左右两边对应的两种差错可以合并成一个计算机网络的一些常见概念
  10. rdt3.0:具有比特差错的丢包信道上的可靠的数据传输,超时重发:由发送方负责检测丢包和恢复,即,发送方发送一个数据分组后,等待一定时间,如果该段时间内没有收到ACK,则重传分组。
    计算机网络的一些常见概念