和我一起学《HTTP权威指南》——连接管理-阿里云开发者社区

开发者社区> 安全> 正文
登录阅读全文

和我一起学《HTTP权威指南》——连接管理

简介:

连接管理

1.TCP连接

几乎所有的HTTP通信都是由TCP/IP承载的。

浏览网页时客户端执行的操作:

如浏览http://www.joes-hardware.com:80/power-tools.html

浏览器收到这个URL时,会执行如下图的步骤。

  • 第1-3步会将服务器的IP地址和端口号从URL中分离出来
  • 第4步建立到Web服务器的TCP连接,在第5步通过这条连接发送一条请求报文
  • 第6步读取响应,第7步关闭连接

8942f980gw1f123ickeajj20gm0cvgn1.jpg

1.1TCP的可靠数据管道

HTTP连接实际上是TCP连接和一些使用连接的规则

TCP连接是互联网上的可靠连接,TCP为HTTP提供一条可靠的比特传输管道,从TCP连接一端以原有的顺序正确的传送出来

1.2TCP流是分段的,有IP分组传送

TCP的数据是通过IP分组的小数据块发送的。

HTTP就是HTTP over TCP over IP这个协议栈中最顶层的协议了。而HTTPS则是在HTTP和TCP之间插入一个(TLS或SSL)的密码加密层

8942f980gw1f124rwjkqqj20gv077aam.jpg

HTTP传送报文,以流的形式将报文数据的内容通过一条打开的TCP连接按序传输。TCP收到数据流后,将数据流砍成段(小数据块),并将段封装到IP分组中,通过互联网传输。
8942f980gw1f125ka4jixj20hk0fo762.jpg

1.3保持TCP连接的正确运行

TCP通过端口号来保持TCP连接的正确运行

IP地址和端口号类似于公司总机号码和分机号

TCP连接通过4个值来识别:

  <源IP地址,源端口号,目的IP地址,目的端口号>

这四个值唯一确定一条连接。

串行连接

8942f980gw1f139di1vtjj20il0690t8.jpg

缺点:

  • TCP的性能时延叠加

  • 用户对网页的加载速度一无所知

并行连接

8942f980gw1f139t9r8ruj20jf0923z5.jpg

缺点:

  • 在有限的带宽内,并行加载多个对象,带来的性能提升很小
  • 打开大量连接会消耗很多内存资源

浏览器将并行连接的总数限制为一个较小的数值。服务器可随意关闭来自特定客户端的超量连接。

持久连接

站点本地性(site locality)

客户端经常打开同一个站点的连接,初始化对某服务器的HTTP请求的应用程序可能在不久后对那台服务器发起更多请求

持久连接

HTTP/1.1(以及HTTP/1.0的各种增强版本)允许HTTP设备在事务处理结束后将TCP连接保持打开状态,以便未来的HTTP请求重用现存的连接。

  • 避免缓慢的连接建立阶段
  • 避免慢启动的拥塞适应阶段
  • 易累积大量的空闲连接,耗费本地和服务器的资源

持久连接和并行连接配合使用可能是最高效的方式。

8942f980gw1f13b4k8627j20k00emgmv.jpg

现在很多Web应用程序:少量的并行连接,每个都是持久连接。

两种类型:

  • HTTP/1.0+ "keep-alive"
  • HTTP/1.1 "persistent"

关闭连接

所有的客户端、服务器或代理都可以在任意时刻关闭一条TCP传输连接。

正常关闭连接

双向的,每端都有一个输入一个输出队列

8942f980gw1f13bnu1qs1j20je05174f.jpg

8942f980gw1f13bp822juj20j80b1wfb.jpg

  • 关闭连接的输出信道是安全的,连接另一端的对等实体从缓冲区读出所有数据后收到通知,说明流结束。它就知道流关闭了
  • 关闭连接的输入信道比较危险,向已关闭的输入信道发送数据,操作系统会向另一端回送一条TCP连接被重置的报文

8942f980gw1f13bunk89sj20ix05o3yw.jpg


原文地址:http://www.cnblogs.com/JohnTsai/p/5197646.html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: