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

devtools/2024/9/25 16:44:18/

✍个人博客: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)实现,通过监测网络拥塞情况并采取相应的措施来缓解拥塞。

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


http://www.ppmy.cn/devtools/117061.html

相关文章

Python 学习之虚拟环境

一、为什么需要虚拟环境 到目前位置我们所有的第三方包安装都是直接通过 pip install xx 的方式进行安装的,这样安装会将那个包安装到你的系统级的 python 环境中。但是这样有一个问题,就是如果你现在 Diango 1.10.x写了个网站,然后你的领导…

鸿蒙开发(HarmonyOS)组件化浅谈

众所周知,现在组件化在移动开发中是很常见的,那么组件化有哪些好处: 1. 提高代码复用性:组件化允许将应用程序的不同功能模块化,使得这些模块可以在不同的项目中重复使用,从而提高开发效率并减少重复工作。…

卷积神经网络-最优模型

文章目录 一、关键步骤1. 定义性能评估指标2. 设置保存逻辑3. 保存最佳模型4.使用最优模型 二、代码运用1. 保存模型参数(state_dict)2. 保存完整的模型3.使用模型参数4.读取完整模型的方法 三、保存模型优缺点1.优点2.缺点 在卷积神经网络(C…

java 获取集合a比集合b多出来的对象元素

public class OrderListEntity {/*** deprecated 对象集合的处理* param aData 集合a* param bData 集合b* return 返回集合a比集合b多出来的部分, 通过id判断*/public static List<OrderListEntity> AHasMoreThanBData(List<OrderListEntity> aData, List<Ord…

一地通过率高达46.43%!为什么都说软考难?

从2023年上半年到2024年上半年&#xff0c;近三次考试&#xff0c;几个考区的软考通过率基本不超过13%。 然而根据近日陕西省科技资源统筹中心公布的数据&#xff0c;从1987年到2024年&#xff0c;陕西软考的总拿证率竟然高达46.43%。软考真的有大家认为的那么难吗&#xff1f;…

python爬虫:从12306网站获取火车站信息

代码逻辑 初始化 (init 方法)&#xff1a; 设置请求头信息。设置车站版本号。 同步车站信息 (synchronization 方法)&#xff1a; 发送GET请求获取车站信息。返回服务器响应的文本。 提取信息 (extract 方法)&#xff1a; 从服务器响应中提取车站信息字符串。去掉字符串末尾的…

跨平台数据库工具DataGrip v2024.2全新发布——增加智能刷新功能

DataGrip 是一个跨平台的数据库工具可在Windows&#xff0c;OS X 和 Linux上使用。同时支持多种数据库&#xff0c;包含了SQL Server&#xff0c;Oracle&#xff0c;PostgreSQL&#xff0c;MySQL&#xff0c;DB2&#xff0c;Sybase&#xff0c;SQLite&#xff0c;Derby&#xf…

【devops】devops-ansible之介绍和基础使用

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…