计算机网络重要机制(一)可靠数据传输

来源:互联网 发布:2017编程语言薪资 编辑:程序博客网 时间:2024/05/22 15:03

操作系统,计算机网络都属于计算机系统,为了使得整个系统运行起来,人们根据当时的硬件条件和理论认识设计了各种的算法(也可以叫机制),这些机制有些被抛弃,有些被进化。所以操作系统、计算机网络里面的内容概括起来就是:条件(已知)、问题(未知)----》算法----》实现;在具体实现的时候为了配合算法设计了各种精巧的数据结构。《计算机网络重要机制》系列总结的是自己学习计算机网络中的重要机制,材料主要参考《计算机网络自顶向下》和网上资料,叙述方式就是上面的框架。


1,传输的基本流程图如下所示:


图1

2,下面要解决传输中两个问题:丢包、坏包(01bit发生翻转),要使用到的工具是数学中的有限状态机如下图:


图2

3,假设说网络层的传输是没有问题的,如图1b图,那应该怎样设计我们的传输层协议呢?如下图:


图3


4,假设网络层中传输过程中存在包被破坏(01翻转)且接收方还能收到这个坏包,那么上面的1.0协议该如何改进呢,如下图:


图4



5,上面的rdt2.0没有考虑NAK/ACK包在传输中被破坏且还能被发送方接受到的问题,未解决这个问题为每个数据包增加了1bit位的序列号,即0或1,rdt2.1如下图:因为增加了两个序列号,所以rdt2.1的状态是2.0状态的二倍,此时从图上已经感觉到略显复杂,其实并不复杂,就是把2.0版本重复一次而已(但并不完全一样),还有这个图是可以简化的。


图5


图6

6,观察图6知道,receiver在收到坏包时,会向sender发送NAK,receiver收到上一个包(重复包)时,会向sender发送ACK,但是目的都是一样,需要sender送正确的当前包,所以这两个情况可以合并起来考虑,那怎么合并呢,其实很简单,就是出现上面两种情况时,都发送上一个包的ACK(此时的ACK也带有序列号01了),这样sender也稍微调整一下就可以了。如rdt2.2下图:


图7


图8

jj














阅读全文
0 0
原创粉丝点击