计网之HTTP

HTTP

HTTP基本概念

(Hypertext Transfer Protocol)
在两点之间传输【文字、图片、音频、 视频等】超文本数据的约定和规范

cookie

解决HTTP是无状态协议的问题

在这里插入图片描述

HTTP报文格式

在这里插入图片描述

请求报文

在这里插入图片描述

HTTP请求报文
请求行GET /somedir/page.html HTTP/1.1方法字段、URL字段、HTTP版本字段
首部行Host:www.someschool.edu指明对象所在主机(服务器域名)
首部行Connection:Keep-Alive是否长连接,HTTP/1.1默认长连接
首部行User-agent:Mozilla/5.0指明用户代理,即浏览器类型是Firefox
首部行Content-Type:text/html;Charset=utf-8本次数据是网页格式,utf-8编码
首部行Content-Encoding:gzip采用gzip压缩方式
首部行Accept-language:fr希望得到对象的法语版本
首部行Accept-Encoding:gzip可以接受gzip压缩方式
首部行Accept:* / *可以接受任何格式的数据

方法字段

在这里插入图片描述

  • GET:用于请求获取特定资源[只读],通常用于获取网页、图片、文本等静态内容。该方法是幂等的,即多次执行相同的GET请求应该得到相同的结果。实体体为空
  • POST:用于向服务器提交数据[新增或提交],通常用于提交表单数据、上传文件等操作。POST请求可能会引起服务器状态的变化,不是幂等的。
  • PUT:用于向服务器上传新的资源,或者更新现有资源。PUT请求应该是幂等的,即多次执行相同的PUT请求会得到相同的结果。
  • DELETE:用于请求删除指定的资源。DELETE请求应该是幂等的,即多次执行相同的DELETE请求会得到相同的结果。
  • HEAD:与GET方法类似,但只返回响应头部,不返回实际内容。主要用于获取资源的元数据或检查资源是否存在。
  • OPTIONS:用于获取目标资源支持的通信选项。服务器可以返回允许的方法、支持的头部字段等信息。
  • TRACE:用于追踪请求在传输链路上的处理情况。服务器会将接收到的请求原样返回给客户端,用于测试和诊断。
  • CONNECT:用于建立与目标资源的隧道连接,通常用于代理服务器。

响应报文

在这里插入图片描述

HTTP响应报文
状态行HTTP/1.1 200 OK协议版本、状态码、相应状态信息
首部行Connection:close非持续连接
首部行Date:Tue,18,Aug,2015 15:44:04 GMT服务器从文件系统中检索到该对象,将其插入响应报文并发送该响应报文的时间
首部行Server:Apache/2.2.3(CentOS)报文由Apache Web服务器产生
首部行Last-Modified:Tue,18,Aug 2015 15:11:03 GMT对象创建/最后修改的时间
首部行Content-Length:6821被发送对象的字节数
实体体(data data data data data …)所请求的对象本身

状态码

在这里插入图片描述
1xx(Informational):表示请求已经被接收,继续处理中。

2xx(Success):表示请求已成功处理并得到响应。

  • 200 OK:请求成功,服务器正常返回请求的数据。
  • 201 Created:请求成功,并在服务器上创建了新的资源。
  • 204 No Content:请求成功,但响应不包含任何实体内容。
  • 206 Partial Content:请求成功,但响应返回的body数据只是资源的一部分。

3xx(Redirection):表示需要进行进一步的操作,以完成请求。

  • 301 Moved Permanently:请求的资源已永久移动到新的URL。
  • 302 Found:临时重定向,请求的资源暂时移动到新的URL。
  • 303 See Other:重定向到其他资源,常用于POST/PUT方法的响应中
  • 304 Not Modified:资源未修改,客户端可以使用缓存的版本。
  • 307 Temporary Redirect:类似302的临时重定向,但请求方法不得改变
  • 308 Permanent Redirect:类似301的永久重定向,但请求方法不得改变

4xx(Client Error):表示客户端发送的请求有错误。

  • 400 Bad Request:通用差错代码,服务器无法理解请求。
  • 401 Unauthorized:请求需要身份验证。
  • 403 Forbidden:服务器拒绝访问资源。
  • 404 Not Found:请求的资源不存在。

