目录
1、Http是什么
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
HTTP是基于B/S架构进行通信的,而HTTP的服务器端实现程序有httpd、nginx等,其客户端的实现程序主要是Web浏览器,例如Firefox、Internet Explorer、Google Chrome、Safari、Opera等,此外,客户端的命令行工具还有elink、curl等。Web服务是基于TCP的,因此为了能够随时响应客户端的请求,Web服务器需要监听在80/TCP端口。这样客户端浏览器和Web服务器之间就可以通过HTTP进行通信了。
一个很重要的一点——http是无状态的
为什么说http协议是无状态的呢,是因为当浏览器第一次给服务端发送请求,服务端响应了;如果同一浏览器,再给服务端发送一个请求,服务端也会响应;但它并不知道你就是刚刚哪个浏览器,就是说浏览器不会记住你们是谁,所以说是无状态的。
所以这样浏览器工作就不够完善,于是我们就给浏览器引入了session和cookie的概念!
详情可以移步 cookie和session
2、Http的发展
1.http0.9
只有一个get命令,服务器只能回应HTML格式字符串,该版本已过时。
2.http1.0
任何格式的内容都可以发送,这使得互联网不仅可以传输文字,还能传输图像、视频、
二进制等文件。除了GET命令,还引入了POST命令和HEAD命令
短链接:每个Tcp连接只能发送一个请求,发送完毕,就得断开连接
3.http1.1
长连接:引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用,默认Connection: keep-alive
引入了管道机制,即在同一个TCP连接里,客户端可以同时发送多个请求
4.http2.0
复用TCP连接,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,且不用按顺序一一对应,避免了队头堵塞的问题,此双向的实时通信称为多工。
HTTP/2 允许服务器未经请求,主动向客户端发送资源,即服务器推送。
3、http请求
客户端------请求Request-------服务端
请求 URL: https://www.baidu.com --请求地址
请求方法: GET --get方法/post方法
状态代码: 200 OK --状态码200
远程地址: 112.80.248.75:443
引用站点策略: unsafe-url
Accept: text/html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cache-Control: max-age=0
Connection: keep-alive
1、请求行
请求方式: get、post、delete、put........
- get:请求携带的参数较少、大小有限制,会在url请求栏上显示数据内容,不安全,但是高效
- post:请求携带的参数没有限制,不会在url请求栏上显示数据内容,安全,但是不高效
2、消息头
Accept: --支持的数据类型
Accept-Encoding: --支持的编码格式
Accept-Language: --语言环境
Cache-Control: --缓存控制
Connection: --告诉浏览器,完成链接断开还是keep-alive
4、http响应
服务端------响应response-------客户端
Bdqid: 0xc6fae86000009684
Cache-Control: private --缓存控制
Connection: keep-alive --连接
Content-Encoding: gzip --编码
Content-Type: text/html;charset=utf-8 --类型
Date: Wed, 13 Jul 2022 10:00:40 GMT --日期
Expires: Wed, 13 Jul 2022 10:00:40 GMT --日期
Server: BWS/1.1
响应状态码
200:响应成功
3xx:请求重定向
4xx:找不到资源 ——404:资源不存在
5xx:服务器代码错误——502:网关错误