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

相关推荐
小蜗牛编程实录几秒前
深入理解网络 IO:从基础模型到多路复用技术
后端
Ekreke1 分钟前
一次Nginx 403 的问题排查
后端
励志不掉头发的内向程序员11 分钟前
【Linux系列】掌控 Linux 的脉搏:深入理解进程控制
linux·运维·服务器·开发语言·学习
梵得儿SHI18 分钟前
Java 反射机制深度解析:从对象创建到私有成员操作
java·开发语言·class对象·java反射机制·操作类成员·三大典型·反射的核心api
沐知全栈开发21 分钟前
Foundation 折叠列表
开发语言
绝无仅有32 分钟前
面试真实经历某商银行大厂数据库MYSQL问题和答案总结(二)
后端·面试·github
绝无仅有34 分钟前
通过编写修复脚本修复 Docker 启动失败(二)
后端·面试·github
..Cherry..36 分钟前
【java】jvm
java·开发语言·jvm
老K的Java兵器库1 小时前
并发集合踩坑现场:ConcurrentHashMap size() 阻塞、HashSet 并发 add 丢数据、Queue 伪共享
java·后端·spring
冷冷的菜哥1 小时前
go邮件发送——附件与图片显示
开发语言·后端·golang·邮件发送·smtp发送邮件