笔记

Javascript/CSS

Vue/React

其它

杂物室

杂谈

工具

影像

sleep
宝可梦
西塞尔
Dedsec
Scarlet
Violet
P5
满月
黄昏
深夜
经典
回到顶部

HTTP相关知识点 #154

Anuluca     Date : 2024-08-22   Tags : 2

HTTP(超文本传输协议)是用于在 Web 上传输数据的基础协议。它定义了客户端(通常是浏览器)和服务器之间的通信规则,是互联网中最广泛使用的应用层协议之一。通过 HTTP,浏览器能够向服务器请求网页资源(如 HTML 文件、图像、视频等),服务器则根据请求返回相应的资源。

HTTP 的基本概念

  1. 客户端和服务器

    • 客户端:一般指发起 HTTP 请求的一方,通常是用户的浏览器。
    • 服务器:指接收请求并提供资源的一方,比如托管网站的服务器。
  2. 请求和响应

    • HTTP 请求:由客户端发出,请求服务器提供资源。请求包括请求方法、URL、HTTP 版本、请求头和可选的请求体。
    • HTTP 响应:服务器返回给客户端的内容,包括状态码、响应头、和响应体。
  3. 状态码:表示服务器对请求的处理结果,常见的状态码有:

    • 200 OK:请求成功,服务器已返回资源。
    • 404 Not Found:服务器未找到请求的资源。
    • 500 Internal Server Error:服务器内部错误,无法完成请求。

HTTP 的主要特点

  1. 无状态性:HTTP 是无状态协议,意味着每次请求都是独立的,服务器不会自动保存请求之间的上下文。这种设计使得 HTTP 简单且高效,但也带来了一些问题,比如需要通过 Cookie 或 Session 机制来维持会话状态。

  2. 请求方法

    • GET:请求从服务器获取资源。GET 请求通常用于请求数据而不改变服务器的状态。
    • POST:向服务器提交数据,通常用于表单提交和上传文件。POST 请求会改变服务器上的资源。
    • PUT:用于更新服务器上的资源。
    • DELETE:用于删除服务器上的资源。
  3. URL(统一资源定位符):HTTP 使用 URL 指定要访问的资源。例如,https://www.example.com/index.html 是一个 URL,其中 https:// 表示协议类型,www.example.com 是服务器域名,/index.html 是资源路径。

  4. HTTP 头(Headers)

    • 请求头:携带客户端的附加信息,如用户代理、接受的内容类型等。
    • 响应头:携带服务器的附加信息,如内容类型、响应时间、缓存控制等。
  5. 内容协商:HTTP 支持内容协商,允许客户端指定接受的内容类型、语言、编码方式等,服务器则根据这些信息返回合适的资源。

HTTP 的工作过程

当用户在浏览器中输入一个 URL 并按下回车键时,会发生以下步骤:

  1. DNS 解析:浏览器首先通过 DNS 服务将 URL 中的域名(如 www.example.com)解析为 IP 地址。

  2. 建立 TCP 连接:通过 IP 地址,浏览器与服务器建立一个 TCP 连接,通常使用端口 80(HTTP)或 443(HTTPS)。

  3. 发送 HTTP 请求:浏览器向服务器发送一个 HTTP 请求,其中包含请求方法、请求路径、头部信息等。

  4. 服务器处理请求:服务器接收到请求后,根据请求内容处理并生成响应。

  5. 发送 HTTP 响应:服务器将处理结果通过 HTTP 响应返回给浏览器。响应包含状态码、响应头、和响应体(如 HTML 页面、图片等)。

  6. 浏览器渲染页面:浏览器接收到响应内容后,解析并渲染页面,并可能继续发送更多的请求(如加载图片、CSS 文件等)。

  7. 关闭连接:完成数据传输后,浏览器和服务器可以关闭 TCP 连接,除非使用了 HTTP/1.1 的 Keep-Alive 机制,连接可以保持一段时间用于后续请求。

HTTP 的版本演进

  • HTTP/1.0:最早的 HTTP 版本,每次请求都需要新建一个连接,请求和响应之间没有持久连接。

  • HTTP/1.1:引入了持久连接(Keep-Alive),大大提高了传输效率。同时支持了管线化(Pipelining),允许多个请求并行发送。

  • HTTP/2:引入了二进制帧、多路复用、头部压缩等技术,大幅提高了性能和并发能力。

  • HTTP/3:基于 QUIC 协议,进一步提高了传输速度和可靠性,特别是在不稳定网络环境下的表现更为出色。

