当前位置: 首页 > news >正文

五传输层TCPUDP-思考题-停止等待-ARQ-滑动窗口

关键词:停止等待,ARQ,滑动窗口,慢启动

1:传输层的基本功能是什么?说明传输层和网络层的关系

传输层的基本功能主要包括以下几点:

  1. 连接建立:传输层负责建立连接,确保数据的可靠传输。
  2. 数据分割与重组:传输层将应用层发送的数据分割成适合传输的报文段,并在目的主机上将接收到的报文段重新组装成完整的数据。
  3. 流量控制:通过流量控制机制来控制发送方向接收方发送数据的速率,以保证接收方能够及时处理接收到的数据。这主要基于滑动窗口协议,发送方和接收方各自维护一个窗口,用来控制发送和接收的数据量。
  4. 拥塞控制:用于控制网络中的拥塞程度,避免过多的数据注入到网络中而导致网络性能下降。

此外,传输层协议还在不同主机上的应用进程之间提供了逻辑通信功能,并为运行在不同主机上的进程提供了逻辑通信。它确保数据在发送和接收之间的完整性和可靠性,提供了差错控制、流量控制及故障恢复功能。

至于传输层和网络层的关系,两者在网络通信中各有其职责。网络层负责IP数据报的产生以及IP数据包在逻辑网络上的路由转发。这主要是通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。而传输层则位于网络层之上,利用网络层提供的服务,通过传输层地址提供给高层用户传输数据的通信端口,确保数据能够可靠地传送到相应的端口(端到端)。

简言之,网络层关注的是主机之间的逻辑通信,而传输层关注的是运行在不同主机上的进程之间的逻辑通信。

2.TCP协议和UDP协议的主要特点是什么?

TCP

UDP

UDP(用户数据报)

是否面向连接

面向连接(传输数据之前需要建立连接,传输结束需要关闭连接);

无连接(传输数据之前不需要建立连接,远程主机接收UDP报文也不需要返回确认)

应用场景

传输少量数据

传输大量数据

服务对象个数

一对一

一对多

一对一

多对一

多对多

传输可靠性

可靠(可靠性体现在三次握手和四次挥手上),数据可以无差错、不丢失重复;

不可靠,尽最大努力交付;

状态表

建立通道,需要维持复杂的状态表

UDP使用尽最大努力交付,即不保证可靠交付, 因此主机不需要维持复杂的链接状态表。

消息类型

面向字节流

消息可能会被操作系统分组成多个的 TCP 报文,也就是一个完整的用户消息被拆分成多个 TCP 报文进行传输。

面向报文

当用户消息通过 UDP 协议传输时,操作系统不会对消息进行拆分,在组装好 UDP 头部后就交给网络层来处理,所以发出去的 UDP 报文中的数据部分就是完整的用户消息,也就是每个 UDP 报文就是一个用户消息的边界,这样接收方在接收到 UDP 报文后,读一个 UDP 报文就能读取到完整的用户消息。

流量控制

拥塞控制

重传机制

传输形式

字节流,没有边界,保证顺序和可靠;

数据报文,一个包一个包发送,有界,可能丢包或乱序;

传输效率

消耗资源

应用场景

  • TCP是面向连接的,能保证数据的可靠性交付;
  • UDP面向无连接,它可以随时发送数据,再加上UDP本身的处理既简单又高效;
  • 包总量较少的通信,
  • 视频、音频等多媒体通信如游戏,媒体通信,实时直播;
  • 广播通信;

应用层协议

  • FTP文件传输协议;
  • 邮件发送协议SMTP;
  • 邮件读取协议POP3
  • 远程登陆TELNET;
  • HTTP/ HTTPS;

DNS 域名系统

TFTP 简单文件传送协议

RIP路由信息协议

DHCP

动态主机配置协议

SNMP简单网络管理协议

NFS 网络文件协议

IP电话

流式多媒体通信

IGMP 多播,网际组管理协议

头部占用字节

20-60,在没有使用选项字段时是20字节;

8个字节(),且并非固定不变;

首部长度

4位,TCP存在可变长的选项,需要有此字段;

因为是头部长度固定,所以没有首部长度字段;

分片不同

  • TCP的数据大小若大于MSS,会在传输层进行分片,目标主机收到后,也同样在传输层组装TCP数据包;
  • 若中途丢失了一个分片,只需要传输丢失的这个分片;
  • MTU:一个网络包的最大长度,以太网中一般为1500字节;
  • MSS:除去IP和TCP头部之后,一个网络包所能容纳的TCP数据的最大长度;
  • UDP的数据大小如果大于MTU大小,则会在IP层进行分片,目标主机收到后,在IP层组装完数据,接着再传给传输层;
  • 若如果中途丢了一个分片,在实现可靠传输的UDP时则就需要重传所有的数据包,这样传输效率非常差,所以通常UDP的报文应该小于MTU;

包长度字段

  • TCP无。其中IP总长度和P首部长度,在IP首部格式是已知的。TCP首部长度,则是在TCP首部格式已知的,所以就可以求得TCP数据的长度;
  • TCP数据的长度=IP总长度–IP首部长度-TCP首部长度;
  • UDP2字节。为了网络设备硬件设计和处理方便,首部长度需要是4字节的整数倍;
  • 其实也是可以计算出来,但是为了方便,就有这个了;

UDP(用户数据报)-数据报得知道说的是UDP

TCP可靠的原理和特点-题目

3可靠传输的原理-考纲未提及

1:停止等待-理想,不实用-发送窗口等于1接收窗口等于1

出错,超时重传

ARQ 自动重传请求Automatic Repeat request

重传的请求是自动进行的,接收方不需要请求发送方自动重传某个出错的分组,分组均有编号

信道利用率很低

停止等待如何提供可靠传输

2:连续ARQ协议-自动重传-Goback-N-发送窗口大于1,接收窗口等于1,Wt<=(2^n)-1

正常情况

发送过程丢包丢包情况

接收过程丢包

3选择重传SR-Wt<=2^(n-1)

在上面我们对GBN已经有了一定的了解,我们现在来想一想GBN的缺点。

单个分组的差错就能够引起GBN重传大量分组,许多分组根本没必要重传。

随着差错率的增加,流水线可能会被这些不必要重传的分组占满,造成效率的低下。

所以,选择重传(Selective Repeat)就是选择性的重新传输的意思。

SR是对单个分组的确认。

当发送过程中发生丢包

4:滑动窗口协议-TCP的精髓-流量控制

连续ARQ协议和滑动窗口协议在数据传输和控制机制上存在一些关键的区别。

首先,连续ARQ协议(Automatic Repeat reQuest)是一种自动重传请求协议。在此协议中,发送方每发送一个数据分组后,不需要等待接收方的确认就可以连续发送后续的数据分组。然而,当发送方收到接收方的确认(ACK)或否定确认(NAK)时,它会根据这些反馈来调整发送行为。如果收到NAK,发送方会重传相应的数据分组。这种协议的关键在于发送方不需要等待每个数据分组的确认,从而提高了信道利用率。

另一方面,滑动窗口协议是用于实现流量控制的一种重要机制。在滑动窗口协议中,发送方和接收方各自维护一个窗口,窗口的大小决定了它们可以发送或接收的数据量。发送窗口内的数据是可以被发送但尚未被确认的,而接收窗口则定义了接收方可以接收的数据范围。通过动态调整窗口的大小,可以实现对发送方发送速率的控制,从而防止数据丢失和拥塞。

因此,连续ARQ协议主要关注的是如何确保数据的可靠传输,通过自动重传请求来纠正传输错误;而滑动窗口协议则更多地关注流量控制,通过调整发送窗口的大小来控制数据的发送速率,从而避免网络拥塞和数据丢失。这两种协议在网络通信中都起着重要的作用,但它们的侧重点和应用场景有所不同。

连续ARQ协议和滑动窗口协议都工作在传输层

连续ARQ协议(Automatic Repeat reQuest)是一种自动重传请求协议,它工作在传输层,通过发送方连续发送数据分组并在收到接收方的确认或否定确认后进行相应的调整,确保数据的可靠传输。

滑动窗口协议同样在传输层工作,它是实现流量控制的一种重要机制。通过维护发送窗口和接收窗口,滑动窗口协议可以动态调整数据的发送速率,从而防止网络拥塞和数据丢失。

这两种协议都是传输层协议的关键组成部分,它们在确保数据可靠传输和流量控制方面发挥着重要作用。如需更多信息,可以查阅计算机网络专业书籍或相关文献资料。

滑动窗口协议2007-发送窗口大小

3TCP协议的连接建立和拆除过程

TCP三次握手建立连接

所谓三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个报文。

三次握手的目的是连接服务器指定端口,建立 TCP 连接,并同步连接双方的序列号和确认号,交换 TCP 窗口大小信息。在 socket 编程中,客户端执行 connect() 时。将触发三次握手。

为了区分ACK 和ack,ACK是标志位,seq和ack是32bit

总结一下三次握手的过程:

  • 起始包的seq都等于0
  • 三次握手中的ack=对方上一个的seq+1
  • seq等于对方上次的ack号

TCP 4次挥手释放连接

4:TCP流量控制-滑动窗口-来得及接收-考纲未提

flow control

首先,TCP流量控制的主要目的是防止分组丢失,确保发送方的发送速度不会过快,以至于接收方来不及接收。这主要通过滑动窗口协议(连续ARQ协议)实现。滑动窗口协议不仅保证了分组的无差错、有序接收,还实现了流量控制。具体来说,接收方返回的ACK中会包含自己的接收窗口的大小,发送方则利用这个大小来控制数据发送的速率。

另外,为了避免流量控制可能引发的死锁,TCP使用了持续计时器。如果发送方在一段时间内没有收到接收方的确认信息,它将重传未确认的数据段,并等待接收方的响应。

