JavaWeb教程视频_HTTP协议版本

JavaWeb教程视频_HTTP协议版本

更新时间:2017年04月08日

  • 网盘提取码:a8gq
  • 适合对象:Java学员、Java爱好者、开发人员
  • qq号:2158476996
一键免费下载

下载介绍

更多>>
JavaWeb教程视频_HTTP协议版本

客户端若要向服务端发出请求,必须首先在它们之间创建一个 TCP(Transfer Control Protocal,传输控制协议)连接。而当客户端与服务端的通讯结束后,TCP 连接将被关闭。 而这个连接就是基于 HTTP 协议的。 请注意一点:从“计算机网络通信”细节上来说,TCP 连接的建立需要经过“三次握手”, TCP 连接的关闭需要经过“四次通信”。后面的学习只是从简单的原理上进行分析,不进行 网络通信细节上的讲解了。 在通讯中真正使用的 HTTP 协议,共有两种:HTTP1.0 版与 HTTP1.1 版。这两个版本目 前都仍在使用中。

HTTP1.0 协议规定,客户端若要向服务端发出请求,必须首先在它们之间创建一个 TCP (Transfer Control Protocal,传输控制协议)连接。而当客户端接收到服务端所发出的响应后, 服务端将关闭 TCP 连接。只有等待上一次的请求所对应的响应被客户端接收到后,客户端才 可发出第二次请求。HTTP1.0 协议中的连接属于非持久连接,且服务器不跟踪和记录任何一 次请求与响应。

客户端和服务端每次建立和关闭连接都是一个相对比较费时的过程,会严重影响客户端 和服务端的性能。 单从前面的“浏览器自动发出的请求”例子中就可看到,一个简单的页面就发出了四次 请求,使用 HTTP1.0 协议,就需要创建与关闭四次连接,严重影响了服务器的响应速度,降 低了用户体验。

HTTP 1.1 版本是目前浏览器默认采用的 HTTP 协议版本,是一种持久连接,在一个 TCP 连接上可以传送多个 HTTP 请求和响应,减少了建立和关闭连接的消耗和延迟。一个包含有 许多 CSS、JS、图片等资源的页面,其所发出的多个请求和响应可以在一个连接中传输。但 每个单独的页面文件的请求和响应仍然需要使用各自的连接。 HTTP 1.1 还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务 器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每 次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。 HTTP1.0 在客户端接收到服务端发送来的响应后,TCP 连接马上关闭。而 HTTP1.1 的连 接是什么时候关闭呢?客户端在发送创建 TCP 连接请求之前首先计算出本次连接浏览器所 要发送的请求数量,即一次手工请求加上其所携带的所有自动请求数量。当所有浏览器所发 出的请求全部发送完毕后,客户端会再自动发送一个关闭 TCP 连接的请求。这个请求在 HttpWatch 中是看不到的。 为了防止服务器主动将 TCP 连接关闭,在每一个请求中都携带了一个参数 Connection, 用于告诉服务器是否关闭连接。在 HttpWatch 中可以看到的这些请求中,其 Connection 参数 值均为 Keep-Alive 保持连接。只有当客户端发送了关闭 TCP 连接请求时,服务器才会将 TCP 连接关闭。

当然,除了改进了 HTTP1.0 协议的性能问题外,HTTP 1.1 还通过增加更多的请求头和响 应头来改进和扩充 HTTP 1.0 的功能。 例如,由于 HTTP 1.0 不支持 Host 请求头属性,WEB 浏览器无法使用主机域名来明确表 示要访问服务器上的哪个 WEB 站点,这样就无法使用 WEB 服务器在同一个 IP 地址 和端口 号上配置多个虚拟 WEB 站点。在 HTTP 1.1 中增加 Host 请求头字段后,WEB 浏览器可以使用 主机域名来明确表示要访问服务器上的哪个 WEB 站点,这才实现了在一台 WEB 服务器上可 以在同一个 IP 地址和端口号上使用不同的主机名来创建多个虚拟 WEB 站点。 HTTP 1.1 的持续连接,也需要增加新的请求头来帮助实现,例如,Connection 请求头的 值为 Keep-Alive 时,客户端通知服务器返回本次请求的响应后后仍然保持连接;Connection 请求头的值为 close 时,客户端通知服务器关闭连接。

Java相关视频锦集

返回顶部