HTTP(Hypertext Transfer Protocol)和 HTTPS(Hypertext Transfer Protocol Secure)是用于在客户端(通常是浏览器)和服务器之间传输数据的两种协议。它们的主要区别在于数据传输的安全性。

1. 传输层加密

  • HTTP:HTTP 是一种明文传输协议。数据在客户端和服务器之间传输时没有加密,因此很容易被第三方窃听、篡改或劫持。如果有人在数据传输的过程中截取数据包,他们可以直接看到传输的内容,如用户名、密码等敏感信息。
  • HTTPS:HTTPS 是 HTTP 的安全版本,它使用 SSL(Secure Sockets Layer)或 TLS(Transport Layer Security)协议对数据进行加密。在客户端和服务器之间的数据传输过程中,所有数据都是加密的,无法被第三方轻易查看或篡改。这种加密确保了数据的机密性、完整性和真实性。

2. 端口

  • HTTP:默认使用端口 80。
  • HTTPS:默认使用端口 443。

3. 安全证书

  • HTTP:HTTP 协议不涉及任何安全证书的使用。
  • HTTPS:HTTPS 使用 SSL/TLS 证书来确保通信安全。这些证书通常由权威的证书颁发机构(CA,Certificate Authority)颁发,并在客户端和服务器之间建立安全连接时验证对方的身份。HTTPS 证书可以确保用户正在与真正的服务器通信,而不是中间人攻击中的冒名顶替者。

4. 数据完整性

  • HTTP:因为数据在传输过程中没有加密,可能会被篡改或者损坏而不被察觉。
  • HTTPS:使用消息摘要功能来确保数据的完整性。如果数据在传输过程中被篡改,接收方会发现数据不匹配,从而丢弃数据并重新请求。

5. SEO 和用户信任

  • HTTP:现代浏览器通常会标记 HTTP 网站为“不安全”,这可能会降低用户的信任感。搜索引擎(如 Google)也更倾向于在搜索结果中优先显示使用 HTTPS 的网站。
  • HTTPS:使用 HTTPS 不仅提升了用户信任感,还对网站的 SEO(搜索引擎优化)有利。Google 在其排名算法中已经明确表示会优先考虑 HTTPS 站点。

6. 性能

  • HTTP:由于不进行加密和解密,HTTP 通信比 HTTPS 略快。
  • HTTPS:HTTPS 的加密和解密过程会带来一定的性能开销,尤其是在连接建立阶段。然而,随着硬件的进步和 HTTPS 优化技术(如 HTTP/2)的广泛应用,HTTPS 的性能损耗已经变得微乎其微,且对于用户的数据安全性带来的好处是显而易见的。

7. 实现过程

  • HTTP:直接通过明文进行通信,建立连接后即可传输数据。
  • HTTPS:在传输数据之前,客户端和服务器需要进行一次“握手”过程,用于协商加密算法和密钥。这个过程涉及到 SSL/TLS 证书的验证、会话密钥的生成等步骤。握手完成后,双方才开始安全的数据传输。

8. 使用场景

  • HTTP:适用于对数据安全性要求不高的场景,比如公开的非敏感信息的传输。然而,现代 Web 开发中越来越少使用纯 HTTP 协议,因为安全性问题较为严重。
  • HTTPS:适用于几乎所有场景,尤其是涉及敏感数据传输的场合,如登录页面、支付页面、个人信息页面等。如今,许多网站已经全面采用 HTTPS 来确保用户数据的安全性。

总结

HTTP 和 HTTPS 在数据传输方式上有着根本的区别。HTTP 是不加密的,容易被攻击者窃听或篡改;而 HTTPS 则通过加密机制确保了数据的机密性、完整性和身份验证,极大地提高了通信的安全性。由于这些安全优势,HTTPS 已成为现代 Web 开发的标准协议,取代了传统的 HTTP。

由于某些原因,博客图床于5月26日惨遭爆破,目前正在整理需要的图片并迁移存活的图片到新图床,预计6月10日重新上线网站
   
THE END
   
讨论
 
© 2018 - 2024 Anuluca ▌友情链接 Tsuki's blog | Poke amice | 夜航星
  复制成功!