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

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

划重点! 本期涵盖10大高频网络面试题,助你轻松拿Offer~ [🚀]


文章目录

        • 📊 1. OSI与TCP/IP协议栈对应关系
        • 🚦 2. 流量控制原理
        • 🔗 3. TCP/IP数据链路层交互过程
        • 📬 4. IP层如何区分报文类型与目标应用
        • 🤝 5. UDP的connect函数
        • ⏳ 6. TCP的TIME_WAIT状态理解
        • ❓ 7. 为什么需要TIME_WAIT
        • 🌐 8. 输入URL到页面展示全流程
        • 📡 9. ICMP协议及作用
        • 🛰️ 10. 路由器 vs 交换机


📊 1. OSI与TCP/IP协议栈对应关系
OSI七层模型TCP/IP四层模型核心协议举例
应用层应用层HTTP, FTP, DNS
表示层SSL/TLS (加密/压缩)
会话层NetBIOS (会话管理)
传输层传输层TCP, UDP
网络层网络层IP, ICMP, ARP
数据链路层链路层Ethernet, PPP
物理层网线/光纤等物理介质

👉 关键点:TCP/IP将OSI上三层合并为"应用层",下两层合并为"链路层"。🔍


🚦 2. 流量控制原理

核心机制:滑动窗口(Sliding Window)

  • 原理:接收方通过窗口大小告知发送方可接收的数据量上限,避免数据淹没。
    公式:Wrecv=Rbuf−LpendingW_{recv} = R_{buf} - L_{pending}Wrecv=RbufLpending
    其中 RbufR_{buf}Rbuf 是接收缓冲区大小,LpendingL_{pending}Lpending 是待处理数据长度。
  • 动态调整:接收方实时更新窗口值(如TCP头部Window Size字段),发送方据此调整发送速率。
    👉 场景:若接收方处理慢,窗口缩小为0,发送方暂停传输(Zero Window Probe机制)。

🔗 3. TCP/IP数据链路层交互过程

数据链路层处理相邻节点间通信:

  1. 封装成帧:将IP数据包封装为帧,添加首部(源/目的MAC地址)和尾部(校验和)。
  2. 透明传输:特殊字符转义(如PPP协议的0x7E0x7D 0x5E)。
  3. 差错检测:CRC循环冗余校验,错误帧直接丢弃。
  4. 介质访问
    • 以太网:CSMA/CD(载波监听多路访问/冲突检测)
    • 无线网络:CSMA/CA(冲突避免)

📬 4. IP层如何区分报文类型与目标应用
  • 区分协议:IP头部Protocol字段标识传输层协议类型(如6=TCP, 17=UDP)。
  • 定位应用:传输层头部包含端口号(Port),例如:
    • TCP 80端口 → HTTP服务
    • UDP 53端口 → DNS服务
      👉 底层实现:内核通过socket绑定的端口号将数据交给对应进程。

🤝 5. UDP的connect函数

UDP本是无连接的,但connect()可建立默认远端地址

  • 作用
    1. 后续send()/recv()无需指定地址(提高效率)。
    2. 内核直接过滤非该地址的报文(提升安全性)。
  • 伪代码示例
    sockfd = socket(AF_INET, SOCK_DGRAM, 0);  
    connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)); // 绑定默认地址  
    send(sockfd, buffer, strlen(buffer), 0); // 无需再指定目标地址  
    

⚠️ 注意:不触发三次握手,仅本地记录地址!💡


⏳ 6. TCP的TIME_WAIT状态理解

TIME_WAIT是TCP四次挥手后主动关闭方的最终状态:

  • 持续时间2×MSL2 \times MSL2×MSL(MSL=Maximum Segment Lifetime,通常30s~2min)。
  • 状态转换流程
    主动关闭方:FIN_WAIT_1 → FIN_WAIT_2 → TIME_WAIT → CLOSED\text{主动关闭方:FIN\_WAIT\_1 → FIN\_WAIT\_2 → TIME\_WAIT → CLOSED} 主动关闭方:FIN_WAIT_1 → FIN_WAIT_2 → TIME_WAIT → CLOSED

❓ 7. 为什么需要TIME_WAIT

设计目的:

  1. 确保最后一次ACK到达:若ACK丢失,被动方重发FIN,主动方可再次响应。
  2. 消除旧连接残留报文:等待2MSL使网络中旧数据包失效,避免新连接被干扰。
    👉 案例:服务器高并发时,短连接过多导致TIME_WAIT堆积,需调整内核参数(如net.ipv4.tcp_tw_reuse)。

🌐 8. 输入URL到页面展示全流程
  1. DNS解析:查询URL对应IP(递归+迭代查询)。
  2. TCP连接:与服务器三次握手建立连接。
  3. HTTP请求:发送GET/POST请求(HTTPS还需TLS握手)。
  4. 服务器处理:返回HTML/CSS/JS等资源。
  5. 浏览器渲染
    • 解析HTML构建DOM树
    • 解析CSS生成样式规则
    • 执行JS → 渲染页面 → 显示内容
      ⏱️ 优化点:CDN加速、HTTP/2多路复用。