5xx(Server Error):表示服务器在处理请求时发生错误。

  • 500 Internal Server Error:服务器内部错误。
  • 501 Not Implemented:客户端请求的功能还不支持,敬请期待。
  • 502 Bad Gateway:服务器作为网关或代理,从上游服务器收到无效的响应。
  • 503 Service Unavailable:服务器暂时无法处理请求,通常是由于过载或维护。
  • 505 HTTP Version Not Support:服务器不支持请求报文的HTTP协议版本。

HTTP缓存

强制缓存

只要浏览器判断缓存没有过期,就直接使用浏览器的本地缓存
在这里插入图片描述

协商缓存

只有未能命中强制缓存时,才能发起带有协商缓存字段的请求
状态码:304 Not Modified:资源未修改,客户端可以使用缓存的版本

  • 基于时间:通过请求头部的If-Modified-Since字段和响应头部的Last-Modified字段比较
  • 基于唯一标识:通过请求头部的If-None-Match字段和响应头部的Etag唯一标识响应资源字段

在这里插入图片描述

HTTPS

混合加密

混合加密(对称加密、非对称加密)的方式实现信息的机密性,解决了窃听的风险

非对称加密:

  • 公钥加密,私钥解密
    保证内容传输的安全,因为被公钥加密的内容,其他人是无法解密的,只有持有私钥的人,才能解密出实际的内容;
  • 私钥加密,公钥解密
    保证消息不会被冒充,因为私钥是不可泄露的,如果公钥能止常解密出私钥加密的内容,就能证明这个消息是来源于持有私钥身份的人发送的。

摘要算法

摘要算法的方式来实现完整性,它能够为数据生成独一无二的「指纹」,指纹用于校验数据的完整性,解决了篡改的风险

在这里插入图片描述

数字证书

将服务器公钥放入到数字证书中,解决了冒充的风险。

在这里插入图片描述

SSL/TLS

Secure Sockets Layer/Transport Layor Security
在这里插入图片描述
客户端向服务器索要并验证服务器的公钥
双方协商生成会话秘钥
双方采用会话秘钥进行加密通信

先TCP握手,再TLS握手

  • SSL/TLS1.2:四次握手
  • SSL/TLS1.3:三次握手

在这里插入图片描述

HTTP演变

在这里插入图片描述

HTTP 1.1

  • 长连接:只要任意一端没有明确提出断开连接,则保持TCP连接状态,直到超过一定时间没有数据交互
  • 管道网络传输:同一个TCP连接中,客户端可以发起多个请求,只要第一个发出,不必等待第一个返回就可以发下一个

HTTP的Keep-Alive也叫HTTP长连接,该功能是由应用程序实现的,可以使得用同一个TCP连接来发送和接收多个HTTP请求/应答,减少了HTTP短连接带来的多次TCP连接建立和释放的开销

TCP的Keepalive也叫TCP保活机制,该功能是由内核实现的,当客户端和服务端长达一定时间没有进行数据交互时,内核为了确保该连接是否还有效,就会发送探测报文,来检测对方是否还在线,然后来决定是否要关闭该连接

HTTP 2

  • HPACK头部压缩:请求头消除重复,HPACK算法
  • 二进制格式
  • 并发传输:多个stream复用在一个TCP连接,使用Stream ID支持并行交错,但在TCP层仍可能队头阻塞(TCP面向字节流)

在这里插入图片描述

  • 服务器推送:服务器可以主动向客户端发送信息

HTTP 3

QUIC协议,基于UDP

  • 无队头阻塞:Stream之间独立,某个流丢包,只阻塞这个流

  • 更快的连接建立
    在这里插入图片描述
    在这里插入图片描述

  • 连接迁移

TCP四元组:(源地址,源端口,目标地址,目标端口)
QUIC协议没有用四元组的方式来“绑定”连接,而是通过连接ID来标记通信的两个端点,客户端和服务器可以各自选择一组ID来标记自己。因此即使移动设备的网络变化后,导致IP地址变化了,只要仍保有上下文信息(比如连接ID、TLS密钥等),就可以“无缝”地复用原连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

B.D.S.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值