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协议——可靠传输的原理

0. 前语

在上一节中,我们说到TCP协议有以下特点:

  • 面向连接
  • 可靠交付的服务
  • 全双工通信、字节流、点对点

这一节,我们来分析一下TCP是如何实现可靠交付的。在弄清楚这个问题,我们要首先明白以下几个问题:

a. 要可靠交付什么?

答:TCP传输的是字节流(也就是从进程流进流出的字节序列)。这里有两个很重要的概念约束1.字节和2.序列

b. 什么是可靠交付?

答:因为传输的是字节流,可靠交付需要保证以下的情况:

  1. 无差错:也就是字节要不能改变。不能发You are sweet, 但是却收到了You are sweat
  2. 不丢失:也就是字节不能丢失。不能发bite,但是却收到了bit
  3. 不重复:也就是字节不能变多。不能发as,但是却收到了ass
  4. 按序到达:也就是字节的顺序不能变。不能发ADC, 却收到了 DAC

c. 为什么是TCP来实现可靠交付?

答:因为传输层之下,包括网络层、数据链路层和物理层,都是尽最大可能交付。所以要完成可靠交付,还得自己亲力亲为。

1. 可靠传输的工作原理

1.1 停止等待协议——有问有答

把发送数据的一方叫做发送方A,把接收数据的一方叫做接收方B。在停止等待协议中,双都是懂礼貌的人。

  • 接收方每次接收到数据的时候,都会回复一声。
  • 发送方每次要等上一个回复了才发送下一个。

a. 出现差错时候

但是由于底层的各种原因,发送和接收不会总是这般丝滑,总会有一些差错。这时一个很重要的机制保证了差错可以被恢复——超时重传

  • A: 发送数据
  • B:校验发现错误,丢弃,不做处理
  • A:等待超时,重新发送
  • B:校验没有错误,发送确认信息

b. 确认丢失和确认迟到

除了出现差错,接收方可能接收到正确的信息,但是在发送确认信息时候可能会出现以下情况:

  1. 确认信息丢失了
    • 在这种情况中,发送方A会因为超时重新发送M1
    • 这是接收方会丢弃重复的M1,冲洗发送确认信息
  2. 确认信息发送延迟了
    • 在这种情况中,接收方发送的确认信息会经过一个延迟到达A
    • 发送方A接收到信息之后,什么也不做

这种确认重传的机制,可以保证在不可靠网络上实现可靠的通信,而这种可靠传输的协议又被称为自动重传请求协议 ARQ

1.2 连续ARQ协议

缺点

在上面的情况中,虽然可以保证可靠,但是有一个缺点——

这种一来一回将会耗费大量的时间。

改进

类似于CPU中的流水线工作,人们想到一种连续传输的方法。

滑动窗口协议

在发送方中,会有一个发送窗口

  • 只有在发送窗口中的分组才可以发送
  • 在收到第一个确认信息之后,就可以将滑动窗口向后移一个位置
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 11:18:35  更:2022-01-24 11:20:19 
 
开发: 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年10日历 -2024/10/5 9:21:43-

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