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(2) -> 正文阅读

[网络协议]运输层——无连接运输:UDP(2)

一、UDP特点

1.关于发送什么数据以及何时发送的应用层控制更为精细

2.无须连接建立
TCP在开始数据传输之前要经过三次握手。
UDP却不需要任何准备即可进行数据传输。

3.无连接状态
TCP需要在端系统中维护连接状态。此连接状态包括接收和发送缓存、
拥塞控制参数以及序号与确认号的参数

4.分组首部开销小
每个TCP报文段都有20字节的首部开销,而UDP仅有8字节
的开销。

二、UDP报文段结构

在这里插入图片描述
1.长度
指示了在UDP报文段中的字节数(首部加数据)
2.检验和
接收方使用检验和来检查在该报文段中是否出现了差错

三、可靠数据传输协议

1.肯定确认(positive acknowledgment)(ACK)
在通常情况下,报文接收者在听到、理解并记下每句话后可能会说“0K”

2.否定确认(negative acknowledgment) (NAK)
如果报文接收者听到一句含糊不清的话时,他可能要求你重复那句容易误解的话。

3.检验和
UDP检验和提供了差错检测功能。这就是说,检验和用于确定当UDP报文段从源到
达目的地移动时,其中的比特是否发生了改变(例如,由于链路中的噪声干扰或者存储在
路由器中时引入问题)

4.重传
接收方收到有差错的分组时,发送方将重传该分组文。

5.倒计数定时器
为了实现基于时间的重传机制,在一个给定的时间量过期后,可中断发送方。因此,发送方需要能做到:
①每次发送一个分组(包括第一次分组和重传分组)时,便启动一个定时器。
②响应定时器中断(采取适当的动作)。
③终止定时器。

6.序号
数据分组中添加一新字段,让发送方对其数据分组编号,即将发送数
据分组的序号(sequence mimbeC放在该字段。于是,接收方只需要检查序号即可确定收到的分组是否一次重传。
发送方接收到对同一个分组的两个ACK (即接收冗余ACK(duplicate ACK))后

检验和、序号、定时器、肯定和否定确认分组这些技术中,每种机制都在协议的运行中起到了必不可少的作用。

7.四种情况演示图
a)无丢包操作于分组丢失
在这里插入图片描述
b)丢失ACK和过早超时
在这里插入图片描述

四、流水可靠数据传输协议

1.停等协议
停等协议发送分组后,停下来等待分组发送完毕
在这里插入图片描述

2.流水线协议
流水线协议允许发送方发送多个分组而无须等待确认
在这里插入图片描述
3.流水线协议对可靠传输带来的影响
?必须增加序号范围,因为每个输送中的分组(不计算重传的)必须有一个唯一的
序号,而且也许有多个在输送中的未确认报文。

?协议的发送方和接收方两端也许不得不缓存多个分组。发送方最低限度应当能缓
冲那些已发送但没有确认的分组。如下面讨论的那样,接收方或许也需要缓存那
些已正确接收的分组。

?所需序号范围和对缓冲的要求取决于数据传输协议如何处理丢失、损坏及延时过
大的分组。解决流水线的差错恢复有两种基本方法是:回退/V步(Go Back N,
GBN)和选择重传(Selective Repeat, SR)

1.回退N步

在这里插入图片描述
随着协议的运行,该窗口在序号空间向前滑动。因此,/V常被称为窗口长度(window size) , GBN协议也常被称为滑动窗口协议(sliding-window protocol)

GBN发送方必须响应三类事件:

?上层的调用。
发送方首先检查发送窗口是否已满,即是否有N个已发送但未被确认的分组。如果窗口未满,则产生一个分组并将其发送,并相应地更新变量。如果窗口已满,发送方只需将数据返回给上层,隐式地指示上层该窗口已满。然后上层可能会过一会儿再试。在实际实现中,发送方更可能缓存(并不立刻发送)这些数据,或者使用同步机制(如一个信号量或标志)

?收到一个ACK。
在GBN协议中,对序号为几的分组的确认采取累积确认的方式,表明接收方已正确接收到序号为n的以前且包括n在内的所有分组。稍后讨论GBN接收方一端时,我们将再次研究这个主题。

?超时事件。
协议的名字“回退N步”来源于出现丢失和时延过长分组时发送方的行为。就像在停等协议中那样,定时器将再次用于恢复数据或确认分组的丢失。如果出现超时,发送方重传所有已发送但还未被确认过的分组。发送方仅使用一个定时器,它可被当作是最早的已发送但未被确认的分组所使用的定时器。如果收到一个ACK,但仍有已发送但未被确认的分组,则定时器被重新启动。如果没有已发送但未被确认的分组,停止该定时器。
在这里插入图片描述

2.选择重传

1.GBN的缺点
GBN本身也有一些情况存在着性能问题。尤其
是当窗口长度和带宽时延积都很大时,在流水线中会有很多分组更是如此。单个分组的差
错就能够引起GBN重传大量分组,许多分组根本没有必要重传。

2.选择重传(SR) 发送与接收方的序号空间
在这里插入图片描述

(1)发送方事件和动作

1?从上层收到数据。当从上层接收到数据后,SR发送方检查下一个可用于该分组的序号。如果序号位于发送方
的窗口内,则将数据打包并发送;否则就像在GBN中一样,要么将数据缓存,要么将其返回给上层以便以后传输。
2. 超时。定时器再次被用来防止丢失分组。然而,现在每个分组必须拥有其自己的逻辑定时器,因为超时发
生后只能发送一个分组。可以使用单个硬件定时器模拟多个逻辑定时器的操作[Varghese 1997]。
3. 收到ACK。如果收到ACK,倘若该分组序号在窗口内,则SR发送方将那个被确认的分组标记为已接收。
如果该分组的序号等于send_base,则窗口基序号向前移动到具有最小序号的未确认分组处。如果窗口移动了并且
有序号落在窗口内的未发送分组,则发送这些分组。

(2)接受方事件和动作

1.序号在[rcv_base, rcv_base +/V - 1 ]内的分组被正确接收口在此情况下,收到的分组落在接收方的窗口
内,一个选择ACK被回送给发送方。如果该分组以前没收到过,则缓存该分组。如果该分组的序号等于接收窗口
的基序号(图3?23中的mjbase).则该分组以及以前缓存的序号连续的(起始于rcv^base的)分组交付给上层。
然后.接收窗口按向前移动分组的编号向上交付这些分组。举例子来说,考虑一下图3?26。当收到一个序号为
rcv.base = 2的分组时,该分组及分组3、4、5可被交付给上层。
2.序号在[rcv_base -/V, rcv_base - I ]内的分组被正确收到。在此情况下,必须产生一个ACK,即使该分组
是接收方以前已确认过的分组。
3.其他情况。忽略该分组。

在这里插入图片描述

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

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