HTTP入门(二):简单的http协议

2.1HTTP协议用于客户端和服务器端之间的通信

  • 请求访问文本或图像资源的一端称为客户端,而提高资源响应的一端称为服务器端 。

  • 应用HTTP协议时,必定有端担任客户端角色,另一端担任服务器端的角色。

  • 有时候,两台计算器作为客户端和服务器端的角色有可能会互换,但就仅从一条通信路线来说,服务器端和客户端的角色是确定的,而用HTTP协议能够明确区分哪端是客户端,哪端是服务器端。

2.2通过请求和响应的交换达成通信

  • 请求必定由客户端发出,而服务器端恢复响应

  • HTTP协议规定,请求从客户端发出,最后服务器端响应返回,即:肯定是先从客户端开始建立通信的,服务端在没有接受到请求之前不会发送响应。

  • 请求

    xxuXR.png

  • 响应

xxpid.png

2.3HTTP是不保存状态的协议

  • HTTP是一种不保存状态的协议,即无状态协议。HTTP自身不会对请求和响应之间的通信状态进行保存,在HTTP这个级别,协议对于发送过的请求或响应不做持久化处理。
  • 优点:
    • 快速地处理大量事务,确保协议的可伸缩性。
  • 缺点:Web需要保持状态的功能,于是引入了Cookie技术。

2.4请求URI定位资源

  • 使用URI定位互联网上的资源。

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

    xx4Zr.png

2.5告知服务器意图的HTTP方法

  • HTTP1.1中可以使用的方法

  • 客户端用到的手段,具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。

  • 方法名区分大小写,注意要用大写字母

    xxodO.png

1.GET获取
  • GET方法用来请求访问已被URI识别的资源,指定的资源经服务器端解析后返回响应的内容。

  • 即:如果请求的资源是文本,那就保持原样返回;如果是CGI那样的程序,则返回执行后的输出结果。

    xxlxz.png

2.POST:传输实体主体
  • POST主要是用来传输实体的主体。

    xxSmS.png

3.PUT:传输文件
  • PUT用来传输文件,就像FTP协议的文件上传一样,要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。

  • 但是,HTTP1.1的PUT方法自身不带验证方法,存在安全性问题,因此一般的Web网站不使用该方法。若配合Web应用程序的验证机制或架构设计采用REST,可能开放使用PUT方法。

    xxfhh.png

4.HEAD:获得报文首部
  • HEAD和GET方法一致,只是不返回报文主体部分 ,用于确定URI的有效性及资源更新的日期时间等。

    xxikH.png

5.DELETE:删除文件
  • DELETE用来删除文件,是与PUT相反的方法。其按请求URI删除指定的资源。

  • 但是,和PUT方法一致,HTTP1.1的DELETE方法自身不带验证方法,存在安全性问题,因此一般的Web网站不使用该方法。若配合Web应用程序的验证机制或架构设计采用REST,可能开放使用DELETE方法。

    xx2DN.png

6.OPTIONS:询问支持的方法
  • 用来询问针对请求URI指定的资源支持的方法。

    xx7pu.png

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版本

    xxR19.png

2.6持久连接节省通信量

  • HTTP初始版本中,每进行一次HTTP通信就要断开一次TCP连接
  • 每次请求都会造成无谓的TCP连接和断开,增加通信量的开销。
  • 如:发送一份包含多张图片的HTMl文档对应的页面,会产生大量的通信开销。
1.持久连接
  • 为解决上述问题,HTTP/1.1和HTTP/1.0提出了持久连接(HTTP keep-alive)的方法。持久连接的特点是:只要任意一端没有明确提出断开连接,则抱持TCP连接状态。
  • 优点:
    • 减少了TCP连接的重复建立和断开所需要的额外开销,减轻了服务器的负载。
    • 减少的那部分时间,使HTTP请求和响应能够更早的结束,这样Web页面的显示速度也响应提高了。
2.管线化
  • 持久连接使多数请求一管线化方式发送、使得发送请求后不用等待亦可直接发送下一个请求。这样就能做到并行发送多个请求,而不是一个接一个等待响应了。

x29hR.png

2.7使用Cookie状态管理

  • 解决HTTP无状态的特点造成的问题,通过Cookie技术通过在请求和响应报文中写入Cookie信息来控制苦短的状态
  • Cookie会根据从服务器端发送的响应报文中一个叫做set-Cookie的首部字段信息,通知客户端保存Cookie,当下次客户端再往服务器发送请求时,客户端会自动在请求的报文中加入Cookie值后发送出去。

2.8参考

图解HTTP

猜你喜欢

转载自blog.csdn.net/endlessseaofcrow/article/details/80375139
今日推荐