流量控制往往指点对点通信量的控制,是一个端到端的问题,抑制发送端发送数据的速率,以便接收端来得及接收(防止丢失)

接收窗口-流量控制-真题2006

4.什么是拥塞控制-防止过多数据

congestion拥塞

另一方面,拥塞控制的作用则在于防止过多的数据注入到网络中,避免网络负载过大。常用的拥塞控制方法包括慢开始、拥塞避免、快重传和快恢复等。这些方法共同协作,根据网络的实时状况调整发送方的发送速率,从而避免网络拥塞的发生。

TCP拥塞控制方法

具体细节

慢开始算法

(慢启动)

建立TCP连接并开始发送报文段时,令拥塞窗口cwnd=1(一个最大报文长度MSS),

并在每次收到一个信道报文段的确认后,cwnd+1,使得每经过一个往返时延RTT后拥塞窗口加倍(即cwnd的大小呈指数增长),指导cwnd增大到满开始门限ssthresh的过程

拥塞避免算法

发送端的拥塞窗口每经过一个RTT,就增加一个MSS的大小(按线性增长),直到出现一次超时(网络拥塞),令慢开始门限ssthresh等于当前cwnd的一半

快重传

当发送端连续收到三个重复的ACK报文时,直接重传对方尚未收到的报文段,而不必等待超时计时器超时

快恢复

要求发送方连续收到三个重复确认时,就执行“乘法减小”算法,把慢开始门限ssthresh减半,再令cwnd=新的ssthresh,之后执行拥塞避免算法,使cwnd线性增长

慢开始算法和拥塞避免算法举例

不管是拥塞控制还是流量控制都是会影响发送窗口的大小,发送大小取二者最小值

拥塞控制-考题2008

5.什么是慢启动

慢启动是指传输控制协议(TCP)使用的一种阻塞控制机制,也叫做指数增长期。在连接刚建立时,TCP首先以一个比较小的拥塞窗口值开始发送数据。每经过一个往返时间(RTT),拥塞窗口的值就会加倍,这样一直进行下去,直到达到一个阈值(slow start threshold)。这样做的目的是为了在网络出现拥塞时,能够尽快地响应,避免过多的数据包丢失或延迟。一旦发生丢失事件或者到达阈值,TCP就会进入线性增长阶段,这时每经过一个RTT,窗口增长一个段。

此外,慢启动还指负载均衡器向组内新增的后端服务器线性增加请求分配权重,直到配置的慢启动时间结束,负载均衡器向后端服务器正常发送完请求的启动模式。这种慢启动能够实现业务的平滑启动,避免业务抖动问题。

总的来说,慢启动是TCP协议中用于拥塞控制的一种重要机制,旨在优化数据传输效率和网络稳定性。

6:常用的端口号-IP地址和端口号

http://www.dtcms.com/a/390442.html

相关文章:

  • 使用Azure OpenAI Realtime模型实现语音助理
  • 【智能系统项目开发与学习记录】LinuxUbuntuROS2 零基础学习笔记(小白友好版)
  • Python5-线性回归
  • Windows 定时任务设置、批处理(.bat)命令详解和通过conda虚拟环境定时运行Python程序
  • 无人机图传:让画面直达掌心的传输艺术
  • Django HttpRequest 对象的常用属性
  • 常见的 2 中缓存
  • Python基于Django的微博舆情可视化系统 关键词/用户ID/评论分析 大数据项目(建议收藏)✅
  • 四大访问控制模型:OBAC、RBAC、TBAC与ABAC的对比与应用
  • 如何使用AI IDE书写Vue3数据可视化大屏项目
  • React 类名控制工具库ClassName 简化类写法 条件控制 样式处理
  • 【MySQL】用户和权限管理
  • STM32项目分享:游泳馆闸机计费管理系统设计
  • 《C++进阶之STL》【unordered_set/unordered_map 模拟实现】
  • LLM中如何添加special_token,并且尽可能保持原模型的训练效果
  • [x-cmd] 使用系统包管理器安装 x-cmd
  • 亮数据MCP结合Dify:构建自动化视频数据抓取与智能分析工作流的深度实践
  • 革新交互体验,开启未来智慧生活 —— OPE.AI 多语言多模态AI产品
  • 生活琐记(2)
  • 一文读懂HTTP 1.1/2.0/3.0:从原理到应用的通俗解析
  • JavaStream用法全解析
  • 在日常开发中实现异常处理和空值处理的最佳实践
  • openstack port binding failure (by quqi99)
  • leetcode 3484. 设计电子表格 中等
  • Docker+cpolar 实战:打造灵活可控的远程办公系统
  • uniApp开发XR-Frame微信小程序 | 设置透明贴图
  • M3 Ultra版Mac Studio无法正常升级到macOS 26.0 苹果已经在调查
  • 老的ios项目在新的mac M1上编译运行遇到的问题及整理
  • Java 大视界 -- Java 大数据机器学习模型在元宇宙虚拟场景智能交互中的关键技术
  • 2025年目标检测还有什么方向好发论文?