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

HTTP,HTTPS

在网络工程师、开发工程师、运维工程师等岗位的面试中,​​HTTP/HTTPS​​ 是高频必考知识点,尤其在前端、后端、测试、DevOps等与网络通信相关的职位中。以下是系统化的核心考点梳理,涵盖基础概念、协议机制、安全特性及应聘高频问题。


​一、HTTP基础

​1. HTTP的核心概念

​(1) HTTP的定义与作用​
  • ​定义​​:HTTP(HyperText Transfer Protocol,超文本传输协议)是应用层协议,用于在客户端(如浏览器)和服务器之间传输超文本数据(如HTML、JSON)。
  • ​作用​​:
    • 规定客户端和服务器之间的通信格式(请求/响应模型);
    • 支持无状态传输(每次请求独立,不保留历史信息);
    • 基于TCP/IP协议(默认端口80)。
​(2) HTTP的工作流程​
  1. 客户端(如浏览器)发起TCP连接(三次握手);
  2. 发送HTTP请求报文(包含请求方法、URL、头部、Body等);
  3. 服务器处理请求并返回HTTP响应报文(包含状态码、头部、Body等);
  4. 客户端解析响应并渲染页面(或执行其他操作);
  5. 关闭TCP连接(或保持长连接)。
​(3) HTTP的请求方法(高频考点)​
​方法​​作用​​幂等性​
GET请求获取资源(如网页、图片),参数通过URL传递(如?id=1)。
POST提交数据到服务器(如表单提交、文件上传),参数在Body中。
PUT更新服务器上的资源(全量替换),参数在Body中。
DELETE删除服务器上的资源。
HEAD类似GET,但只返回响应头部(用于检查资源是否存在或获取元信息)。
OPTIONS查询服务器支持的HTTP方法(用于跨域预检请求)。
  • ​面试考点​​:

    “GET和POST的区别是什么?”
    ​回答​​:

    • ​功能差异​​:GET用于获取资源,POST用于提交数据;
    • ​参数位置​​:GET参数在URL中,POST参数在Body中;
    • ​安全性​​:GET参数暴露在URL和浏览器历史中,POST更安全(但本质都不加密);
    • ​幂等性​​:GET是幂等的(多次请求结果相同),POST非幂等(多次提交可能创建多个资源)。
​(4) HTTP状态码(必背高频考点)​
​分类​​状态码​​含义​
1xx100Continue(继续,客户端应继续发送请求剩余部分)。
2xx200OK(请求成功,服务器返回请求的数据)。
201Created(资源创建成功,常用于POST请求)。
204No Content(请求成功,但响应无Body,如DELETE请求)。
3xx301Moved Permanently(永久重定向,浏览器会缓存新URL)。
302Found(临时重定向,浏览器不会缓存新URL)。
304Not Modified(资源未修改,客户端可使用本地缓存)。
4xx400Bad Request(客户端请求错误,如参数格式错误)。
401Unauthorized(未认证,需提供身份凭证,如Token)。
403Forbidden(服务器拒绝访问,权限不足)。
404Not Found(资源不存在)。
5xx500Internal Server Error(服务器内部错误)。
503Service Unavailable(服务不可用,如服务器过载或维护)。
  • ​面试考点​​:

    “遇到403状态码可能的原因是什么?”
    ​回答​​:

    • 客户端未提供有效的身份认证凭证(如未携带Token);
    • 服务器配置了IP白名单,客户端IP不在允许范围内;
    • 文件/目录权限配置错误(如Nginx配置中限制了访问权限)。

​2. HTTP报文结构(必会)​

​(1) 请求报文格式​
请求行(Request Line)  
请求头部(Headers)  
空行(\r
)  
请求体(Body,可选)
  • ​示例​​:
    GET /index.html HTTP/1.1          # 请求行:方法、URL、协议版本
    Host: www.example.com             # 请求头部:Host(必需)
    User-Agent: Mozilla/5.0           # 用户代理
    Accept: text/html                 # 接受的内容类型
    (空行)
    (无Body)
