【复盘指南-计算机网络】你真的搞懂传输层了吗

本文介绍了TCP的可靠连接特性,重点讲解了TCP如何通过ACK机制、ARQ(自动重传请求)以及流水线机制确保数据的完整性和顺序性。在ACK机制中,发送方通过序号与接收方的响应确保数据传输;ARQ则在数据丢失时通过重传确保可靠性。流水线机制通过预发送多个数据段提高效率,但也会面临数据丢失和乱序的问题。文章提到了两种流水线实现方式:GBN(回退N步)和SR(选择重传),并讨论了它们在数据丢失时的处理策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面

hello~,周更小博主又来了(纯属是懒 ε=ε=ε=┏(゜ロ゜;)┛),本篇文章带领大家一起来看看传输层相关的知识。

1.可靠连接

1.1 TCP

都说tcp是面向连接的可靠的协议,那么为什么可靠呢?

tcp为什么可靠?

因为tcp保证了用户发送的数据的完整性、顺序性。你想想,如果传来的数据是乱序的,那么接受方收到的数据不就和发送方不一致嘛,哪能管这叫可靠?
乱序情况
11
丢失情况
在这里插入图片描述
重复情况
11

(比较抽象,画个简单的图,好丑ε=ε=ε=┏(゜ロ゜;)┛)

这问题又来了,tcp怎么保证数据的可靠呢?咳咳,我这就来解惑(认真脸)

你想想,要想发来的数据有顺序,那我要标识一下数据吧,你是你,他是他… 聪明的你一定想到了,排个序号呗。这不就分了先来后到。排完序号后,让接收方响应这个序号,那发送方就知道对方已经接受到刚才发送的数据啦,这就是ACK机制

好了,发来的数据已经有序了,那么当我们发现某个数据丢失的时候,是不是可以通过呼叫这个序号,告知发送方,再给我传一次呗。这就是ARQ(自动重传机制)

好了好了,到最后了,那收到重复的数据怎么办啊,不理不就行了。(笑)

下面让我们来看看这两种机制:

1.11 ACK

在这里插入图片描述(对不起,大家,我是真的讨厌画图…,就这样了…)

文字描述下:

sender 首先发送自己的数据的序号
reciver收到,并给予响应
sender得知自己发送的数据已经接受,接着可以发送下一个数据。

1.12 ARQ

在这里插入图片描述
文字描述下:
sender 首先发送自己的数据的序号
reciver收到,并给予响应ishi
sender得知自己发送的数据已经接受,接着可以发送下一个数据。
如果某个数据在发送过程中丢失,那么sender在设定的时间内没有收到对方的响应。就要重新发送一次改数据

思考下:
当ACK丢失了怎么办?或者ACK延时了怎么办?

好了好了,了解了上面两个机制,等于踏入了TCP实现可靠传输的大门。接下来我们继续来探索Tcp。

通过上图,大家能看出来,这样发送数据效率不高,发一次等一次,体验效果也不好。如果我们连续的发送数据,先不管对方的响应。这样行不行呢,那当然是可以的~
这其实就是流水线机制,常见的就是滑动窗口

1.13流水线机制

先看个窗口
这里我们假设窗口大小是4,也就是一次能发送4个数据(其实应该是报文段…)
在这里插入图片描述
那么流水线机制的工作原理是什么呢?

就是在窗口的范围内,不断发送数据,当收到一个响应的时候,窗口就想右边移动一格。这样效率不久提升上来了。

这只是简单的介绍了一下它的工作原理,实现呢,比这发杂的多…

流水线机制分为2种形式:

1.GBN(Go-Back-N)

先简单的介绍一下,GBN就是回退N的意思,其实这里主要是指重传已发却没有受到确认的N个分组。

这样讲,大家可能不是很明白,那么再补充一个概念:累积确认

累计确认:对按序到达的最后一个分组发送确认,表示到这个分组为止,所有的分组都已经接收到了。

其实这样做,也是为了提升效率,不用发一个回应一个。当然了,也不能一直推迟这不发送确认号,通常也设定了一个时间,超过这个时间,就要把自己已经收到的数据给响应下.(针对于接收方而言)

老环节,看图…(我恨画图)
在这里插入图片描述

移动移动
在这里插入图片描述
这里,博主只是简单的画了一下,实际情况可能不是图上这样的,比如ack=3,这里只是为了方便大家理解。

问题来了,当有个分组丢失了咋办?
在这里插入图片描述
图中pk4丢失了,那么我们的处理方法:

利用超时时间解决,一定时间内,一直收不到ACK=PK4,那么重传PK4

不知道大家注意到没,当收到pk5、pk6的时候,接收方并没有进行确认,而是直接丢弃这两个数据。那么当pk4重传的时候,pk5和pk6也要进行重传
这就是GBN的实现,当某个分组丢失的时候,需要重传改分组以及所有发送但是没有得到确认的分组

2. SR(select repeat)

SR看着这个英文,大家应该就能想到它的意思,选择重传。结合上面的GBN,大家是不是想到了什么?
每次,SR就是仅重传丢失的数据,而那么乱序到达的数据,SR机制会先缓存起来,并给予响应。

但是接收窗口是不会向前移动的,需要接收到这个丢失的数据,才会移动。

了解这些,对于接下来的tcp滑动窗口的学习会很有帮助,由于时间原因,博主暂时写到这里,后期来更新【这次一定,ε=ε=ε=┏(゜ロ゜;)┛】

如果错误,欢迎大家指针。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值