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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 运输层(一) -> 正文阅读

[网络协议]运输层(一)

目录

运输层与网络层关系

多路复用与分解???

无连接运输:UDP

描述?

特点?

报文结构?

检验和?

步骤

出现差错处理?

提供检验和原因?

可靠数据传输原理

构造可靠数据传输协议?

经完全可靠信道:rdt1.0

经具有比特差错的信道:rdt2.0?

经具有比特差错的信道:rdt2.1

经具有比特差错的信道:rdt2.2?

经具有比特差的丢包信道:rdt3.0

rdt3.0 运作情况?

流水线可靠数据传输协议

回退 N 步

选择重传


运输层与网络层关系

1.运输层为运行在不同主机上的应用进程之间提供了逻辑通信(logic communication)。?

2.网络层提供了主机之间的逻辑通信。

3.运输层协议能够提供的服务往往受限于底层网络层协议;运输层能否为进程间应用层报文提供时延或带宽保证,取决于网络层能否为主机间运输层报文提供时延或带宽保证。

4.运输层分组称为"报文段";网络层为"数据报"

多路复用与分解???

1.多路复用:源主机从不同套接字收集数据块,并为每个数据块封装上首部信息从而生成报文段,将报文段传递到网络层。

2.多路分解:在接收端,运输层检查某几个字段,标识出接收套接字,进而将报文段定向到套接字。?

3.UDP 套接字由一个二元组全面识别(目的 IP 地址,目的端口号);当两项全部相同,则通过相同的目的套接字被定向到相同的进程;即使源 IP 地址和源端口号都不相同,也会通过相同的套接字。

4.TCP 套接字由一个四元组全面识别(源 IP 地址,源端口号,目的 IP 地址,目的端口号);当四项全部相同,才通过相同的目的套接字被定向到相同的进程;源 IP 地址或源端口号不相同都会通过不同的套接字(相同进程不同线程),除非 TCP 携带了初始创建连接的请求。

无连接运输:UDP

描述?

不提供不必要服务的运输层协议,仅提供复用/分解服务(网络层与正确的应用级进程之间传递数据)以及少量的差错检测。?

特点?

1.无连接:不需要三次握手,不会引入建立连接的时延。

2.无连接状态:TCP 连接状态包括接收/发送缓存、拥塞控制参数、序列号、确认号;UDP 不维持连接状态也不追踪这些参数;某些应用程序运行在 UDP 上,支持更多活跃用户

3.应用层控制数据发送:UDP 收到数据就会打包进 UDP 报文段并立即传递给网络层。

4.不可靠数据传输:不保证报文将到达接收进程,报文可能乱序到达。

5.分组首部开销小:TCP 20 字节,UDP 8 字节。

报文结构?

1.源端口号:2 字节

2.目的端口号:2 字节

3.长度:字节数(首部 + 数据)。2 字节

4.检验和:接收方使用检验和来检查报文段中是否出现差错。2 字节

5.应用数据(报文):?如 DNS 应用,查询报文或响应报文。

检验和?

步骤

1.将前三个字段相加求和。

2.将和取反码与检验和相加,若结果为:1111111111111111,则没有引入差错

出现差错处理?

1.对差错无恢复能力。

2.丢弃受损报文段或将受损报文段交给应用程序并给出警告。?

提供检验和原因?

1.不能保证源和目的之间的所有链路都提供差错检测。

2.报文段存储在某台路由器的内存中时,也可能引入比特差错。

3.端到端原则(end-end principle):某种功能(此时为差错检测)必须基于端到端时间,"与在较高级别提供这些功能的代价相比,在较低级上设置的功能可能是冗余的或几乎没有价值的。"?

可靠数据传输原理

构造可靠数据传输协议?

经完全可靠信道:rdt1.0

1.不会出现差错

2.不会丢失分组?

经具有比特差错的信道:rdt2.0?

? ? 1.差错检测。

