【计算机网络 - 基础问题】每日 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 协议中,报文头部的字段可能会有所不同。

相关推荐
IT9090几秒前
Python-数据爬取(爬虫)
开发语言·爬虫·python
Demons_皮3 分钟前
python:ADB通过包名打开应用
开发语言·python·adb
AlexMercer101214 分钟前
[C++ 核心编程]笔记 4.2.6 初始化列表
开发语言·数据结构·c++·笔记·算法
Xiaoyu Wang14 分钟前
计算机网络(Ⅵ)应用层原理
计算机网络
lifejump15 分钟前
基于PHP的http字段查询与注册(V1)(持续迭代)
开发语言·php
喝旺仔la22 分钟前
Django后台接口开发
后端·python·django
程序员阿鹏22 分钟前
详解:模板设计模式
java·开发语言·jvm·后端·设计模式·eclipse·1024程序员节
wjs202423 分钟前
Lua 函数
开发语言
weixin_3784102443 分钟前
java springboot项目如何计算经纬度在围栏内以及坐标点距离
java·开发语言·spring boot
霍格沃兹测试开发学社测试人社区1 小时前
软件测试学习笔记丨Selenium学习笔记:css定位
软件测试·笔记·测试开发·学习·selenium