📡 9. ICMP协议及作用

ICMP(Internet Control Message Protocol) 是网络层"哨兵":

  • 功能
    • 错误报告(如Destination Unreachable
    • 诊断工具(如pingICMP Echo Request/Reply测试连通性)
    • 路径控制(如TTL Exceeded提示路由循环)
  • 封装位置:封装在IP包内,协议号=1。

🛰️ 10. 路由器 vs 交换机
维度路由器交换机
工作层级网络层(Layer 3)数据链路层(Layer 2)
寻址依据IP地址MAC地址
核心功能跨网段路由、NAT、防火墙局域网内高速转发
典型场景连接不同网络(如家宽→互联网)连接同网段设备(如办公室PC互联)

💎 总结:掌握这些核心知识点,面试官直呼内行!
转发+收藏,助你轻松上岸!🎯💻

✨ 恭喜你坚持到这里!👏 本期我们覆盖了计算机网络中的基本原理,并实战解决了十个高频面试题。记住:理解其中的实现思想比硬背八股更重要,多练习才能在面试中游刃有余。😊 如果有疑问,欢迎评论区讨论~ 下期见!🚀


文章转载自:

http://V1cEB9Gd.qsswb.cn
http://UjKzC9m4.qsswb.cn
http://0SEqHjVQ.qsswb.cn
http://zKC6JU6h.qsswb.cn
http://sUWmLc9r.qsswb.cn
http://N3lvaN8W.qsswb.cn
http://FlWw0EyW.qsswb.cn
http://21DTZQF0.qsswb.cn
http://f8oMmjcS.qsswb.cn
http://hCBwr9aj.qsswb.cn
http://EU22Qx83.qsswb.cn
http://xyAaZZjk.qsswb.cn
http://XSmH5l6o.qsswb.cn
http://Gz4DgrF5.qsswb.cn
http://mfCSQT0O.qsswb.cn
http://Z3jKXvi1.qsswb.cn
http://YWBqYmJh.qsswb.cn
http://HcRKTjm5.qsswb.cn
http://5HvkhsOq.qsswb.cn
http://2gFvtZXT.qsswb.cn
http://O5fFR8NW.qsswb.cn
http://euEKjtIg.qsswb.cn
http://GI9NP1x3.qsswb.cn
http://w7lfu9Ve.qsswb.cn
http://rNL4SXlm.qsswb.cn
http://LGX5h5UH.qsswb.cn
http://PQ424VTY.qsswb.cn
http://hrnKphov.qsswb.cn
http://illBmit0.qsswb.cn
http://SLtxUbjs.qsswb.cn
http://www.dtcms.com/a/384624.html

相关文章:

  • mapbox进阶,使用jsts实现平角缓冲区
  • A股大盘数据-20250915分析
  • MySQL服务启动全平台指南:从Windows服务、Linux systemctl到macOS的完整攻略
  • 八、vue3后台项目系列——封装layout页面下切换组件Appmain
  • 学习React-12-useEffect
  • MFC_Button
  • [K8S学习笔记]YAML相关
  • 贪心算法在物联网能耗优化中的应用
  • 使用paddlepaddle-Gpu库时的一个小bug!
  • 从 Linux 到 Kubernetes:操作系统的演变与云原生未来
  • Java网络编程:(socket API编程:TCP协议的 socket API -- 服务器端处理请求的三个步骤)
  • 新能源汽车总装车间案例:四台S7-1200通过无线网桥同步控制16组ET 200SP的秘诀
  • k8s事件驱动运维利器 shell operator
  • GitHub Actions 部署配置
  • java后端工程师进修ing(研一版‖day45)
  • k8s核心资料基本操作
  • Redis 在电商系统中的应用:高并发场景下的架构艺术
  • RK3588:MIPI底层驱动学习——芯外拾遗第一篇:从四个模块到整个“江湖”
  • K8S里的“豌豆荚”:Pod
  • OpenStack 管理与基础操作学习笔记(一):角色、用户及项目管理实践
  • 大数据毕业设计选题推荐-基于大数据的金融数据分析与可视化系统-Spark-Hadoop-Bigdata
  • Python爬虫实战:研究Pandas,构建期货数据采集和分析系统
  • 软考中级习题与解答——第六章_计算机硬件基础(3)
  • Nvidia显卡架构解析与cuda应用生态浅析
  • AppStore 如何上架?iOS 应用发布全流程、uni-app 打包上传 ipa、App Store 审核与多工具组合实战指南
  • 贪心算法应用:卫星链路调度问题详解
  • 基于https的数据加密技术
  • 自学嵌入式第四十一天:单片机-中断
  • 二分图 系列
  • DDAC工作流的PyCharm项目前置准备清单