当前位置: 首页 > Web前端 > CSS

关于Http协议,你一定知道

时间:2023-03-30 16:16:22 CSS

简介HTTP协议是超文本传输??协议(HyperTextTransferProtocol)的缩写,是一种用于将超文本从万维网服务器传输到本地浏览器的传输协议。HTTP是一种基于TCP/IP协议传输数据(HTML文件、图片文件、查询结果等)的通信协议。不涉及数据包(packet)的传输,主要规定了客户端与服务端的通信格式,默认使用80端口。一、Http的特点1、简单、快速:客户端向服务器请求服务时,只需要传递请求方法和路径即可。常用的请求方式有GET、HEAD、PUT、DELETE、POST。每种方法指定一种不同类型的客户端-服务器联系。由于HTTP协议简单,HTTP服务器的程序体积小,所以通信速度很快。2.灵活:HTTP允许传输任何类型的数据对象。3、无连接:无连接的意思是限制每个连接只能处理一个请求。服务器处理完客户端的请求并收到客户端的响应后,断开连接。这样,可以节省传输时间。4.无状态:HTTP协议是无状态的,HTTP协议本身不保存请求和响应之间的通信状态。任意两个请求之间没有依赖关系。直观来说,每个请求都是独立的,与前后请求没有直接联系。该协议本身不保留有关所有先前请求或响应消息的信息。这是为了更快地处理大量交易并保证协议的可扩展性,而HTTP协议特意设计得如此简单。2.Http消息Http消息包括两部分:请求消息和响应消息。请求报文由四部分组成:请求行、请求头、空行和请求体。响应消息由四部分组成:状态行、响应头、空行和响应体。下面详细介绍一下请求报文的各个部分及其作用。1、请求行用于描述请求类型、要访问的资源和使用的HTTP版本。POST/chapter17/user.html在HTTP/1.1以上的代码中,“POST”代表请求方法,“/chapter17/user.html”代表URI,“HTTP/1.1”代表协议和协议版本。现在比较流行的是Http1.1version2,请求头由关键字/值对组成,每行一对,关键字和值之间用冒号“:”隔开。请求标头通知服务器有关客户端的请求。它包含许多有关客户端环境和请求文本的有用信息。其中,例如:**Host,表示主机名,虚拟主机;Connection,HTTP/1.1增加的,使用keepalive,即持久连接,一个连接可以发送多个请求;User-Agent,请求发送者,兼容性和定制需求。**3。最后一个请求头之后是一个空行。这条线非常重要。表示请求头已经结束,接下来是请求正文。4、请求体可以携带多个请求参数的数据name=tom&password=1234&realName=tomson以上代码携带三个请求参数name、password、realName。3、HTTP请求方法GET请求指定的页面信息,返回实体体。HEAD类似于get请求,只是返回的response中没有具体内容。它用于获取标头。POST将数据提交到指定的资源以处理请求(例如提交表单或上传文件)。数据包含在请求正文中。PUT用从客户端发送到服务器的数据替换指定文档的内容。DELETE请求服务器删除指定页面。4、GET和POST的区别GET在浏览器回滚时无害,POST会重新提交请求。GET请求会被浏览器主动缓存,而POST则不会,除非GET请求参数是手动设置的,并且会完整保留在浏览器中。在服务器历史中,POST中的参数不会被保留。GET请求的URL中传递的参数有长度限制,而POST没有限制。GET的参数通过URL传递,POST放在Requestbody中。该代码由三位数字组成,第一个数字定义了响应的类型,可分为五类:1xx:指示信息--表示请求已收到并继续处理2xx:成功--表示请求已被成功接收、理解和接受3xx:重定向--必须执行进一步的操作才能完成请求4xx:客户端错误--请求有语法错误或请求无法执行5xx:服务器端错误--服务器未能执行合法请求比如我们通常看到两种常见的错误状态码:403Forbidden//禁止访问请求的页面404NotFound//请求的资源不存在,例如:一个错误的URL是六、持久连接1.为什么需要持久连接在HTTP协议的初始版本中,每进行一次HTTP通信,都要断开一个TCP连接。就当时的通讯情况来说,因为都是小容量的文字传输,所以连这个都不是什么大问题。但是随着HTTP的普及,文档中包含大量图片的情况越来越多。例如,当使用浏览器浏览包含多张图片的HTML页面时,在发送访问HTML页面资源的请求的同时,还会请求HTML页面中包含的其他资源。因此,每次请求都会造成不必要的TCP连接建立和断开,增加通信开销。2、持久连接的特点为了解决TCP连接的上述问题,HTTP/1.1和HTTP/1.0的一部分提出了持久连接的方法(HTTPPersistentConnections,也称为HTTPkeep-alive或HTTP连接重用)。持久连接的特点是只要任一端没有明确提出断开连接,就会保持TCP连接状态。持久连接的好处是减少了TCP连接重复建立和断开带来的开销,减轻了服务器的负载。另外,减少开销的部分时间使得HTTP请求和响应能够更早结束,从而相应地提高了网页的显示速度。在HTTP/1.1中,默认情况下所有连接都是持久的,但这在HTTP/1.0中并未标准化。虽然有些服务器通过非标准的方式实现了长连接,但是服务器不一定支持长连接。毫无疑问,除了服务端,客户端也需要支持长连接。7.流水线持久连接使得大多数请求以流水线方式发送成为可能。过去发送一个请求后,需要等待并收到响应,才能发送下一个请求。随着管道技术的出现,可以直接发送下一个请求,无需等待响应。这样就可以同时并行发送多个请求,而不用一个接一个地等待响应。通俗的说就是请求一次打包传输,response打包传输回来。管道的前提是在持久连接下。例如,当请求一个包含10张图片的HTML网页时,使用持久连接可以使请求结束比一张一张连接更快。另一方面,流水线比持久连接更快。请求越多,时间差越明显。客户端需要请求这十个资源。以前的做法是在同一个TCP连接中先发送A请求,然后等待服务器响应,收到后再发送B请求,以此类推,而管道机制允许浏览器同时发送这十个请求同样的时间,但是服务器还是按顺序响应A请求,完成后再响应B请求。所以在使用长连接的情况下,一个连接上消息的传递类似于请求1->响应1->请求2->响应2->请求3->响应3的流水线发送就变成了这样:1->要求2->要求3->回应1->回应2->回应3参考《图解HTTP》[日]NobuUeno