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

【C++上岸】C++常见面试题目--网络篇(第二十五期)

大家好!😊 欢迎来到C++面试系列的第二十五期——网络篇!网络知识是面试中的高频考点,尤其对C++后端开发岗位至关重要。今天,我将详细拆解10个常见问题,包括HTTPS安全机制、HTTP请求过程、DNS解析等,助你轻松上岸!💡 记得收藏哦,面试前翻一翻,信心满满!🚀


1. HTTPS是如何保证数据传输的安全?

HTTPS(HTTP Secure)通过SSL/TLS协议为HTTP添加加密层,确保数据传输的机密性、完整性和认证性。核心机制如下:

  • 机密性:使用对称加密算法(如AES)加密数据,防止窃听。密钥通过非对称加密(如RSA)安全交换。例如,非对称加密基于数学难题,私钥解密公式:m=cdmod  nm = c^d \mod nm=cdmodn,其中ccc是密文,ddd是私钥。
  • 完整性:哈希算法(如SHA-256)生成消息摘要,确保数据未被篡改。哈希值计算:h=SHA256(m)h = \text{SHA256}(m)h=SHA256(m)
  • 认证性:数字证书验证服务器身份,防止中间人攻击。证书由CA(证书颁发机构)签发,包含公钥和签名。
    整个过程就像给数据加了“保险箱”🔒,攻击者无法破解!面试时强调TLS握手流程(见问题8),得分点满满~👍

2. 完整的HTTP请求过程包括哪些内容

一个完整的HTTP请求从用户输入URL到页面渲染,经历多个步骤:

  1. DNS解析:将域名(如www.example.com)转换为IP地址。
  2. TCP连接:通过三次握手建立可靠连接(SYN, SYN-ACK, ACK)。
  3. HTTP请求:客户端发送请求报文(如GET /index.html)。
  4. 服务器处理:服务器解析请求,生成响应(如HTML内容)。
  5. HTTP响应:服务器返回状态码(如200 OK)和数据。
  6. 渲染与关闭:客户端渲染内容,通过四次挥手关闭TCP连接。
    整个过程耗时毫秒级,但涉及网络分层(应用层、传输层等)。🤔 记住,DNS和TCP是基础,面试官爱问细节!

3. 请你说一说DNS解析过程

DNS(域名系统)解析将人类可读域名转为机器IP地址,过程如下:

  1. 本地缓存检查:客户端先查本地DNS缓存,命中则直接返回IP。
  2. 递归查询:若缓存未命中,向本地DNS服务器发起请求。
  3. 迭代查询:本地DNS服务器依次查询根DNS、顶级域(TLD)DNS、权威DNS。
    • 根DNS返回TLD地址(如.com)。
    • TLD DNS返回权威DNS地址(如example.com)。
    • 权威DNS返回目标IP。
  4. 结果返回:本地DNS缓存IP并返回客户端。
    例如,查询www.example.com时,可能路径:客户端 → 本地DNS → 根DNS → .com TLD → example.com权威DNS。全程高效,像“快递员”📦 层层派送!面试时画图解释更直观~🎯

4. 详细介绍网络加密算法

网络加密算法分为三类,确保数据安全:

  • 对称加密:加密和解密用同一密钥,速度快,适合大数据传输。
    • 算法:AES(高级加密标准),密钥长度128/256位。
    • 公式:加密c=Ek(m)c = E_k(m)c=Ek(m),解密m=Dk(c)m = D_k(c)m=Dk(c),其中kkk是密钥,mmm是明文。
  • 非对称加密:公钥加密,私钥解密,解决密钥分发问题。
    • 算法:RSA,基于大数分解难题。
    • 公式:加密c=memod  nc = m^e \mod nc=memodn,解密m=cdmod  nm = c^d \mod nm=cdmodn,其中(e,n)(e, n)(e,n)是公钥,(d,n)(d, n)(d,n)是私钥。
  • 哈希函数:生成固定长度摘要,确保数据完整性。
    • 算法:SHA-256,输出256位哈希值。
    • 公式:h=SHA256(m)h = \text{SHA256}(m)h=SHA256(m),抗碰撞性强。
      HTTPS结合这些算法(如TLS用RSA交换AES密钥),形成“安全盾牌”🛡️。面试时举例应用场景,如RSA用于证书验证!

