今天主要学的是HTTP协议结构。
感觉纯文字有些时候确实不好说明,所以尽量能放图就放图。HTTP协议规定,请求从客户端发出,最后服务器响应请求并返回。所以说请求必定由客户端发出,而服务器回复响应。下面来说一下HTTP协议有哪些东西。HTTP通过请求和响应的交换达成通信的,其中客户端发送请求报文,而服务器则回复响应报文。
请求报文 响应报文
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)
二、管线化(pipelining)
以前发送请求需等待并受到响应,才能发送下一请求,而管线化技术使用等待响应可直接发送下一请求。在持久连接的情况下,使用管线化方式做到同时并行发送多个请求,而不需要一个接一个地等待响应。
状态管理
HTTP是不保存状态的无状态协议。好处是为了更快的处理大量事务,确保协议的可伸缩性。但是比如说用户登录到一个购物网站,即使他跳转到该站其他的页面,也要能继续保持登录状态。所以引入了Cookie来管理状态。
今天就到这儿吧,本来还想写点请求和响应的运作,但是真的很困( ‘-ωก̀ )。明天再看吧~
参考资料:《图解HTTP》+无所不知的度娘+各位大佬的博客(文中图片均来自《图解HTTP》)