? ? 2.接收方反馈:肯定确认 ACK(positiv acknowledge)/否定确认 NAK(negative acknowledge)。

? ? 3.重传:接收方收到有差错的分组时,发送方收到 NAK,将重传该分组。?

如上为自动重传(Automatic Repeat reQuest)协议。

发送方等待 ACK/NAK 时,只有接收到 ACK 并离开该状态,才能继续从上层获取数据;等停(stop-and-wait)协议。?

经具有比特差错的信道:rdt2.1

? ? 1.考虑到 ACK 或者 NAK 分组受损的可能性。

? ? 2.分组中添加一个新字段:分组的序号

? ? 3.对于等停协议,只需要 1 比特序号(模 2 运算);接收方与最近的一个分组序号进行比较,来判断是重传分组或是新分组。

rdt2.1:接收方对受损分组发送 NAK,对失序分组发送 ACK。

经具有比特差错的信道:rdt2.2?

?

rdt2.2:无 NAK 的可靠数据传输协议,接收方必须包括由一个 ACK 报文所确认的分组序号发送方检查 ACK 所确认的分组序号,接下来发送与该序号不同的新分组

经具有比特差的丢包信道:rdt3.0

1.每次发送一个分组时,便启动一个定时器(包括重传)。

2.超时,响应定时器中断,重传分组。

3.分组被成功接收,终止定时器。

rdt3.0 运作情况?

1.分组丢失与 ACK 丢失都将导致超时,重发分组。

2.定时器设置不合理,可能出现过早超时;会出现冗余分组与冗余 ACK,接收端会检查 ACK 所确认的分组序号,若与最近一次相同(冗余 ACK),则不予处理。?

3.分组序号在 0 和 1 之间交替,因此 rdt3.0 有时被称为比特交替(alternating-bit)协议

流水线可靠数据传输协议

定义?

1.停等协议,需要收到对当前分组的 ACK 时,才能发送下一个分组;性能极差。

2.流水线(pipelining)技术,允许连续发送多个分组,无需等待确认;利用率能提升数倍。

回退 N 步

1.回退 N 步(GBN),滑动窗口协议(sliding-window protocol)。

2.N:窗口长度。

3.base:基序号(最早未确认分组);该分组得到确认后,窗口向前滑动。

4.nextseqnum:下一个序号(最小未使用序号);<?base + N。

?

?1.上层调用 rdt_send:发送方先检查窗口是否已满即是否已有 N 个已发送但未被确认的分组;未满时,产生一个分组并将其发送,更新相应的变量。

2.收到一个 ACK:对序号为 n 的分组的确认采取累计确认(cumulative acknowledge),表明序号为 n 及以前的分组都已被正确接收。

3.超时:发送方将重传已发送但未被确认的分组;即 base 以及往后的分组(回退 N 步)。

4.接收方按序接收:收到序号为 n 的分组,假如最近按序接收的分组为 n - 1,则为分组 n 发送一个 ACK 并交付给上层,设置下一个按序接收的分组为 n + 1;否则,丢弃分组 n,并为最近按序接受的分组重新发送 ACK。

选择重传

1.选择重传(SR);发送方只重传丢失或受损的分组

2.每个分组都拥有自己的逻辑计时器,为了超时发生,只发送一个分组。

3.失序分组将被缓存;直到更小的分组都被接收(从 rcv_base 开始连续的),此时将一批分组上交给上层;接收窗口向前滑动。

4.[rcv_base - N,rcv_base - 1] 内的分组被正确收到,必须产生一个 ACK;因为之前对序号在 [rcv_base - N,rcv_base - 1] 的确认 ACK 可能丢失,此次为重传,接收端收不到确认,则会一直重传并且窗口也无法向前滑动

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-29 13:25:46  更:2021-10-29 13:26:49 
 
开发: 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年7日历 -2024/7/1 21:07:28-

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