5. 一次完整的HTTP请求所经历几个步骤

一次HTTP请求从发起到结束,共6个核心步骤:

  1. DNS解析:解析域名到IP地址(耗时约10-100ms)。
  2. TCP连接:三次握手建立连接(SYN → SYN-ACK → ACK)。
  3. HTTP请求发送:客户端发送请求报文(方法如GET,路径如/index.html)。
  4. 服务器处理:服务器执行逻辑(如读取文件或查询数据库)。
  5. HTTP响应返回:服务器发送响应(状态码如200,数据如HTML)。
  6. 连接关闭:四次挥手释放TCP资源(FIN → ACK → FIN → ACK)。
    如果是HTTPS,步骤3前需TLS握手。整个过程像“接力赛”🏃‍♂️,每个环节依赖下层协议。面试时结合问题2,突出TCP/IP模型!

6. 如果已经建立了连接,但是客户端突然出现故障了怎么办

当TCP连接已建立,但客户端故障(如崩溃或断网),服务器通过以下机制处理:

  • TCP Keep-Alive:服务器定期发送探测包(如每60秒),检测客户端活动。
    • 若客户端无响应(超时,如默认2小时),服务器关闭连接。
  • 应用层超时:HTTP服务器设置超时阈值(如30秒无数据传输),主动终止连接。
  • 资源回收:系统内核回收TCP套接字资源,防止“僵尸连接”。
    这就像“心跳检测”❤️‍🔥,确保资源不浪费。面试时提到TCP的可靠性设计,加分!😊

7. HTTP 如何实现长连接?在什么时候会超时?

HTTP长连接(Keep-Alive)允许多个请求复用同一TCP连接,减少开销:

  • 实现方式:通过HTTP头部Connection: keep-alive启用。客户端和服务器协商后,保持连接开放。
  • 超时机制
    • 空闲超时:服务器设置超时时间(如Apache默认5秒),若期间无新请求,关闭连接。
    • 最大请求数:限制单个连接处理的请求数(如100个),达到后关闭。
    • 客户端超时:浏览器可能主动关闭空闲连接(如30秒)。
      长连接提升性能,但需平衡资源。超时就像“自动关机”⏰,防止浪费!面试时对比短连接,强调HTTP/1.1默认支持。

8. HTTPS的加密流程是怎样的

HTTPS加密流程基于TLS握手,共4个阶段:

  1. ClientHello:客户端发送支持的加密套件和随机数。
  2. ServerHello:服务器选择加密套件,返回随机数和数字证书。
  3. 密钥交换:客户端验证证书,用服务器公钥加密预主密钥(非对称加密)。
    • 公式:c=(pre-master key)emod  nc = (\text{pre-master key})^e \mod nc=(pre-master key)emodn
  4. 会话密钥生成:双方用随机数和预主密钥派生对称会话密钥(如AES密钥)。
  5. 加密通信:后续数据用会话密钥对称加密传输。
    整个过程高效安全,耗时约100-300ms。面试时拆解为“握手+加密”两步,考官直呼专业!🔐

9. IP地址有哪些分类

IP地址分为五类,基于IPv4地址结构:

  • Class A:首位为0,范围1.0.0.0–126.255.255.255,用于大型网络(如ISP)。
    • 网络号:8位,主机号:24位。
  • Class B:首位10,范围128.0.0.0–191.255.255.255,用于中型网络(如大学)。
    • 网络号:16位,主机号:16位。
  • Class C:首位110,范围192.0.0.0–223.255.255.255,用于小型网络(如企业)。
    • 网络号:24位,主机号:8位。
  • Class D:首位1110,范围224.0.0.0–239.255.255.255,用于组播。
  • Class E:首位1111,范围240.0.0.0–255.255.255.255,保留实验用。
    现在多用CIDR(无类别域间路由)替代分类,灵活划分子网。面试时提IPv6更全面!🌐

10. 说下ARP协议的工作过程

