Reliable Data Transfer Protocol 的原理剖析

本文深入探讨了在网络环境中实现可靠数据传输的原理,从完美可靠的通道开始,逐步引入比特错误、丢包等问题,并详细介绍了stop-and-wait协议、Go-Back-N和Selective Repeat等解决方案。通过分析FSM,揭示了TCP如何应对复杂网络挑战,实现数据的可靠传输。
摘要由CSDN通过智能技术生成

引言

相信了解网络的人都知道,TCP 是一个 Reliable Data Transfer 的协议,那么在如此复杂的网络环境下,TCP 是如何实现这个功能的?在这篇文章中,我不会把 Reliable Data Transfer 局限在 TCP 上,我会介绍它的原理,以及实现这样的功能我们需要做哪些事情。为了更好地理解下面的内容,你需要下面的背景知识:

1、你需要看 Finite-state machine,从而了解它表示的含义

2、基本的网络知识,建议你读 Computer Networking: A Top-Down Approach 的第一章,如果是你第一次接触网络,它会对你帮助很大

3、了解1之后,理解下面这段话,你就可以完全理解下文中出现的 FSM

The event causing the transition is shown above the horizontal line labeling the transition, and the actions taken when the event occurs are shown below the horizontal line. When no action is taken on an event, or no event occurs and an action is taken, we’ll use the symbol Λ below or above the horizontal, respectively, to explicitly denote the lack of an action or event. The initial state of the FSM is indicated by the dashed arrow.

本文中的内容参考 Computer Networking: A Top-Down Approach,这是非常棒的关于计算机网络的书,相信读过之后,你一定会爱上它的。

Reliable Data Transfer over a Perfectly Reliable Channel

在现代这样复杂的网络环境下,我们发送的 packets 很可能丢失, corrupted(flipped from 0 to 1, or vice versa),或者被重排序,在我们这篇文章讨论的范围中,我们假设所有底层 channel 不会重排序 packets. 在这个小节中,我们假设底层 channel 是完全 reliable 的,我们可以用下面的 FSM 来描述 reliable data transfer 协议:

reliable data transfer

从上面的协议中可以看出,协议的 sending side 只需要接收应用层发来的数据,然后打包发给底层的这些协议; 而协议的 receiving side 只需要接收底层协议传来的 packet ,然后抽取出相应的数据并传递给上层的应用。这个协议只所以这么简单,是因为我们已经假设底层的 channel 不会丢失也不会 corrupt 传递的这些 packet.

Reliable Data Transfer over a Channel with Bit Errors

在这个小节中,我们会认为底层的 channel 有可能 corrupt 传递的 packet,因此我们需要一些额外的机制去消除这样的错误。在介绍如何解决这个问题之前,大家先想一想这个场景:你写一封情书给你所暗恋的人,假设她叫白洁,由于你很害羞,然后你通过一个中间人把这封信给白洁,那么现在问题来了,你如何确定这个中间人是否修改了你写的这封信?其实很简单,我们只需要下面3个能力就行&#x

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值