首页 > 代码库 > HTTP协议

HTTP协议

  • Http(Hypertext Transfer Protocol)超文本传输协议,从1990年开始就在WWW上广泛应用,是现今在WWW上应用得最多的协议,目前的版本为1.1
  • Http是应用层协议,当你上网浏览网页的时候,浏览器和服务器之间就会通过Http在Internet上进行数据的发送和接收
  • Http是一个基于请求/响应模式的,无状态的协议(request/response based ,statelessprotocol)

技术分享

为什么要客户发起连接?

因为http协议是基于TCP/IP协议的,TCP的三次握手要求客户端发起连接

  • 在Http1.0中,当连接建立后,浏览器发送一个请求,服务器回应一个消息,之后,连接就被关闭。当浏览器下次请求的时候,需要重新建立连接,很显然这种需要不断建立连接的通信方式开销比较大。早期的Web页面通常只包含HTML文本,因此即使建立连接的开销比较大,也不会有太大的影响。而现在的Web页面往往包含多种资源(图片,动画,声音等),每获取一种资源,就建立一次连接,这样就增加了HTTP服务器的开销,造成了Internet上的信息堵塞
  • 因此在Http1.1版本中,给出了一个持续连接(Persistent Connections)的机制,并将其作为Http1.1中建立连接的缺省行为。通过这种连接,浏览器可以在建立一个连接之后,发送请求并得到回应,然后继续发送请求并再次得到回应。而且,客户端还可以发送流水线请求,也就是说,客户端可以连续发送多个请求,而不用等待每一个响应的到来

对于持续连接,什么时候断开连接呢?服务器在一定的时间内,比如说3秒钟没有接收到客户端的请求,就认为请求完了,就关闭连接。
根据TCP协议我们知道,断开连接是由服务器端发起的

  • 一个WEB站点每天可能要接收到上百万的用户请求,为了提高系统的效率, HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。但是,这也造成了一些性能上的缺陷,例如,一个包含有许多图像的网页文件中并没有包含真正的图像数据内容,而只是指明了这些图像的URL地址,当WEB浏览器访问这个网页文件时,浏览器首先要发出针对该网页文件的请求,当浏览器解析WEB服务器返回的该网页文档中的HTML内容时,发现其中的<img>图像标签后,浏览器将根据<img>标签中的src属性所指定的URL地址再次向服务器发出下载图像数据的请求

 技术分享

显然,访问一个包含有许多图像的网页文件的整个过程包含了多次请求和响应,每次请求和响应都需要建立一个单独的连接,每次连接只是传输一个文档和图像,上一次和下一次请求完全分离。即使图像文件都很小,但是客户端和服务器端每次建立和关闭连接却是一个相对比较费时的过程,并且会严重影响客户机和服务器的性能。当一个网页文件中包含Applet, JavaScript文件, CSS文件等内容时,也会出现类似上述的情况。

 

HTTP协议