​(2) 响应报文格式​
状态行(Status Line)  
响应头部(Headers)  
空行(\r
)  
响应体(Body)
  • ​示例​​:

    HTTP/1.1 200 OK                   # 状态行:协议版本、状态码、状态描述
    Content-Type: text/html           # 响应头部:内容类型
    Content-Length: 1024              # 内容长度
    (空行)
    <html>...</html>                  # 响应体:HTML内容
  • ​高频考点​​:

    “HTTP头部中Content-TypeAccept的作用是什么?”
    ​回答​​:

    • Content-Type:服务器告诉客户端响应体的数据类型(如application/jsontext/html);
    • Accept:客户端告诉服务器自己能接受的响应数据类型(用于内容协商)。

​二、HTTPS基础考点​

​1. HTTPS的核心概念(必会)​

​(1) HTTPS的定义与作用​
  • ​定义​​:HTTPS(HTTP Secure)是HTTP的安全版本,通过SSL/TLS协议对通信进行加密和身份认证。
  • ​作用​​:
    • ​加密传输​​:防止数据被窃听(如密码、银行卡号);
    • ​身份认证​​:验证服务器身份(防止中间人攻击);
    • ​数据完整性​​:防止数据被篡改。
​(2) HTTPS与HTTP的区别​
​对比项​​HTTP​​HTTPS​
协议基础应用层协议(直接基于TCP)在HTTP基础上增加SSL/TLS层(先建立加密通道,再传输HTTP数据)
端口默认80默认443
安全性明文传输,易被窃听/篡改加密传输,防窃听、防篡改、防中间人攻击
证书无需证书需要CA(证书颁发机构)签发的数字证书
  • ​面试考点​​:

    “为什么HTTPS比HTTP更安全?”
    ​回答​​:

    • ​加密​​:通过SSL/TLS协议对通信内容加密(如AES对称加密);
    • ​认证​​:服务器需提供CA签发的证书,客户端验证证书合法性(防止伪造服务器);
    • ​完整性​​:通过哈希算法(如SHA-256)校验数据是否被篡改。

​2. SSL/TLS协议机制(高频考点)​

