欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > C++面试题,TCP和UDP方面(1)

C++面试题,TCP和UDP方面(1)

2025/6/22 3:00:36 来源:https://blog.csdn.net/li209779/article/details/145715423  浏览:    关键词:C++面试题,TCP和UDP方面(1)

在这里插入图片描述

个人主页 : 个人主页
个人专栏 : 《数据结构》 《C语言》《C++》《Linux》《网络》 《redis学习笔记》

文章目录

  • 前言
  • TCP和UDP的区别
  • UDP如何实现可靠
  • TCP滑动窗口原理
  • TCP流量控制
  • TCP超时重传
  • 总结


前言

这是个人总结的C++方向的面试题,TCP和UDP方面,如果那些地方有错误。欢迎前来纠错!!!


TCP和UDP的区别

TCP和UDP是传输层的两种主要协议。

  1. 连接方式:
    TCP:是面向连接的协议。在开始传输之前,TCP客户端和服务器之间会进行三次握手。在传输结束后,还会执行四次挥手来关闭连接,以确保通信的可靠性(。。。。。)
    UDP:是无连接的协议。在数据传输之前不需要建立连接,数据报只需要指定目标地址(ip:port)即可发送。
  2. 可靠性传输
    TCP:提供可靠的,面向链接的字节流服务。通过确认应答,超时重传,流量控制,连接管理,拥塞控制等机制来保证数据的可靠传输。
    UDP:是一个不可靠,无连接的数据报协议。UDP只保证数据的发送,但不保证数据会被接收方收到,也不会处理丢失,损坏会重复的数据。
  3. 数据传输格式:
    TCP:以字节流(从缓冲区的角度)的方式传输数据,没有明确的报文边界。需要应用层来处理粘包问题
    UDP:传输的是独立的,不可分割的数据报文。UDP数据报通常包含固定大小的数据库,每个数据报的大小由应用层决定(报文的16为UDP长度,决定了UDP数据报的最大长度)。
  4. 传输效率:
    TCP:由于要保证数据的可靠传输,TCP需要进行额外的握手,确认。重传等操作,因此传输效率相当较低
    UDP:不需要保证可靠性,传输效率比较高。(HTTP/3基于QUIC,而QUIC是建立在UDP上的)
  5. 应用场景:
    TCP:适合对数据可靠性要求高的场景,如文件传输,网页浏览,电子邮件。
    UDP:适合用于对延迟敏感,实时性要求高的场景,如视频直播,语言通话,在线游戏等

UDP如何实现可靠

UDP的可靠性需通过应用层协议来解决不可靠性,核心在于序列号确认机制重传策略流量控制等。

在这里插入图片描述


TCP滑动窗口原理

TCP滑动窗口是通过动态调整发送和接受双方的窗口大小,实现数据的可靠传输和流量控制。具体而言,滑动窗口允许发送方在不等待每个数据包确认的情况下连续发生多个数据包,从而提高传输效率。接收方通过维护窗口大小,根据自身处理能力和剩余缓冲区空间大小调整窗口大小,控制发送方的发送速率,避免网络拥塞。

  1. 发送窗口结构
    已确认:数据已发送且受到ACK确认
    已发送未确认:数据已发送但未收到ACK
    不发送:允许立即发送的数据范围
    不可发送:超出接收方窗口或拥塞窗口限制
    在这里插入图片描述
  2. 接收窗口结构
    已接收并确认:数据已提交给引用层
    可接收:缓冲区空闲区间,通过WIN字段通告
    不可接收:超出缓冲区容量
    在这里插入图片描述

TCP流量控制

TCP流量控制的核心目标是防止发送方速率超过接收方的处理能力,避免接收方缓冲区溢出导致丢包。其实现依赖于滑动窗口机制,通过动态调整发送窗口大小实现速率匹配。
特别注意的是,当接收方通告窗口大小为0时,发送方启动零窗口探测(ZWP),周期地发送1字节探测报文。若接收方持续返回零窗口,TCP可能最终断开链接(如三次探测失败后)

流量控制与拥塞控制的区别
流量控制:解决端到端速率匹配问题,防止接收方过载
拥塞控制:解决网络资源竞争问题,避免全网性能恶化
但流量控制的窗口大小可能被拥塞窗口大小限制,如当网络拥塞时,即使接收方有足够缓冲区,发送速率扔受拥塞控制算法制约


TCP超时重传

TCP超时重传:当发送方在发送数据报后,启动一个定时器(重传计时器)。如果在指定的超时时间内没有收到接收方的确认,则认为该数据段可能丢失或损坏,触发超时重传机制,重新发送该数据报。

  • 重传策略:TCP采用指数退避算法,每次超时重传时,重传间隔时间会增加一倍,直到达到最大值。目的是为了减少频繁重传对网络的影响
  • 快速重传:当发送方连续三次收到重复的ACK时,会立即重传未确认的数据报,而不需要等待超时定时器到期(RTO超时)

总结

以上就是我总结的C++面试题,TCP和UDP方面(1)

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词