计算机与网络 - 网络HTTP篇(2)

1.2 网络 HTTP

1.2.1 HTTP 基本概念
  1. 协议HTTP(超文本传输协议)是一种用于分布式、协作式、超媒体信息系统的应用层协议。它是万维网(WWW)的数据通信基础,定义了客户端与服务器之间请求和响应的格式。
  2. 传输HTTP基于TCP/IP协议传输,这保证了数据传输的可靠性。HTTP默认使用80端口进行通信,而HTTPS(HTTP Secure)则使用443端口。
  3. 超文本HTTP主要处理超文本,即包含文本、图片、视频等多媒体内容的数据。它允许客户端通过超链接从一个资源跳转到另一个资源。
  4. 状态码1xx:信息类状态码。表示 请求 已被接收,继续处理2xx:成功状态码。表示服务器 成功处理 了请求3xx:重定向状态码。表示需要客户端 进一步 操作以完成请求4xx:客户端错误状态码。表示 客户端 发送的请求有误5xx:服务器错误状态码。表示 服务器 处理请求时有误
  5. HTTP 常见字段Host:指定 服务器 的域名或 IP 地址。Connection:指定客户端请求使用的 连接类型,例如 Keep-Alive。Content-Length:指定响应体的 长度。Content-Type:指定响应的 数据类型,例如 text/html。Content-Encoding:指定响应数据的 压缩方法,例如 gzip。
1.2.2 GET 与 POST 区别?
  1. **GET 请求:**参数一般写在 URL 中,通过查询字符串传递。GET请求可见、可缓存、保留在浏览器历史记录中、数据长度限制。
  2. **POST 请求:**参数写在请求的报文 body 中,可以包含任意格式的数据。POST请求不可见、不可缓存、不在浏览器历史记录中、无数据长度限制。
1.2.3 HTTP 缓存技术
  1. 强制缓存:强制缓存通过HTTP头部中的字段如Expires和Cache-Control来控制。这些字段指定资源的有效期限,在此期限内,客户端可以直接使用缓存的资源而无需再次请求。
  2. 协商缓存:协商缓存使用ETag或Last-Modified字段来验证资源是否被修改。如果资源未修改,服务器会返回304状态码,告诉客户端可以使用缓存的版本。
  3. 工作流程:客户端请求资源时,首先检查本地缓存。如果资源有效,直接使用缓存;如果无效,向服务器发送请求。服务器根据资源的修改情况决定是否返回新资源,或者让客户端继续使用缓存。
1.2.4 HTTP 特性
  1. HTTP/1.1 的优点:简单:HTTP/1.1 的报文格式简单明了,由头部信息和主体组成,易于理解和实现。灵活和易于扩展:允许开发人员自定义请求方法、URI、状态码和头字段,有助于协议的灵活性和扩展性。应用广泛和跨平台:HTTP/1.1 在互联网上应用广泛,支持多种平台和设备,适用于各种应用场景。
  2. HTTP/1.1 的缺点:无状态:服务器不保留客户端的状态信息,导致需要额外的机制(如 Cookie)来管理用户状态,增加了复杂性。明文传输:HTTP/1.1 的通信内容是明文传输,安全性较低,容易遭受窃听和篡改攻击。不安全:缺乏加密机制,容易被中间人攻击篡改或窃听通信内容,例如用户登录信息可能会被盗取。
  3. HTTP/1.1 的性能:长连接:引入了持久连接(Keep-Alive),减少了重复建立和断开 TCP 连接的开销,提升了性能。管道化:支持管道化请求,允许在同一个 TCP 连接上同时发送多个请求,但存在服务器端响应顺序问题和队头阻塞风险。队头阻塞:请求 - 应答模式可能导致的性能问题,一个请求的阻塞会影响到整个连接中的其他请求,影响响应速度。
1.2.5 HTTP 与 HTTPS
1.2.5.1 HTTP 与 HTTPS 的区别
  • 安全性 HTTP:信息是明文传输,安全性较差,容易被窃听、篡改或冒充。HTTPS:在传输层加入 SSL/TLS 加密,还有 CA 申请的数字证书,确保安全性和完整性。
  • 连接建立过程 HTTP:TCP 三次握手后即可传输数据。HTTPS:除了 TCP 三次握手外,还需要 SSL/TLS 握手 来建立安全连接。
  • 默认端口 HTTP:默认端口是 80。HTTPS:默认端口是 443。
1.2.5.2 HTTPS 解决了 HTTP 的哪些问题?
  • 窃听风险:采用 SSL/TLS 加密,确保数据在传输过程中无法被窃取。
  • 篡改风险:使用摘要算法(哈希函数)生成数据的唯一指纹,保证数据在传输过程中不被篡改。
  • 冒充风险:通过数字证书,证明服务器的身份的真实性,防止客户端被冒充的风险。
