读图解http笔记2

简单的HTTP协议

http协议是一种不保存状态的协议,即无状态协议。

http协议不会保存之前发送过的请求或响应功能,比如用户的登录信息等。(不保存交互信息

所以每当有新的请求发送,就会有新的响应产生。

目的:

为了更快地处理大量的事务,确保协议的可伸缩性。

(如果http协议不是无状态协议的话,就需要保存大量的交互信息(会增大cpu的开销和内存资源的消耗),而许多信息不是我们想要保存的。)

扫描二维码关注公众号,回复: 13459798 查看本文章

HTTP协议是用于客户端和服务器端之间的通信,HTTP协议是处于TCP/IP分层的应用层,http协议能够明确区分哪端是客户端,哪端是服务器端。

客户端:请求访问资源的一端。 服务器端:提供资源响应的一端。

HTTP协议通信:

HTTP协议规定:请求从客户端发出,最后服务器端响应,该请求返回。(即只能是客户端先发送请求,服务器端才会响应)

请求报文的组成:

(1)请求方法(get,post,put等)

GET方法:获取资源(侧重用请求数据)

POST方法:传输实体主体(侧重于提交数据)

PUT方法:传输文件(由于HTTP/1.1不带验证机制,任何人都能上传文件,不提倡使用)

DELETE:删除文件(跟PUT方法一样,不提倡使用)

HEAD:获得报文首部(用于确认URI的有效性及资源更新的日期时间)

OPTIONS:询问支持的方法(询问服务器支持的方法)

TRACE:追踪路径(用来确认连接过程中的一系列操作,通常不会用到)

CONNECT:要求用隧道协议连接代理(要求在与代理服务器通信时建立隧道,

主要使用SSL(安全套接层)和TLS(传输层安全)协议把通信内容加密后经网络隧道传输)

(2)请求URI

如果不是访问特定资源而是对服务器本身发起的请求,可以用星号 * 来代替请求URI(只是单纯地想访问服务器

(3)协议版本

(4)请求首部字段(可选)

(5)内容实体

响应报文的组成:

(1)协议版本

(2)状态码(200等)

(3)用以解释状态码的原因短语

(4)响应部首字段(可选)

(5)实体主体

HTTP的持久连接:

原因:HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接。

(在请求一个包含多张图片的HTML页面时,就需要多次请求,每次请求时无谓的TCP连接建立和断开,都会增加通信量的开销)

所以持久连接的特点是只要任意一端没有明确提出断开连接,则保持TCP的连接状态。

持久连接旨在建立一次TCP连接后进行多次的请求和响应的交互

好处:减少通信量的开销;减轻了服务器端的负载,让Web显示速度更快。

减少了连接时的三次握手和断开时的三次握手的开销

管线化:

即不用等待响应,直接发送下一个请求。(持久连接使管线化成为可能)

浏览器在默认状态下并不激活http管线化功能。

Cookie的状态管理

前面提到过HTTP是一种无状态协议,所以不能保存用户登录等信息。

而Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。

Cookie会根据从服务器端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。

当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。

服务器端发现客户端发送过来的Cookie后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息

猜你喜欢

转载自blog.csdn.net/weixin_40729735/article/details/84857336