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

✍个人博客:https://blog.csdn.net/Newin2020?type=blog

📣专栏地址:http://t.csdnimg.cn/fYaBd

📚专栏简介:在这个专栏中,我将会分享 C++ 面试中常见的面试题给大家~

❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

📝推荐参考地址:https://www.xiaolincoding.com/(这个大佬的专栏非常有用!)

106. 腾讯会议设计原理是什么,讲解一下大概流程比如是用的 UDP 还是 TCP,文件描述符这类讲解怎么实现的会议?

腾讯会议是一款基于 TCP 协议和 WebRTC 技术的视频会议产品,主要流程如下:

  1. 用户通过客户端发起加入会议请求。
  2. 客户端向服务器发送加入会议请求,服务器接收到后返回一个会议 ID 和一组用户信息。
  3. 客户端根据会议 ID 和用户信息通过 WebRTC 技术建立与服务器的连接。
  4. 服务器将该用户加入到指定的视频房间中,同时将该房间内其他成员的信息发送给新进入的成员。
  5. 成员之间通过 WebRTC 技术建立点对点通信,进行音视频数据传输。在传输过程中,使用 UDP 协议传输音视频数据包,并且采用 SRTP(安全实时传输协议)对数据进行加密和认证。
  6. 在整个过程中,客户端需要不断监听各种事件(例如:网络状态变化、硬件设备变更等),并根据事件类型做出相应处理。
  7. 为了保证音视频质量,在每个参会者电脑上运行一个音频引擎来提供噪声抑制、回声消除、自动增益控制等功能。
  8. 文件描述符方面,可以使用 epoll 或者 select 来监听多个 socket 文件描述符,并且能够高效地处理 I/O 事件。另外,在 WebRTC 中也有使用 IOCP 模型来处理网络 I/O 事件。

总的来说,腾讯会议通过 WebRTC 技术实现音视频传输,使用 TCP 协议建立与服务器的连接,并采用 UDP 协议传输音视频数据包。同时,客户端需要不断监听各种事件,并且可以使用 epoll 或者 select 等方法处理多个文件描述符的 I/O 事件。

107. IP 分类以及其优缺点

IP 分类的优点

不管是路由器还是主机解析到一个 IP 地址时候,我们判断其 IP 地址的首位是否为 0,为 0 则为 A 类地址,那么就能很快的找出网络地址和主机地址。

IP 分类的缺点

  1. 缺点一
    同一网络下没有地址层次,比如一个公司里用了 B 类地址,但是可能需要根据生产环境、测试环境、开发环境来划分地址层次,而这种 IP 分类是没有地址层次划分的功能,所以这就缺少地址的灵活性。
  2. 缺点二
    A、B、C 类有个尴尬处境,就是不能很好的与现实网络匹配。
  • C 类地址能包含的最大主机数量实在太少了,只有 254 个,估计一个网吧都不够用。
  • 而 B 类地址能包含的最大主机数量又太多了,6 万多台机器放在一个网络下面,一般的企业基本达不到这个规模,闲着的地址就是浪费。

这两个缺点,都可以在 CIDR 无分类地址解决。

108. 列举 IP 报文头部

  1. 源地址(Source Address):指定了 IP 报文的发送者的 IP 地址。它用来标识发送方的身份和位置。
  2. 目标地址(Destination Address):指定了 IP 报文的接收者的 IP 地址。它用来指定报文的目的地。
  3. 生存时间(Time to Live,TTL):TTL 字段用于控制 IP 报文在网络中的生存时间。它指示了一个报文在网络中可以经过的最大路由器跳数。每经过一个路由器,TTL 值会减少 1。如果 TTL 值减少到 0,路由器会丢弃该报文,同时发送一个 ICMP(Internet Control Message Protocol)超时消息给报文的源地址。

此外,IP 报文头部还包含其他字段,如版本号、报文长度、协议类型、源端口、目标端口等。这些字段用于在网络中正确地路由和传输数据。

需要注意的是,上述列举的字段是 IPv4 协议的报文头部。在 IPv6 协议中,报文头部的字段可能会有所不同。

相关推荐
我爱cope7 分钟前
【从0开始学设计模式-10| 装饰模式】
java·开发语言·设计模式
菜鸟学Python20 分钟前
Python生态在悄悄改变:FastAPI全面反超,Django和Flask还行吗?
开发语言·python·django·flask·fastapi
小码哥_常33 分钟前
告别臃肿!Elasticsearch平替Manticore登场
后端
测试19981 小时前
2026最新软件测试面试八股文【附文档】
自动化测试·软件测试·python·测试工具·面试·职场和发展·测试用例
zmsofts1 小时前
java面试必问13:MyBatis 一级缓存、二级缓存:从原理到脏数据,一篇讲透
java·面试·mybatis
浪浪小洋1 小时前
c++ qt课设定制
开发语言·c++
charlie1145141912 小时前
嵌入式C++工程实践第16篇:第四次重构 —— LED模板,从通用GPIO到专用抽象
c语言·开发语言·c++·驱动开发·嵌入式硬件·重构
handler012 小时前
Linux: 基本指令知识点(2)
linux·服务器·c语言·c++·笔记·学习
故事和你912 小时前
洛谷-数据结构1-4-图的基本应用1
开发语言·数据结构·算法·深度优先·动态规划·图论
苍何2 小时前
万字保姆级教程:Hermes+Kimi K2.6 打造7x24h Agent军团
后端