HTTP从入门到懵逼学习笔记(二)

 今天主要学的是HTTP协议结构。
 感觉纯文字有些时候确实不好说明,所以尽量能放图就放图。HTTP协议规定,请求从客户端发出,最后服务器响应请求并返回。所以说请求必定由客户端发出,而服务器回复响应。下面来说一下HTTP协议有哪些东西。HTTP通过请求和响应的交换达成通信的,其中客户端发送请求报文,而服务器则回复响应报文。

请求报文 响应报文

HTTP从入门到懵逼学习笔记(二)_第1张图片
请求报文的构成.png

HTTP从入门到懵逼学习笔记(二)_第2张图片
响应报文的构成.png

HTTP方法

 如下

OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。
HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
GET:向特定的资源发出请求。
POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改。
PUT:向指定资源位置上传其最新内容。 (鉴于HTTP1.1的PUT方法自身不带验证机制,任何人都可以上传文件,存在安全问题,一般Web网站不使用该方法。若配合Web应用程序自身的验证机制,或架构设计采用REST标准的同类Web网站,就可能会开放该方法)
DELETE:请求服务器删除Request-URI所标识的资源。 (同PUT方法,一般不使用)
TRACE:回显服务器收到的请求,主要用于测试或诊断。
CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

我们在实际应用中常用的是GET和POST方法,所以其他大概了解就行了。

怎么节省通信量

 HTTP的初始版本中,每进行一次HTTP通信就要断开一次TCP连接,但是现如今一个HTML页面包含了很多其他的资源,如插入大量的图片,在请求HTML页面资源的同时,势必也会请求该页面里的其他资源,这样会造成很多无谓的TCP连接建立和断开,增加通信量的开销。

一、持久连接(HTTP keep-alive或HTTP connection reuse)
HTTP从入门到懵逼学习笔记(二)_第3张图片
只要任意一端没有明确提出断开连接,则保持TCP连接状态.png
二、管线化(pipelining)

 以前发送请求需等待并受到响应,才能发送下一请求,而管线化技术使用等待响应可直接发送下一请求。在持久连接的情况下,使用管线化方式做到同时并行发送多个请求,而不需要一个接一个地等待响应。


HTTP从入门到懵逼学习笔记(二)_第4张图片
image.png

状态管理

 HTTP是不保存状态的无状态协议。好处是为了更快的处理大量事务,确保协议的可伸缩性。但是比如说用户登录到一个购物网站,即使他跳转到该站其他的页面,也要能继续保持登录状态。所以引入了Cookie来管理状态。


HTTP从入门到懵逼学习笔记(二)_第5张图片
Cookie通过响应报文中set-Cookie首部字段通知客户端保存Cookie,下次客户端的请求报文中会自动加入Cookie值后发送出去.png

HTTP从入门到懵逼学习笔记(二)_第6张图片
第一次请求.png

HTTP从入门到懵逼学习笔记(二)_第7张图片
包含Set-Cookie值返回响应.png

HTTP从入门到懵逼学习笔记(二)_第8张图片
之后请求自动加入Cookie值.png

今天就到这儿吧,本来还想写点请求和响应的运作,但是真的很困( ‘-ωก̀ )。明天再看吧~
参考资料:《图解HTTP》+无所不知的度娘+各位大佬的博客(文中图片均来自《图解HTTP》)

你可能感兴趣的:(HTTP从入门到懵逼学习笔记(二))