HTTP协议

HTTP协议


1、介绍

HTTP协议(超文本传输协议:Hyper Text Transfer Protocol)用于从万维网服务器传输超文本到本地浏览器的传送协议。其基于TCP/IP通信协议来传递数据,是一个属于应用层面向对象的协议。

特点:

​ 1)简单快速;

​ 2)灵活;

​ 3)无连接;

​ 4)无状态;

​ 5)支持B/S及C/S模式。


2、HTTP请求组成
2.1 请求行

请求类型 请求路径 协议版本

GET / HTTP/1.1
2.2 请求头

Host Referer Cookie Authorization等

2.3 请求体


3、HTTP响应组成
3.1 状态行

协议版本 状态码 请求结果

HTTP/1.1 200 OK
3.2 响应头

Access-Control-Allow-Headers Access-Control-Allow-Methods Access-Control-Allow-Origin等

3.3 响应体

4、状态码
4.1 状态码分类

1xx: 指示消息 – 表示已接收请求,继续处理

2xx: 成功 – 表示请求已被成功接收、理解、接受

3xx: 重定向 – 要完成请求必须进行更进一步的操作

4xx: 客户端错误 – 请求有语法错误或请求无法实现

5xx: 服务端错误 – 服务器未能实现合法的请求

4.2 常见状态码

200: 请求成功

400: 请求有语法错误

401: 未授权

403: 鉴权失败

500: 服务端发生错误

503: 服务端当前不能处理请求,一段事件后可能恢复正常


5、请求方式

GET: 请求指定的页面信息,并返回实体主体

HEAD: 类似于GET,只不过响应中没有具体内容(可用于记录用户行为)

POST: 提交表单数据或者上传文件

PUT: 向服务端传送数据取代指定文档的内容

DELETE: 请求服务器删除指定的内容

CONNECT: HTTP/1.1协议中预留能够将连接改为管道方式的代理服务器

OPTIONS: 允许客户端查看服务器的性能

TRACE: 会先服务器收到的请求(主要用于测试或诊断)

( Restful、Restless )


6、HTTP请求/响应步骤(浏览器输入url地址到页面渲染的整个过程)
6.1 客户端连接到Web服务器

HTTP客户端,通常是浏览器,首先进行DNS解析,再与Web服务器的HTTP端口(默认80)建立一个TCP套接字连接。

6.2 发送HTTP请求

通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,请求报文由请求行请求头部空行请求数据4部分组成。

6.3 服务器接受请求并返回HTTP响应

Web服务器 解析请求鉴权定位请求资源按照HTTP协议进行响应。服务器将资源复本写到TCP套接字,由客户端读取。响应由状态行响应头部空行响应数据4部分组成。

6.4 释放TCP链接

Connection模式close,则服务器主动关闭TCP连接客户端被动关闭连接释放TCP连接;Connection模式keep-alive,则该连接会保持一段时间,在该时间内可以继续接收请求。

6.5 客户端浏览器解析HTML内容

首先解析状态行,查看表明请求是否成功的状态码。然后解析每个响应头响应头告知以下为HTML文档的字符集。客户端读取响应数据HTML,根据HTML语法对其进行格式化,并在浏览器窗口中显示。


7、 HTTP 1.0、 HTTP 1.1、HTTP 2.0
7.1 HTTP 1.0、 HTTP 1.1、HTTP 2.0在并发请求上的主要区别
7.1.1 HTTP 1.0

每个TCP连接只能发送一次请求,当服务器响应后就会关闭这个连接,下一次请求需再次建立TCP连接。

7.1.2 HTTP 1.1

默认采用持久连接,Connection: keep-alive。取消持久连接Connection: close。增加了管道机制,在同一个TCP连接里允许多个请求同时发送,按照到达服务器的顺序开始处理,当前请求处理完后再处理下一个请求。
缺点:队头阻塞

7.1.3 HTTP 2.0

加了双工模式,服务器也可以同时处理多个请求了,解决了队头阻塞的问题。多路复用,没有了次序的概念。加了服务器推送功能

7.2 HTTP 1.1的长连接和HTTP 2.0多路复用的区别
7.2.1 HTTP 1.1

同一时间一个TCP连接只能处理一个请求,采用一问一答的形式,上一个请求响应后才能处理下一个请求。

7.2.2 HTTP 2.0

同域名上的所有通信都在单个连接上完成。单个连接上可以并行交错的进行请求和响应。

7.3 为什么HTTP 1.1不能实现路由的复用

HTTP 2.0是基于二进制帧的协议,HTTP 1.1是基于文本分隔解析的协议。

HTTP 1.1的报文结构中,服务器需要不断的读入字节,直到遇到换行符,处理顺序是串行的。

HTTP 2.0为最小数据单位,每个都会标识自己属于哪个多个帧组成一个流多路复用,其实就是TCP里存在多条

7.4 更多

HTTP 1.0、 HTTP 1.1、HTTP 2.0的详细区别参考博文:https://www.cnblogs.com/heluan/p/8620312.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值