1.2.5.3 HTTPS 的安全机制
  • 混合加密说明:结合对称加密(加密速度快,但密钥安全性低)和非对称加密(密钥安全,但加解密速度慢)。过程:首先使用非对称加密交换对称加密的会话密钥,然后使用对称加密算法加密传输数据。
  • 摘要算法 + 数字签名摘要算法:通过哈希算法生成数据的唯一指纹,用于验证数据的完整性。数字签名:使用私钥对摘要进行加密,以证明数据的来源和完整性,公钥用于验证签名的有效性。
  • 数字证书作用:由 CA 颁发,包含公钥和服务器身份信息,用于验证服务器的真实性。验证过程:客户端通过 CA 根证书验证服务器的数字证书是否合法,以确保通信安全可靠。
1.2.5.4 HTTPS 连接的建立过程?

HTTPS 是一种加密通信协议,用于安全地传输数据。下面是 HTTPS 建立连接的基本过程:

  1. 客户端请求:客户端向服务器发送加密通信 请求。发送支持的 TLS 协议版本、客户端生成的随机数(Client Random)和支持的密码套件列表(含加密算法等)。
  2. 服务器响应:服务器收到客户端请求后 响应。确认 TLS 协议版本、服务器生成的随机数(Server Random)、确认密码套件列表和服务器的 数字证书(含公钥)。
  3. 客户端回应:客户端收到服务器响应后,验证 服务器的数字证书的真实性(使用本地的 CA 公钥)。如果验证通过,客户端生成一个随机数(pre-master key),用服务器的 公钥加密,并发送给服务器。客户端发送加密通信算法改变通知和客户端握手结束通知。
  4. 服务器最后回应:服务器收到客户端的 pre-master key 后,使用自己的 私钥解密。双方使用三个随机数和协商的加密算法生成 会话密钥(session key)。服务器发送加密通信算法改变通知和服务器握手结束通知,表示握手阶段结束。
1.2.5.5 HTTPS 应用数据如何保证完整性?
  1. 加密:HTTPS使用非对称加密传输对称密钥,然后使用对称密钥进行高效加密,确保数据在传输过程中的机密性。
  2. 完整性保护:通过SSL/TLS实现通信加密,使用证书确认通信方身份,并利用散列值校验确保内容不被篡改。
  3. 消息认证码(MAC):在数据传输过程中,使用MAC可以验证数据的完整性,确保数据在传输过程中未被篡改。
1.2.5.6 HTTPS 一定安全可靠吗?

HTTPS提供了较高的安全性,但并不是绝对安全的。其安全性取决于多个因素:

  1. 正确配置:服务器必须正确配置SSL/TLS,包括使用强加密套件和定期更新证书。
  2. 证书管理:证书的管理和验证是HTTPS安全的关键。如果证书被错误地颁发或被恶意使用,可能会导致安全漏洞。
  3. 协议漏洞:SSL/TLS协议本身可能存在漏洞,需要定期更新和修补以防止安全威胁。
  4. 中间人攻击:尽管HTTPS可以防止中间人攻击,但如果用户不小心点击了钓鱼链接或被误导安装了假证书,仍然可能受到攻击。
1.2.6 HTTP/1.1、HTTP/2、HTTP/3 演变
  1. HTTP/1.1 做了哪些优化?持久连接:HTTP/1.1支持持久连接(Connection: keep-alive),减少了TCP连接的建立和关闭次数,降低了延迟。管道化请求:HTTP/1.1允许在同一个TCP连接上发送多个请求,减少了等待时间。更多的请求方法和状态码:HTTP/1.1引入了更多的请求方法(如PUT、DELETE等)和状态码,使得HTTP协议更加灵活。
  2. HTTP/2 做了哪些优化?二进制协议:HTTP/2采用二进制格式,提高了解析效率。多路复用:HTTP/2允许在同一个连接上并行传输多个请求和响应,避免了队头阻塞问题。头部压缩:HTTP/2引入了HPACK算法,对请求和响应头部进行压缩,减少了冗余数据的传输。服务器推送:服务器可以主动推送资源给客户端,减少了请求的延迟。
  3. HTTP/3 做了哪些优化?基于QUIC协议:QUIC是一个基于UDP的传输层协议,提供了更快的连接建立速度和更好的拥塞控制。更快的连接建立:由于基于QUIC,HTTP/3不需要像TCP那样进行三次握手,从而加快了连接建立的速度。更好的并发处理能力:QUIC协议的多路复用不依赖于有序的包传输,即使在丢包的情况下也能保持并发流的独立性。头部压缩:HTTP/3使用QPACK算法对头部进行压缩,进一步提高了压缩效率。
#八股文##计算机网络#
全部评论

相关推荐

评论
3
1
分享
牛客网
牛客企业服务