IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> TCP的可靠传输実现 -> 正文阅读

[网络协议]TCP的可靠传输実现

累积确认方式:

接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都已正确收到了。

优点:容易实现,即使确认丢失也不必重传。

缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息。

以字节为单位的滑动窗口

设发送方是A,接收方是B。

在没有收到B的确认情况下,A可以连续把窗口内的数据都发送出去。凡是 已发送过的数据,在未收到确认之前都必须暂时保留,以便在超时重传时使用。

A的发送窗口一定不能超过B的接收窗口数值。

发送方的发送窗口大小还要受到当时网络拥塞程度的制约。

发送窗口后沿的后面部分表示已发送且已收到了确认。不需要再保留这些数据了。 发送窗口后沿不可能向后移动,因为不能撤销已收到的确认。发送窗口前沿通常是不断向前移动的,但也有可能不动,这对应于2种情况:①没有收到新的确认;②收到了新确认,但对方通知的窗口缩小了,使得发送窗口前沿正好不动。

TCP标准强烈不赞成发送窗口向后收缩。

A发送的数据若没有得到B的确认,为了保证可靠传输,A只能认为B还没有收到这些数据。则,A经过一段时间(由超时计时器来控制的)就重传这部分数据 , 重置超时计时器,直到B的确认为止。如果A收到的确认号落在发送窗口内,那么A就可以使发送窗口继续向前滑动,并发送新的数据。

如果收到的分组被检测出有差错,则要丢弃。若接收应用程序来不及读取收到的数据,接收缓存最终会被填满,使得接收窗口减小到零。反之,若接收应用程序能够及时从接收缓存中读取收到的数据,接收窗口就可以增大,但最大不能超过接收缓存的大小。

由以上所讨论,还要强调以下3点:

一、虽然A的发送窗口是根据B的接收窗口设置的,但于同一时刻,A的发送窗口并不总与B之接收窗口一致大。这是因为通过网络传送窗口值需要经历一定时间滞后(这个时间还是不确定的)。另外,发送方A还可能根据网络当时的拥塞情况适当减小自己的发送窗口数值。

二、对于不按序到达的数据应如何处理,TCP标准并无明确规定。 通常为了提高网络资源的利用率,TCP对不按序到达的数据是先临时存放在接收窗口中,等到字节流中所缺少的字节收到以后,再按序交付上层应用程序

三、TCP要求接收方必须有累积确认的功能,这样可以减小传输开销。接收方可以在合适的时候发送确认,也可以在自己有数据要发送时把确认信息顺便 捎带。但请注意两点:一是接收方不应过分推迟发送确认,否则会导致 发送方不必要的重传,这反而浪费了网络资源。TCP标准规定,确认推迟的时间不超过0.5秒。若收到一连串具有最大长度的报文段,则必须每隔一个报文段就发送一个确认[RFC 1122]。二是捎带确认实际上并不经常发生,因为大多数应用程序很少同时在两个方向上发送数据。

? ? ? ? 最后再强调一下,TCP的通信是全双工通信。通信中的每一方都在发送和接收报文段。因此,每一方都有自己的发送窗口和接收窗口。在谈到这些窗口时,须一定要弄清楚是哪一方的窗口。

?

?

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:56:55  更:2022-03-24 00:57:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:38:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码