自学计算机网络系列,如果如果出现错误,还请给大佬指正。
写在前面:这里是小王成长日志,一名普通在校大学生,想成学习之余将自己的学习笔记分享出来,记录自己的成长轨迹,帮助可能需要的人,平时博客内容主要是一些系统的学习笔记,项目实战笔记,一些技术的探究和自己的一些思考。欢迎大家关注,你们的每一个评论点赞关注我都会仔仔细细去看的。有任何问题欢迎交流,我会尽我所能帮助大家的,共创CSDN美好环境。
0.引入
- 可靠数据传输的问题并不仅仅在运输层出现,也会在链路层以及应用层出现,网络中会出现很多"一般性问题",但可靠数据传输在其中尤为重要。
- 可靠数据传输提供的服务:数据可以通过一条可靠的信道进行传输 。 借助于可靠信道,传输数据比特就不会受到损坏(由 0 变为 1 ,或者相反)或丢失,而且所有数据都是按照其发送顺序迸行交付 。
- 接下来贯穿我们讨论始终的一个假设是分组将以它们发送的次序进行交付,某些分组可能会丢失;这就是说,底层信道将不会对分组重排序 。
- 定义明晰:
有限状态机,(英语:Finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。接下来我们会不断讨论实现可靠数据传输的发送方和接收方的有限状态机。
1. 经完全可靠信道的可靠数据传输: rdt 1.0
1.1) rdt1.0中的假设与两个有限状态机的图例
首先假设底层信道是完全可靠的,这种情况下的协议是非常简单的,直接上图
- 上图显示了 rdt 1. 0 发送方和接收方的有限状态机( Finile- State Machine , FSM) 的定义 。
- rdt 的发送端只通过 rdt_send ( data) 事件接受来自较高层的数据,产生一个包含该数据的分组(经由 make_pkt( data) 动作) ,并将分组发送到信道中 。
- 在接收端, rdt通过 rdt_rcv( packet) 事件从底层信道接收一个分组,从分组中取出数据(经由 extract ( packet , data) 动作) ,并将数据上传给较高层(通过 deliver_data( data) 动作) 。