计算机与网络 - 网络 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头部中的字段如ExpiresCache-Control来控制。

    • 这些字段指定资源的有效期限,在此期限内,客户端可以直接使用缓存的资源而无需再次请求。

  2. 协商缓存:

    • 协商缓存使用ETagLast-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算法对头部进行压缩,进一步提高了压缩效率。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352

推荐阅读更多精彩内容