当前位置: 首页 > 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.lryc.cn/news/594630.html

相关文章:

  • 文件的写出操作|文件的追加写入操作|文件操作的综合案例
  • mac安装node的步骤
  • IDEA 同时修改某个区域内所有相同变量名
  • 跑腿小程序|基于微信小程序的跑腿平台小程序设计与实现(源码+数据库+文档)
  • Taro 生命周期相关 API 详解
  • Idea或Pycharm上.idea的忽略提交的问题总结
  • Linux初识网络
  • 用 STM32 的 SYSTICK 定时器与端口复用重映射玩转嵌入式开发
  • 分布在内侧内嗅皮层(MEC)的带状细胞对NLP中的深层语义分析有什么积极的影响和启示
  • 微服务的编程测评系统-身份认证-管理员登录前端
  • .NET依赖注入IOC你了解吗?
  • 智能体性能优化:延迟、吞吐量与成本控制
  • 机器阅读理解(MRC)全面解析:任务分类、评估指标与57个数据集资源盘点
  • Nacos安装单例模式
  • 西门子 SIMATIC S7-1500 数字量输入模块:深度剖析与应用指南
  • ABQ-LLM:用于大语言模型的任意比特量化推理加速
  • Zabbix 企业级分布式监控系统深度解析
  • Android 单编 framework 相关产物输出介绍
  • 3.组合式API父子通信
  • OpenAI开发的一款实验性大型语言模型(LLM),在2025年国际数学奥林匹克竞赛(IMO)中达到了金牌水平
  • 什么是商业智能BI数据分析的指标爆炸?
  • 悬镜安全将受邀参加2025开放原子开源生态大会
  • “融合进化,智领未来”电科金仓引领数字化转型新纪元
  • FFmpeg:数字媒体的终极瑞士军刀
  • ssms(SQL 查询编辑器) 添加快捷键 Ctrl+D(功能等于Ctrl+C + Ctrl+V),一步到位
  • 【PTA数据结构 | C语言版】列出连通集
  • 第三章自定义检视面板_创建自定义编辑器类_如何自定义预览窗口(本章进度5/9)
  • C++基于libmodbus库实现modbus TCP/RTU通信
  • 个人中心产品设计指南:从信息展示到用户体验的细节把控
  • 第三章自定义检视面板_创建自定义编辑器类_编扩展默认组件的显示面板(本章进度3/9)