1. HTTP协议和TCP/IP 协议族内的其他众多的协议相同,用于客户端和服务器之间的通信.请求访问文本或图像等资源的一端称为客户端,而提供资源相应的一端称为服务器端.

  2. 应用HTTP协议时,必定是一端担任客户端角色,另一端担任服务端角色.有时候,按实际情况,两台计算机作为客户端和服务端端角色有可能会互换.但就仅从一条通信路线来说,服务端和客户端的角色是确定的,而HTTP协议能够明确区分哪端是客户端,哪端是服务端.

  3. HTTP协议规定,请求从客户端发出,最后服务端响应该请求并返回.换句话说,肯定是先从客户端开始监理通信的,服务端在没有接收到请求之前不会发送响应.

  4. 起始行开头的GET表示请求访问服务器的类型,称为方法(method) .随后的字符串指明了请求访问的资源对象,也叫做请求URI(request-URI) 最后的HTTP1.1 ,即HTTP的版本号,用来提示客户端使用的HTTP协议功能 .

  5. 请求报文是由请求方法,URI,协议版本,可选的请求首部字段和内容实体构成的.

  6. 响应报文基本上由协议版本,状态码,(表示请求成功或失败的数字代码) ,用以解释状态码的原因短语,可选的响应首部字段以及实体主题构成.

  7. HTTP是一种不保存状态,即无状态(stateless) 协议. HTTP协议自身不对请求和响应之间的通信状态进行保存.也就是说在HTTP这个界别,协议对于发送过的请求或响应都不做持久化处理.

  8. 使用HTTP协议,每当有新的请求发送时,就会有对应的新响应产生.协议本身并不保留之前一切的请求或响应报文的信息. 这是为了更快的处理大量事物,确保协议的可伸缩性,而特意把HTTP协议涉及成如此简单的.

  9. 可是,随着web的不断发展,因无状态而导致业务处理变得棘手情况增多了.

  10. HTTP虽然是无状态协议,但为了实现期望保持状态功能,于是引入了cookie技术. 有了cookie再用HTTP协议通信,就可以管理状态了.

  11. HTTP协议使用URI定位互联网上的资源.正是因为URI的特定功能,在护理阿旺上任意位置的资源都能访问到.

  12. 当客户端请求访问资源而发送请求时,URI需要将作为请求报文中的请求URI包含在内.指定请求URI的方式有很多.

  13. GET(获取资源) : GET方法用来请求访问已被URI识别的资源.指定的资源服务端解析后返回响应内容.也就是说,如果请求的是资源是文本,那就保持原样返回;如果是像CGI(通用网关接口)那样的程序,则返回经过执行后的输出结果.

  14. POST(传输实体主体) : 虽然用GET方法也可以传输实体的主体我,但一般不用GET方法进行传输,而是用POST方法.虽说POST的功能与GET很相似,但POST的主要目的并不是获取响应的主体内容.

  15. PUT(传输文件) : PUT方法用来传输文件.就像FTP协议的文件上传一样,需求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置. 但是,鉴于HTTP1.1. 的PUT方法本身不带验证机制,任何人都可以上传文件,存在安全性问题,因此一般的web网站不适用该方法.若配合web用用程序的验证机制,或架构设计采用rest(表征状态转移) 标准的同类web网站,就可能会开放使用PUT方法 .

  16. DELETE(删除文件) : 用来删除文件,是与PUT相反的方法,delete方法按请求URI删除指定的资源.

  17. 持久连接节省通信量 : HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接. 以当年的通信情况来说,因为都是些容量很小的文本传输,所以即使这样也没有多大问题.可随着HTTP的普及,文档中包含大量图片的情况多了起来.因此每次的请求都会造成无畏的TCP连接建立和断开,增加通信量的开销.

  18. 持久连接 : 为解决上述TCP连接的问题HTTP1.1和一部分的HTTP1.0 相处了持久连接的方法.持久连接的特点是,只要任意一端没有明确提出断开连接,则保持TCP连接状态 .

  19. 持久连接旨在建立1次TCP连接后进行多次请求和响应的交互 : 持久连接的好处在于减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务端的负载. 另外,减少开销的那部分时间,使HTTP请求和响应能够更早的结束,这样,web页面的显示速度也就相应提高了. 早HTTP1.1. 中,所有的连接默认都是持久连接,但是在HTTP1.0内并未标准化. 虽然有一部分服务器通过非标准化的手段实现了持久连接,但服务端不一定能够支持久久连接.毫无疑问,除了服务器,客户端也需要支持之久连接.

  20. 管线化 : 就吃连接似的多数请求以管线化(pipelining) 方式发送成为可能.从前发送请求后需要等待并收到响应,才能发送下一个请求.管线化技术出现后们不用等待响应亦可直接发送下一个请求.这样就能够做到同时并行发送多个请求,而不需要一个接一个的等待响应了.

  21. 与挨个连接相比,用就持久连接可以让请求更快结束.而管线技术则比持久连接还要快.请求数越多,时间差就越明显.

  22. 使用cookie 的状态管理 : HTTP是无状态协议,他不对之前发生过的请求和响应状态进行管理.也就是说,无法根据之前的状态进行本次的请求处理.不可否认,无状态协议当然也有它的优点.由于不必保存状态,自然可减少服务器的CPU及内存资源的小号.从另一侧面来说,也正是因为HTTP协议本身是非常简单的,所以才会被应用在各种场景里.

  23. 保留无状态协议这个特征的同事又要解决类似的矛盾问题,浴室引入的cookie技术.cookie技术通过在请求和响应报文中写入cookie信息来控制和客户端的状态.cookie会根据从服务端发送的响应报文内的一个叫做set-cookie的首部字段信息,通知客户端保存cookie.当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入cookie值后发送出去.服务端发现客户端发送过来的cookie之后,回去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息.