Distributed
正是因为我们所使用的计算机网络从集中式变成了分布式,我们才需要各种通信协议来保证在网络中信息的正常流通。所以一切网络通信的问题,都可以从这个词出发考虑其形成的原因。Know How之后再去设计可以从根本避免很多错误。
Timeout
在Stop-and-wait ARQ中,如果发生有包丢失的错误情况,会使efficiency大大降低。为了提高通信网络的效率,我们引入了Timeout,但是其长短的选择会影响协议的设计。在设计之前,我们通常借助图形来直观地表现出Sending和Recieving双方的交互关系,这种图具有三个要素:收发方、时间方向及箭头指示。而交互关系可以帮助我们更加方便地处理变量的关系、计数器的取值等。
Overhead
当完成一件事情时往往需要投入一些额外的隐形成本,如企业的五险一金等。通信的成本与金钱挂钩,当Retransmission时产生的overhead也需要我们考虑进去。
Correctness & efficiency
这是衡量一种协议的重要指标。
- Correctness: Does the protocol succeed in releasing each packet, once and only once, without errors, from the receiving DLC to the higher layer?
- Efficiency: How much of the bit-transmitting capability of the bit pipe is wasted by unnecessary waiting and by sending unnecessary retransmissions?
附:Liveness: finite delay given available packets to send
Piggypacking
通信交互的双方一般不是单向的,在双向的传输中,会将Sequence Number和Request Number(两者相互独立)打包在一起发送,一次传输同时实现接收方和发送方的功能。这是提高Effciency的重要手段。