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

【计算机网络 - 基础问题】每日 3 题(二十一)

✍个人博客:Pandaconda-CSDN博客
📣专栏地址:http://t.csdnimg.cn/fYaBd
📚专栏简介:在这个专栏中,我将会分享 C++ 面试中常见的面试题给大家~
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪
📝推荐参考地址:https://www.xiaolincoding.com/(这个大佬的专栏非常有用!)

61. TCP 和 UDP 可以使用同一个端口吗?

答案:可以的。

在数据链路层中,通过 MAC 地址来寻找局域网中的主机。在网际层中,通过 IP 地址来寻找网络中互连的主机或路由器。在传输层中,需要通过端口进行寻址,来识别同一计算机中同时通信的不同应用程序。

所以,传输层的「端口号」的作用,是为了区分同一个主机上不同应用程序的数据包。

传输层有两个传输协议分别是 TCP 和 UDP,在内核中是两个完全独立的软件模块。

当主机收到数据包后,可以在 IP 包头的「协议号」字段知道该数据包是 TCP/UDP,所以可以根据这个信息确定送给哪个模块(TCP/UDP)处理,送给 TCP/UDP 模块的报文根据「端口号」确定送给哪个应用程序处理。

62. TCP 序列号和确认号是如何变化的?

发送的 TCP 报文:

  • 公式一:序列号 = 上一次发送的序列号 + len(数据长度)。特殊情况,如果上一次发送的报文是 SYN 报文或者 FIN 报文,则改为上一次发送的序列号 + 1。
  • 公式二:确认号 = 上一次收到的报文中的序列号 + len(数据长度)。特殊情况,如果收到的是 SYN 报文或者 FIN 报文,则改为上一次收到的报文中的序列号 + 1。

63. TCP 流量控制、拥塞控制

流量控制是指在通信的发送端和接收端之间,通过协商和控制发送速率,以确保接收端能够处理来自发送端的数据。流量控制的主要目的是避免接收端缓冲区溢出,防止丢失或丢弃数据。常见的流量控制机制包括滑动窗口协议、反馈机制(如 TCP 的 ACK 确认)和自适应速率算法(如 TCP 的拥塞窗口调整)。流量控制通常是发送端和接收端之间的通信协议所实现的。

工作原理:

  1. 滑动窗口机制:TCP 流量控制使用了滑动窗口机制。接收端维护一个接收窗口大小(Receiver Window Size),表示它还能接收多少字节的数据。这个窗口的大小会根据接收端的处理能力和可用缓冲空间而变化。
  2. 通告窗口大小:接收端会向发送端发送一个通告窗口大小(Advertised Window Size),告诉发送端它还能接收多少数据。通告窗口大小是动态调整的,根据接收端的情况和网络条件来确定。
  3. 发送端根据窗口大小发送数据:发送端根据接收端通告的窗口大小来确定可以发送多少数据。发送端会维护一个发送窗口,确保它只发送接收端可以容纳的数据量。
  4. 动态调整窗口大小:通告窗口大小可以根据接收端的缓冲区可用空间和网络条件来动态调整。如果接收端的缓冲区快满了,它会减小通告窗口大小,告诉发送端减缓发送速度;如果接收端有更多的可用空间,它会增大通告窗口大小,允许发送端发送更多数据。
  5. 避免过载:TCP 流量控制的关键目标是防止过载。通过定期更新通告窗口大小,TCP 确保发送端发送的数据不会超过接收端的处理能力和可用缓冲区大小。

拥塞控制是指网络中的资源供不应求,导致网络性能下降的现象。当网络中的拥塞发生时,传输速率超过了网络能够处理的范围,数据包开始丢失、延迟增加,甚至导致网络崩溃。拥塞控制的主要目的是通过调整发送速率、丢包回退、拥塞信号等机制,以使网络性能恢复到可接受的水平。拥塞控制通常由网络设备(如路由器)和协议(如 TCP 和 UDP)实现,通过监测网络拥塞情况并采取相应的措施来缓解拥塞。

总结一下,流量控制主要关注发送端和接收端之间的通信速率,以避免接收端缓冲区溢出;而拥塞控制则是网络中的全局机制,旨在处理网络拥塞现象,通过调整发送速率和其他拥塞控制策略来保持网络性能良好。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • YOLOv8 OBB win10+ visual 2022移植部署
  • 【2023次方 / B】
  • 王红梅老师ppt介绍算法设计一般过程---对上周csdn的补充----可以参考老版教师用书--单链表专题在介绍插入时介绍了正向思维方法,这是更详细的解释跟全面
  • iptables和nftables
  • 淘客系统开发之卷轴模式系统源码功能分析
  • 解锁视频生成新时代! 探索智谱CogVideoX-2b:轻松生成6秒视频的详细指南
  • ReKep——李飞飞团队提出的让机器人具备空间智能:基于视觉语言模型GPT-4o和关系关键点约束
  • C语言常见字符串函数模拟实现一:(strlen,strcpy,strcat,strcmp,strstr )
  • 最新最详细的Mastercam安装包下载安装教程(保姆级)
  • Go语言的垃圾回收(GC)机制的迭代和优化历史
  • 在HTML中添加图片
  • 使用vite+react+ts+Ant Design开发后台管理项目(二)
  • 张朝阳的物理课第三卷:量子力学的硬核探索与启发
  • 网页交互模拟:模拟用户输入、点击、选择、滚动等交互操作
  • 内外网办公环境路由配置
  • CSS居中完全指南——构建CSS居中决策树
  • EventListener原理
  • JavaScript 奇技淫巧
  • Java读取Properties文件的六种方法
  • Leetcode 27 Remove Element
  • Making An Indicator With Pure CSS
  • miaov-React 最佳入门
  • PAT A1050
  • PHP的类修饰符与访问修饰符
  • ubuntu 下nginx安装 并支持https协议
  • Vue2 SSR 的优化之旅
  • Vue组件定义
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 微信小程序开发问题汇总
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 一天一个设计模式之JS实现——适配器模式
  • 以太坊客户端Geth命令参数详解
  • Prometheus VS InfluxDB
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​Java基础复习笔记 第16章:网络编程
  • #define 用法
  • #if 1...#endif
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (纯JS)图片裁剪
  • (二) 初入MySQL 【数据库管理】
  • (汇总)os模块以及shutil模块对文件的操作
  • (三)c52学习之旅-点亮LED灯
  • (四)Android布局类型(线性布局LinearLayout)
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)jdk与jre的区别
  • . Flume面试题
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET Framework 3.5安装教程
  • .net mvc 获取url中controller和action
  • .net 生成二级域名
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded