扫盲细节,HTTP协议

HTTP协议简介

HTTP是Hyper Text Transfer Protocol的缩写,是位于应用层的协议,是万维网用于通信的基础。HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,定义了HTTP协议中现今广泛使用的一个版本——HTTP 1.1。2014年12月,互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis(httpbis)工作小组将HTTP/2标准提议递交至IESG进行讨论,于2015年2月17日被批准。 HTTP/2标准于2015年5月以RFC 7540正式发表,取代HTTP 1.1成为HTTP的实现标准。

HTTP协议特点

  • HTTP协议是基于TCP/IP协议上的应用层协议
  • HTTP协议基于请求/响应模式
  • 无状态保持:不会对请求和响应间的通信进行状态保持
  • 无连接:请求时建立连接,完成后释放连接,目的是减小服务器压力

HTTP工作原理

HTTP协议定义客户端与服务端如何通信,采用了客户端请求/服务端相应的模式。客户端向服务端发送一条请求报文,请求报文包含请求的方法、协议版本、请求头和请求数据。服务端响应的内容包含协议的版本、状态码和响应数据等。以下是HTTP请求/响应的简略步骤:

  1. 客户端连接到web服务器

客户端与web服务器的HTTP端口(默认80)建立一个TCP连接

    2. 发送HTTP请求

通过TCP套接字,客户端向web服务器发送请求报文,请求报文包含请求的方法、协议版本、请求头和请求数据组成

    3. 服务器接收客户端请求并返回响应

    4. 如果没有设置保持连接,那么这时候会释放TCP连接

    5. 客户端解析服务端返回的响应

例如在浏览器地址栏输入URL,按下回车之后流程:

  1. 浏览器向DNS服务器申请解析URL中的域名和对应的IP地址
  2. 解析出IP地址后,根据IP地址和默认端口号80,和服务器建立TCP连接
  3. 浏览器发出读取文件的请求发送给服务器
  4. 服务器对浏览器的请求作出响应,并把对应的文本发送给浏览器
  5. 释放TCP连接
  6. 浏览器解析文本并显示内容

HTTP请求方法

1、OPTIONS
返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送的请求来测试服务器的功能性
2、HEAD
向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
3、GET
向特定的资源发出请求。它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
4、POST
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form
5、PUT
向指定资源位置上传其最新内容
6、DELETE
请求服务器删除Request-URL所标识的资源
7、TRACE
回显服务器收到的请求,主要用于测试或诊断
8、CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

GET和POST方法区别

1、GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输。 POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。 因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。 

 2、在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的浏览器和服务器对URL的长度有限制。因此,在使用GET请求时,传输数据会受到URL长度的限制。 对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制,Apache、IIS都有各自的配置。 

 3、安全性 POST的安全性比GET的高。这里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全,上面提到的安全仅仅是不修改服务器的数据。比如,在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到了。除此之外,GET请求提交的数据还可能会造成Cross-site request frogery攻击。

HTTP响应状态码

HTTP请求格式

HTTP响应格式

HTTP和HTTPS的主要区别

  1. HTTP是明文传输,HTTPS是SSL加密传输
  2. HTTP默认端口80,HTTPS默认443
  3. HTTPS需要到CA申请证书
posted @ 2020-08-03 17:12  zero_7  阅读(106)  评论(0编辑  收藏  举报