HTTP介绍以及演变

HTTP基本概念:超文本-传输-协议

是在计算机世界中两点之间传输文字,图片,视频等超文本数据的约定和规范。

HTTP 0.9版本:只有get请求,发出的请求没有请求头,没有版本号。已弃用

HTTP 1.0版本:新增了多种请求方式,新增了状态码:分别是信息响应(1XX),成功响应(2XX)、重定向响应(3XX)、客户端错误响应(4XX)和服务端错误响应(5XX),定义了消息头部等。存在的问题:每次发起一个请求都要新建一次TCP连接(三次握手)。而且是串行请求,做了无畏的TCP连接以及断开,增加通信开销。

HTTP 1.1版本:新增长连接通信方式,减少了TCP连接的重复建立和断开所造成的开销。可以在同一个TCP连接中,客户端可以发起多次请求,不必等其回来,就可以发送第二个请求。但是服务器还是按照顺序回应,因此存在队头阻塞问题:第一个请求处理的非常慢,即使第二个请求能够很快处理也不会去处理,导致客户端一直收不到数据。性能瓶颈:

  • 请求头部未压缩就发送,只能压缩body部分。
  • 请求时可能发送相同的头部,浪费较多。
  • 服务器按顺序响应请求,如果服务慢则客户端一直收不到数据。
  • 请求时没有优先级控制。
  • 请求只能客户端请求,服务端被动相应。

HTTP 2.0版本:基于HTTPS,因此安全性也有了保障。2.0会压缩头部,如果同时发出多个请求,请求头是一样的,那么就会消除重复的部分,消除原理:在客户端和服务端同时维护了一张头信息表,所有字段都会存入这个表,生成索引号,以后不用发送相同字段,只需要发送索引号。2.0的报文采用二进制格式,头信息和数据都是二进制,统称为帧。相比于1.1文本形式增加了传输效率。每个请求或回应的数据称为数据流。每个数据流都有独一无二的编号,规定客户端发出的流编号为奇数,服务端为偶数。客户端可以指定流的优先级,优先级高的服务器优先响应。多路复用:在一个连接中并发多个请求或回应,而不是按照顺序一一对应。也就不会出现1.1中的对头阻塞问题,降低延迟,大幅度提高连接利用率。服务端也可以主动推送消息给客户端。举例来说,在浏览器刚请求 HTML 的时候,就提前把可能会用到的 JS、CSS 文件等静态资源主动发给客户端,减少延时的等待。存在缺陷:

  • HTTP工作在应用层,多个HTTP请求复用一个TCP连接,下层的TCP不知道有多少请求复用,一旦发生了丢包现象,就会触发重传机制,此时所有HTTP请求都会等待丢失的包被重传回来。导致HTTP请求阻塞。

HTTP 3.0版本:为了解决2.0版本中的问题,3.0的下层采用UDP,因为UDP不管顺序以及是否到达,所以不会出现一个丢包全部重传问题。但是UDP是不可靠传输,还需要基于QUIC协议来实现类似TCP的可靠性传输。QUIC 有自己的一套机制可以保证传输的可靠性的。当某个流发生丢包时,只会阻塞这个流,其他流不会受到影响。

<think>嗯,用户让我介绍一下HTTP协议,我需要用中文回答。首先,我要确定用户的基础,可能他刚开始学习网络知识,或者只是想了解基本概念。HTTP是应用层协议,用于Web,这点很重要。要解释清楚它是如何工作的,比如客户端-服务器模型,请求-响应模式。需要提到常见的请求方法,比如GET、POST,还有状态码的分类,比如200、404这些。可能还需要讲HTTPS和HTTP的区别,安全性的部分。用户可能想知道为什么HTTP重要,或者有什么缺点,比如无状态,这样自然引出Cookie和Session的作用。结构要清晰,分点说明,但不要太技术化,保持易懂。要检查有没有遗漏的关键点,比如版本发展,HTTP/1.1和HTTP/2的区别,或者HTTP/3,但可能用户只需要基础内容。例子有助于理解,比如输入网址后的过程。避免用太多术语,或者遇到术语时简单解释。确保回答准确,没有错误信息,比如HTTP默认端口是80,HTTPS是443。可能需要提醒用户注意安全性,使用HTTPS的重要性。最后总结一下HTTP的作用和现代互联网中的角色。这样用户应该能得到一个全面的介绍。</think>HTTP(**超文本传输协议**,HyperText Transfer Protocol)是互联网上应用最广泛的**应用层协议**,用于在客户端(如浏览器)和服务器之间传输超文本(如网页、图片等)。它是现代万维网(WWW)数据通信的基础。 --- ### **核心特点** 1. **无状态协议** 每次请求与响应独立,服务器不保留客户端状态(可通过Cookie/Session技术实现状态管理)。 2. **客户端-服务器模型** 客户端发起请求,服务器返回响应(如输入网址后,浏览器向服务器请求页面)。 3. **基于TCP/IP** HTTP默认通过TCP端口`80`通信(HTTPS使用端口`443`,基于TLS加密)。 4. **支持多种方法** 常用请求方法: - `GET`:获取资源(如加载网页) - `POST`:提交数据(如登录表单) - `PUT`、`DELETE`、`HEAD`等:用于RESTful API操作。 5. **状态码标识结果** 响应中包含状态码,例如: - `200 OK`:成功 - `404 Not Found`:资源不存在 - `500 Internal Server Error`:服务器错误。 --- ### **HTTP请求与响应格式** - **请求示例**: ```http GET /index.html HTTP/1.1 Host: www.example.com User-Agent: Chrome/120 ``` 包含请求行(方法+路径+协议版本)、请求头(附加信息)和可选请求体(如POST数据)。 - **响应示例**: ```http HTTP/1.1 200 OK Content-Type: text/html Content-Length: 1234 <html>...</html> ``` 包含状态行(协议版本+状态码)、响应头和响应体(如HTML内容)。 --- ### **HTTPHTTPS的区别** - **HTTPS** = HTTP + SSL/TLS加密,防止数据被窃听或篡改。 - HTTPS通过数字证书验证服务器身份,安全性更高(地址栏显示🔒标志)。 --- ### **版本演变** - **HTTP/1.1**(主流版本):支持持久连接、管道化请求。 - **HTTP/2**:多路复用、头部压缩,提升加载速度。 - **HTTP/3**:基于QUIC协议(UDP),减少延迟。 --- ### **典型应用场景** - 网页浏览、API接口调用、文件下载、实时通信(如WebSocket建立前的握手)。 --- ### **局限性** - 明文传输(HTTP不安全,需HTTPS加密)。 - 无状态特性需额外技术(如Cookie)管理会话。 如果需要更深入的技术细节(如报文结构、缓存机制等),可以进一步提问哦! 😊
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值