​(1) SSL/TLS的握手过程(简化版)​
  1. ​Client Hello​​:客户端向服务器发起握手请求,携带支持的加密算法列表(如RSA、AES)和随机数(Client Random)。
  2. ​Server Hello​​:服务器选择加密算法(如AES-256-CBC),返回随机数(Server Random)和数字证书(含公钥)。
  3. ​密钥交换​​:客户端验证证书合法性→生成预主密钥(Pre-Master Secret)并用服务器公钥加密后发送。
  4. ​生成会话密钥​​:双方通过Client Random、Server Random、Pre-Master Secret计算出对称加密密钥(Session Key)。
  5. ​加密通信​​:后续HTTP数据通过Session Key对称加密传输。
  • ​面试考点​​:

    “HTTPS握手过程中如何保证服务器身份合法?”
    ​回答​​:

    • 服务器返回的数字证书由CA(如DigiCert、Let's Encrypt)签发,包含服务器域名、公钥、有效期等信息;
    • 客户端内置了受信任的CA根证书,通过比对证书链验证服务器证书是否合法;
    • 若证书过期、域名不匹配或签名无效,浏览器会提示“不安全”。
​(2) 对称加密与非对称加密的作用​
  • ​非对称加密​​(如RSA):用于密钥交换(安全传递预主密钥),但计算开销大。
  • ​对称加密​​(如AES):用于加密实际传输的数据(效率高),依赖预主密钥生成会话密钥。

​三、应聘高频问题与答题技巧​

​1. 理论题(基础概念)​

  • ​Q​​:“HTTP是无状态协议,如何实现用户登录状态的保持?”
    ​A​​:

    “通过Cookie和Session机制:

    • 服务器在用户登录后生成Session ID并存储到数据库;
    • 通过响应头Set-Cookie将Session ID发送给浏览器;
    • 浏览器后续请求自动携带Cookie(含Session ID),服务器通过ID查询用户状态。”
  • ​Q​​:“HTTPS握手过程中为什么需要三次随机数(Client Random、Server Random、Pre-Master Secret)?”
    ​A​​:

    “三次随机数共同参与生成会话密钥(Session Key),目的是:

    • 防止重放攻击(每次握手随机数不同,密钥动态变化);
    • 增强密钥的随机性和安全性(即使某一方随机数泄露,也无法推导最终密钥)。”

​2. 实操题(场景分析)​

  • ​Q​​:“某网站登录接口突然出现大量403错误,可能的原因是什么?如何排查?”
    ​A​​:

    “可能原因:

    1. 客户端未携带有效的认证Token(如JWT过期或未传递);
    2. 服务器配置了IP白名单,客户端IP被限制;
    3. Nginx/Apache配置中限制了登录接口的访问权限(如allow/deny规则)。
      排查步骤:
    4. 检查请求头是否包含Authorization: Bearer <Token>
    5. curl -v模拟请求,观察响应头和状态码;
    6. 查看服务器日志(如Nginx的access.logerror.log)定位具体拒绝原因。”
  • ​Q​​:“如何优化网站的HTTPS性能?”
    ​A​​:

    “1. 启用TLS 1.3(减少握手轮次,提升速度);
    2. 使用HTTP/2(多路复用降低延迟);
    3. 配置HSTS(强制浏览器使用HTTPS,避免降级攻击);
    4. 启用OCSP Stapling(减少证书状态查询的延迟);
    5. 使用CDN加速(缓存静态资源,减少加密通信的数据量)。”

​四、总结:求职者必备行动清单​

  1. ​HTTP核心​​:掌握请求方法、状态码、报文结构,能结合场景分析问题(如404/502排查)。
  2. ​HTTPS安全​​:理解加密原理、证书机制、握手流程,熟悉常见安全漏洞(如中间人攻击)。
  3. ​工具与调试​​:熟练使用curl、Postman测试HTTP请求,用Wireshark抓包分析协议交互。
  4. ​性能优化​​:了解HTTP/2、缓存策略(如Cache-Control)、CDN对HTTP/HTTPS性能的影响。

掌握这些内容,不仅能轻松应对面试,还能在实际工作中快速定位和解决网络通信问题!

http://www.xdnf.cn/news/1162153.html

相关文章:

  • 服务器系统时间不准确怎么办?
  • 图论基本算法
  • 部署Zabbix企业级分布式监控
  • 【Unity基础】Unity中2D和3D项目开发流程对比
  • Unity 插件Resize Pro 最快的 Texture2D 调整大小工具
  • Elasticsearch 是 NVIDIA Enterprise AI Factory 验证设计中推荐的向量数据库
  • 数据结构堆的实现(C语言)
  • Web3.0 能为你带来哪些实质性的 改变与突破
  • Vue 脚手架——render函数
  • 【算法笔记】树状数组
  • Linux学习之Linux系统权限
  • 《C++》函数内联,auto关键字
  • 用基础模型构建应用(第十章)AI Engineering: Building Applications with Foundation Models学习笔记
  • 探索无广告音乐世界:MusicFree 免费播放器
  • 海康威视视觉算法岗位30问及详解
  • BERT 的“池化策略”
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 主页布局实现
  • Three.js 立方体贴图(CubeMap)完全指南:从加载到应用
  • 大模型高效适配:软提示调优 Prompt Tuning
  • Python高效入门指南
  • 深入详解随机森林在放射治疗计划优化中的应用及实现细节
  • 部署 Zabbix 企业级分布式监控
  • Levels checking (filtering) in logging module
  • 大腾智能国产3D CAD软件正式上架华为云云商店
  • Pytorch01:深度学习中的专业名词及基本介绍
  • Linux的磁盘存储管理实操——(中)——逻辑卷管理实战
  • JavaScript的引入方式和基础语法的快速入门与学习
  • 【Linux】重生之从零开始学习运维之Mysql安装
  • Linux下SPI设备驱动开发
  • 管理项目环境和在环境中使用conda或pip里如何查看库版本———Linux命令行操作