2.1HTTP协议用于客户端和服务器端之间的通信
请求访问文本或图像资源的一端称为客户端,而提高资源响应的一端称为服务器端 。
应用HTTP协议时,必定有端担任客户端角色,另一端担任服务器端的角色。
- 有时候,两台计算器作为客户端和服务器端的角色有可能会互换,但就仅从一条通信路线来说,服务器端和客户端的角色是确定的,而用HTTP协议能够明确区分哪端是客户端,哪端是服务器端。
2.2通过请求和响应的交换达成通信
2.3HTTP是不保存状态的协议
- HTTP是一种不保存状态的协议,即无状态协议。HTTP自身不会对请求和响应之间的通信状态进行保存,在HTTP这个级别,协议对于发送过的请求或响应不做持久化处理。
- 优点:
- 快速地处理大量事务,确保协议的可伸缩性。
- 缺点:Web需要保持状态的功能,于是引入了Cookie技术。
2.4请求URI定位资源
使用URI定位互联网上的资源。
当客户端请求访问资源二发送请求时,URI需要将作为请求报文中的请求URI包含在内,指定请求URI的方式有很多。
2.5告知服务器意图的HTTP方法
HTTP1.1中可以使用的方法
客户端用到的手段,具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。
方法名区分大小写,注意要用大写字母
1.GET获取
GET方法用来请求访问已被URI识别的资源,指定的资源经服务器端解析后返回响应的内容。
即:如果请求的资源是文本,那就保持原样返回;如果是CGI那样的程序,则返回执行后的输出结果。
2.POST:传输实体主体
POST主要是用来传输实体的主体。
3.PUT:传输文件
PUT用来传输文件,就像FTP协议的文件上传一样,要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。
但是,HTTP1.1的PUT方法自身不带验证方法,存在安全性问题,因此一般的Web网站不使用该方法。若配合Web应用程序的验证机制或架构设计采用REST,可能开放使用PUT方法。
4.HEAD:获得报文首部
HEAD和GET方法一致,只是不返回报文主体部分 ,用于确定URI的有效性及资源更新的日期时间等。
5.DELETE:删除文件
DELETE用来删除文件,是与PUT相反的方法。其按请求URI删除指定的资源。
但是,和PUT方法一致,HTTP1.1的DELETE方法自身不带验证方法,存在安全性问题,因此一般的Web网站不使用该方法。若配合Web应用程序的验证机制或架构设计采用REST,可能开放使用DELETE方法。
6.OPTIONS:询问支持的方法
用来询问针对请求URI指定的资源支持的方法。
7.TRACE:请求路径
TRACE方法是让Web服务器端将之前的请求通信环回给客户端的方法。
发送请求时,会在Max-Forwards首部字段中填入数值,每经过一个服务器端就将该数字减1,当数值减为0时 ,就停止继续传输,最后接收到请求的服务器端则返回状态码 200 OK的响应。
客户端可以通过TRACE方法可以查询发送出去的请求是怎样被加工修改/篡改的,这是因为,请求想要连接到源目标服务器可能会通过代理中转,TRACE方法就是用来确认连接过程中发生的一系列操作。
但是,该方法不怎么常用,再加上容易引起XST攻击,通常更不会使用
8.CONNECT:要求用隧道协议连接代理
CONNECT方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL(Secure Sockets Layer,安全套接层)和TLS(Transport Layer Security,传输层安全)把通信内容加密后经网格隧道传输。
CONNECT方法的格式如下所示:
CONNECT 代理服务器名:端口号 HTTP版本
2.6持久连接节省通信量
- HTTP初始版本中,每进行一次HTTP通信就要断开一次TCP连接
- 每次请求都会造成无谓的TCP连接和断开,增加通信量的开销。
- 如:发送一份包含多张图片的HTMl文档对应的页面,会产生大量的通信开销。
1.持久连接
- 为解决上述问题,HTTP/1.1和HTTP/1.0提出了持久连接(HTTP keep-alive)的方法。持久连接的特点是:只要任意一端没有明确提出断开连接,则抱持TCP连接状态。
- 优点:
- 减少了TCP连接的重复建立和断开所需要的额外开销,减轻了服务器的负载。
- 减少的那部分时间,使HTTP请求和响应能够更早的结束,这样Web页面的显示速度也响应提高了。
2.管线化
- 持久连接使多数请求一管线化方式发送、使得发送请求后不用等待亦可直接发送下一个请求。这样就能做到并行发送多个请求,而不是一个接一个等待响应了。
2.7使用Cookie状态管理
- 解决HTTP无状态的特点造成的问题,通过Cookie技术通过在请求和响应报文中写入Cookie信息来控制苦短的状态
- Cookie会根据从服务器端发送的响应报文中一个叫做set-Cookie的首部字段信息,通知客户端保存Cookie,当下次客户端再往服务器发送请求时,客户端会自动在请求的报文中加入Cookie值后发送出去。