ARP(地址解析协议)将IP地址映射到MAC地址,工作过程如下:

  1. 检查缓存:主机先查本地ARP缓存,命中则直接使用MAC地址。
  2. 广播请求:若未命中,主机广播ARP请求包(包含目标IP)。
  3. 目标回复:目标主机收到请求,单播回复ARP响应包(包含自身MAC地址)。
  4. 更新缓存:请求主机缓存MAC地址,用于后续数据帧传输。
    例如,主机A(IP_A)想发数据给主机B(IP_B):
  • A广播:“谁有IP_B的MAC?”📢
  • B回复:“我是IP_B,MAC是XX:XX:XX!”
  • A记录并发送数据。
    ARP像“地址簿”📇,确保局域网通信顺畅。面试时结合以太网帧解释,更生动!

总结

搞定这10个网络问题,C++面试网络篇就稳了!🎉 记住:HTTPS安全靠加密、HTTP过程重步骤、DNS解析是基础、加密算法分三类、故障处理用超时、长连接省资源、IP分类要清晰、ARP工作像查询。多练习概念,面试时对答如流~💪 下期见,祝你早日上岸!🚀
(网络知识不难,学完你就是“协议大师”🧙‍♂️!有问题评论区留言~👇)


文章转载自:

http://G6aXlhmG.qstkk.cn
http://Y3wE6HjL.qstkk.cn
http://6G7njl5g.qstkk.cn
http://pODYGGg8.qstkk.cn
http://YRiU1fFw.qstkk.cn
http://F7ycLSPz.qstkk.cn
http://eulJ5eOJ.qstkk.cn
http://eOkgV6lF.qstkk.cn
http://Ori09lYk.qstkk.cn
http://kczxpgwh.qstkk.cn
http://grmk5hy3.qstkk.cn
http://KnRw56Ds.qstkk.cn
http://t3YKx7LC.qstkk.cn
http://RdCGEHdj.qstkk.cn
http://Jb7uRDzN.qstkk.cn
http://GQMAItSm.qstkk.cn
http://hTfRHIJN.qstkk.cn
http://4yxjHYfa.qstkk.cn
http://Dybo2ss8.qstkk.cn
http://NQ9dcmNJ.qstkk.cn
http://5dvLD6YL.qstkk.cn
http://saPR7asa.qstkk.cn
http://SoXlrb0R.qstkk.cn
http://tcEWbZue.qstkk.cn
http://oEzXyu7Q.qstkk.cn
http://KQCH1y73.qstkk.cn
http://LN9EQtv9.qstkk.cn
http://DDkyieSz.qstkk.cn
http://wI80GMQb.qstkk.cn
http://cKTyeXrr.qstkk.cn
http://www.dtcms.com/a/388096.html

相关文章:

  • LangChain使用方法以OpenAI 的聊天模型GPT-4o为例
  • CephFS存储文件系统介绍
  • Java Swagger2 能显示页面但看不到一个接口
  • SSL证书有效期缩短:自动化解决方案
  • C# 多线程编程 (.NET Framework 4.0)
  • 一个手艺活 - 跨语言编程
  • docker安装ollama、下载模型详细步骤
  • 微服务和分布式的基础学识
  • 自动化测试框架pytest---Json Schema
  • 阿里云PolarDB MySQL版与MCP集成方案:数据处理分析全流程的效能革命
  • Python实现霸王龙优化算法(Tyrannosaurus Optimization Algorithm, TROA)(附完整代码)
  • 弥合安全分析与故障仿真之间差距的方法
  • JavaEE---9.网络原理TCP/IP
  • @Value
  • 安装es、kibana、logstash
  • Leetcode-148.排序链表
  • 基于ETF底仓的网格交易系统实现动态参数优化与动量因子融合
  • C++底层刨析章节三: 函数对象与适配器:STL中的智能操作单元
  • MySQL多表联合查询与数据备份恢复全解析
  • 说说对React的理解?有哪些特性?
  • 深入理解 C 语言指针(二):数组与指针的深度绑定
  • 算法能力提升之树形结构-(线段树)
  • 小白实测:异地访问NAS所用的虚拟局域网使用感受及部署难度?!
  • js校验车架号VIN算法
  • MongoDB 8.0全面解析:性能提升、备份恢复与迁移指南
  • vue3如何配置不同的地址访问不同的项目
  • 苹果软件代码混淆,iOS混淆、iOS加固、ipa安全与合规取证注意事项(实战指南)
  • SQL-约束
  • [torch] 非线性拟合问题的训练
  • ubuntu设置ip流程