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

【C++八股文】计算机网络篇

 网络协议核心知识点详解

TCP头部结构

TCP头部包含多个关键字段,每个字段都有其特定作用:

  • 16位源端口:标识发送方应用程序的端口号
  • 16位目的端口:标识接收方应用程序的端口号
  • 32位序号:保证数据包有序传输的唯一标识
  • 32位确认序号:期望收到的下一个数据包的序列号
  • 4位首部长度:以4字节为单位计算头部实际长度
  • 6位标志位:包含SYN、ACK、FIN等控制标志
  • 16位窗口大小:指示接收方可用的缓冲区空间
  • 16位校验和:用于检测数据传输中的错误
  • 16位紧急指针:标识紧急数据的位置

重要提示:TCP报文不包含IP地址信息,仅通过端口号标识应用程序。一个完整的TCP连接需要四元组来唯一标识:(源IP地址,源端口,目的IP地址,目的端口)。

完整C++后端八股文:>> C++八股文(完整版)<<

三次握手的重要性

TCP建立连接需要三次握手,主要目的包括:

  1. 初始化序列号:双方交换初始序列号(ISN),确保数据包按正确顺序组装
  2. 参数协商:交换最大报文段长度(MSS)、窗口大小等关键参数
  3. 防止历史连接干扰:避免网络中延迟的旧连接请求被误认为新连接请求

TCP粘包问题分析与解决

UDP协议不存在粘包问题,因为UDP是基于数据报的传输方式,每个数据包都有明确边界。TCP粘包问题产生的主要原因包括:

  • 发送方启用Nagle算法,将多个小数据包合并发送以提高网络效率
  • 接收方应用程序未能及时从缓冲区读取数据,导致多个数据包堆积

解决方案:

  1. 封包与拆包:在数据前添加固定长度的包头,指明数据体长度
  2. 特殊分隔符:使用特定字符序列(如\r\n)标记数据包边界
  3. 关闭Nagle算法:通过设置TCP_NODELAY选项立即发送数据

HTTP协议原理

HTTP是应用层协议,基于请求-响应模型在客户端与服务器间通信。主要特点包括:

  • 明文传输:所有数据以未加密形式传输
  • 无状态:服务器不保存客户端的状态信息,每次请求独立处理
  • 灵活可扩展:支持多种数据格式和请求方法

HTTP与HTTPS的区别

  1. 安全性:HTTP明文传输,易被窃听和篡改;HTTPS通过SSL/TLS加密传输数据
  2. 身份认证:HTTPS需要数字证书验证服务器身份,HTTP无此机制
  3. 端口号:HTTP使用80端口,HTTPS使用443端口
  4. 性能开销:HTTPS加密解密过程消耗更多计算资源
  5. SEO影响:搜索引擎优先收录HTTPS网站

HTTPS建立连接的过程:

  1. 客户端发送支持的加密套件列表
  2. 服务器返回数字证书和选定的加密方式
  3. 双方通过非对称加密协商对称密钥
  4. 使用对称密钥加密实际传输数据

HTTP/1.1的改进

相比HTTP/1.0,HTTP/1.1引入多项重要改进:

  • 持久连接:允许在单个TCP连接上发送多个请求和响应
  • 范围请求:支持通过Range头请求资源的特定部分
  • 新增Host头:支持虚拟主机,多个域名共享同一IP地址
  • 扩展方法:新增OPTIONS、PUT、DELETE等请求方法
  • 缓存优化:提供更灵活的缓存控制机制

GET与POST方法对比

  • 用途差异:GET用于获取资源,POST用于创建或修改资源
  • 参数位置:GET参数显示在URL中,POST参数放在请求体中
  • 安全性:POST相对更安全,参数不暴露在URL中
  • 长度限制:GET受URL长度限制,POST无此限制
  • 幂等性:GET是幂等的,多次执行结果相同;POST非幂等

Cookie与Session机制

Cookie和Session都是用于维护会话状态的技术:

  • 存储位置:Cookie存储在客户端,Session存储在服务器端
  • 安全性:Session更安全,敏感信息不暴露在客户端
  • 生命周期:Cookie可设置长期有效,Session随会话结束而失效
  • 依赖关系:Session依赖Cookie传递会话ID
  • 性能影响:Session需要服务器存储空间,高并发时影响性能

Session优化方案包括Session集群共享和Session Ticket机制。

TCP与UDP协议对比

  • 连接方式:TCP面向连接,需要建立和断开过程;UDP无连接
  • 可靠性:TCP提供确认重传机制保证可靠传输;UDP尽最大努力交付
  • 数据边界:TCP是字节流,可能粘包;UDP保留数据包边界
  • 头部开销:TCP头部20-60字节,UDP头部仅8字节
  • 适用场景:TCP适合可靠性要求高的场景;UDP适合实时性要求高的场景

三次握手与四次挥手详解

三次握手过程:

  1. 客户端发送SYN=1和初始序列号seq=x
  2. 服务器回应SYN=1、ACK=1,携带自己的序列号seq=y和确认号ack=x+1
  3. 客户端发送ACK=1,确认号ack=y+1

四次挥手过程:

  1. 主动关闭方发送FIN=1和序列号seq=u
  2. 被动关闭方回应ACK=1和确认号ack=u+1
  3. 被动关闭方发送FIN=1和序列号seq=v
  4. 主动关闭方回应ACK=1和确认号ack=v+1

TIME_WAIT状态的作用是确保最后一个ACK到达对端,并让旧连接的数据包在网络中消失。

流量与拥塞控制

流量控制通过滑动窗口机制实现,接收方通过窗口大小字段告知发送方可用的缓冲区空间。

拥塞控制采用多种算法:

  • 慢启动:初始窗口指数增长
  • 拥塞避免:达到阈值后线性增长
  • 快重传:收到3个重复ACK立即重传
  • 快恢复:调整阈值后直接进入拥塞避免阶段

浏览器访问网页全过程

  1. DNS解析:将域名转换为IP地址
  2. TCP连接:与服务器建立TCP连接
  3. 发送HTTP请求:构建并发送请求报文
  4. 接收HTTP响应:接收并解析服务器响应
  5. 渲染页面:解析HTML、CSS和JavaScript,渲染页面
  6. 连接释放:完成数据传输后关闭TCP连接

常见网络攻击与防御

  • SQL注入:通过输入恶意SQL代码攻击数据库。防御:参数化查询、输入验证
  • DDoS攻击:大量请求耗尽服务器资源。防御:流量清洗、CDN分发
  • ARP欺骗:伪造MAC地址窃取数据。防御:静态ARP绑定、ARP监控
  • XSS跨站脚本:注入恶意脚本代码。防御:输入转义、内容安全策略

高频面试题精粹

1.UDP如何实现可靠传输?
通过应用层添加序列号、确认机制和重传定时器,模拟TCP的可靠性保证

2.常见HTTP状态码

  • 200:请求成功
  • 206:部分内容
  • 301/302:重定向
  • 404:资源不存在
  • 499:客户端提前关闭连接
  • 500:服务器内部错误
  • 504:网关超时

3.HTTP/2主要特性:

  • 二进制分帧提高传输效率
  • 多路复用解决队头阻塞问题
  • 头部压缩减少开销
  • 服务器主动推送资源

4.网络层与传输层区别:
网络层负责主机到主机的通信,关注IP数据报的路由和转发;传输层负责进程到进程的通信,提供端到端的可靠性保证。

5.粘包问题解决方式:

  • 设置立即发送标志禁用Nagle算法
  • 添加长度字段标识数据包大小
  • 使用特殊分隔符标记数据包边界

推荐阅读:【C++八股文】操作系统篇

http://www.dtcms.com/a/356321.html

相关文章:

  • 【YOLO学习笔记】数据增强mosaic、Mixup、透视放射变换
  • flutter-使用url_launcher打开链接/应用/短信/邮件和评分跳转等
  • leetcode 338 比特位计数
  • rockchip温控及cpu降频配置
  • 事务和锁(进阶)
  • 使用 Docker 部署 Squid 为 Kubernetes 中的 Nexus3 提供公网代理访问
  • Windows12概念曝光,巧用远程控制工具抢先体验
  • 人脸识别“不备案“有哪些后果?
  • 公司内网部署离线deepseek+docker+ragflow本地模型实战
  • Day15 Logurs框架学习
  • Elasticsearch核心配置与性能优化
  • Linux 线程调度核心要点
  • 期权合约作废了怎么处理?
  • AI共链·智存未来 | 绿算技术受邀出席华为AI SSD发布会
  • 若依微服务一键部署(RuoYi-Cloud):Nacos/Redis/MySQL + Gateway + Robot 接入(踩坑与修复全记录)
  • 吱吱企业通讯软件可私有化部署,构建安全可控的通讯办公平台
  • C++异常处理指南:构建健壮程序的错误处理机制
  • 2025年渗透测试面试题总结-39(题目+回答)
  • FDTD_mie散射_仿真学习(2)
  • AWS集成开发最佳实践:构建高效可靠的云管理平台
  • 海运业务怎么管?解析海运货代系统的核心功能模块
  • Blender建模软件基本操作--学习笔记1
  • CSS text-decoration-thickness:精细控制文本装饰线粗细的新属性
  • Git 9 ,.git/index.lock 文件冲突问题( .git/index.lock‘: File exists. )
  • 亚马逊巴西战略升级:物流网络重构背后的生态革新与技术赋能之路
  • 基于SpringBoot的足球青训俱乐部管理系统
  • 【数组特殊排序最小最大次小次大依次类推规律放置】2022-10-27
  • 香港电讯为知名投资公司搭建高效、安全IT管理服务体系
  • Java学习day_13之API(常用API对象克隆)
  • 高效接入:Suno API 与主流编程语言的结合