HTTP协议学习(三)——连接管理

本篇将讲述( 可以参考《 HTTP权威指南 》的第四章、连接管理 ):
一、HTTP如何使用TCP连接的?
二、TCP连接的延时、瓶颈在哪儿?。
三、HTTP的连接优化方法?
首先说说第一个问题,HTTP如何使用TCP连接?
由于HTTP协议几乎都是由TCP/IP承载,所以在说HTTP如何使用TCP连接之前、必须要了解TCP/IP连接的一些基本知识点、首先TCP是点对点[源IP+端口和目标IP+端口]的通讯,TCP连接中通过[员IP,源端口,目标IP,目标端口]来识别的。这四个值共同定义了一条唯一的连接、不同的TCP连接不能拥有4个完全相同的地址组件值。
TCP的数据传输是通过IP分组的小数据块来发送的。因为HTTP位于HTTP网络协议栈的最顶层(顺带说一下HTTPS网络协议栈、HTTPS只是在HTTP的基础上在HTTP和TCP之间添加了一层加密安全层(SSL OR TSL)协议栈结构组成,如图:
HTTP协议学习(三)——连接管理 - 夜深,人未静 - AlexChen
 )、因此HTTP要传输请求时会以流的形式将报文数据内容通过一条打开( 已建立连接)TCP连接按顺序传输、TCP收到数据流之后再将数据库分成若干段小数据块,并将段封装在IP分组中、再通过internet进行传输。如下图(截图至HTTP权威指南)
HTTP协议学习(三)——连接管理 - 夜深,人未静 - AlexChen
 
TCP提供了一条可靠的传输通道( 从tcp建立连接成功 之后、客户端和服务段的报文就永远不会丢失,计算机奔溃或网络中断的情况下通信会通知客户端和服务器连接中断),另外TCP的传输中、一端填入的字节会在另一端以原有的顺序、正确的传送和输出。这就保证了传输内容在传递过程中不会出现错序而引起的数据混乱。
总结一句话就是: HTTP协议的请求和传输是建立在TCP协议之上的,在内部是以流的形式将数据分为若干小数据块进行传输(这一步是浏览器完成的,浏览器通过我们请求的URL解析出目标IP(查询DNS), 端口,然后建立目标IP+端口的连接,最后在通过TCP发送HTTP的请求内容,得到反馈后浏览器断开连接)。这就整个HTTP从请求到断开连接的一个全过程(不完整、但是开始节点和结束节点完整)。

再来说一下关于:TCP连接的延时、瓶颈。
从HTTP协议栈的组成来看就明白HTTP位于紧邻TCP的上层、因此在很大程度上HTTP的事物性能取决与TCP通信的性能。
HTTP事物延迟有以下 几种主要原因
1:URL的解析、如果没有对URI中主机名进行过访问、那么浏览器在通过DNS解析URI主机名转换IP时将花费数十秒的时间(多数客户端会有dns缓存,这可以提高速度)。
2:解析成功之后客户端会想目标服务器发送一条TCP连接请求、并等待目标服务器回送一个接受应答请求( 或拒绝,拒绝则中断后续步骤),需要知道的是、在TCP建立连接时会有建立时延,通常时延很快,一两秒甚至更短、但如果有多个HTTP事物的话、时延将会增加。
3:连接成功之后、客户端将通过新建立的TCP管道发送HTTP请求、数据到达目标服务器时服务器会从TCP中读取报文并处理,这个传输和处理过程、需要时间。
4:服务器回送HTTP响应,这个传输过程也需要数据。正常情况是响应内容越多时间越长。
这些延迟大小取决于硬件速度、网络、服务器负载、R/Q( 请求和响应)内容大小、客户端和服务器的距离等因素共同决定。在《HTTP权威指南》中还列出了最常见的TCP相关延时,如图:
HTTP协议学习(三)——连接管理 - 夜深,人未静 - AlexChen
 有兴趣的可以具体查阅TCP握手协议以及相关读物了解原因。本博文不再赘述。
下面我们来了解一下HTTP的连接优化。
优化连接的前提是你的知道有那些连接,才能知道如何下手、在HTTP中有几种连接( 具体几种笔者要不能确定、因此这里只简述笔者知道的连接 )
并行连接
说并行之前稍微说一下 串行连接的问题、顾名思义、串行连接时间请求是累加的、也就是顺序请求、有先有后、下面用一张图来说明串行连接
HTTP协议学习(三)——连接管理 - 夜深,人未静 - AlexChen
如图、随着请求的增多( 一个页面有多个资源、每个资源都对应一个请求连接),横坐标时间就越大。其中最严重的问题是、在执行一个请求时、其它的都处于等待状态、比如加载页面图片、在加载A图片时、其它页面对象是没有任何反应的、“感觉”就是很慢的样子。浏览器计算对象的显示位置和大小。因为在对象加载完之前整个屏幕是空白的。
现在真正进入并行连接的介绍、并行连接顾名思义就是多任务同时执行、如图:
HTTP协议学习(三)——连接管理 - 夜深,人未静 - AlexChen
 
每一个请求都是一个新的TCP连接(即客户端建立多个TCP连接,这样可以提高页面的传输速度),用于同时( 近似的看成是同时、如果你够细心的话会发现上图中的软件时延)处理其它请求、请求之间并行执行、这样能减短时延。通常情况下来说、并行连接是个不错的选择、但同时也会引发其它的客户端和服务端性能问题、稍后我会阐述。
持久连接
持久连接,在请求初期不断开与服务器的连接、而在接下来的请求中使用最开始建立的连接、这样能减少建立连接的时延、这样可以更快速的传输数据。持久连接需要客户端或者服务端来终止。但在持久连接中如何很好的管理空连接也是一个棘手的问题( 即在什么时候断开持久连接 ),大量的空连接会耗掉客户端和服务器更多的资源、确切的说是浪费。

总结串行连接、并行连接、持久连接的优缺点:
在串行连接中:优点是不会浪费服务器资源、一切都按照顺序执行,缺点也很明显、对于请求资源非常多的情况下会“很慢”,因为第二个资源必须等到第一个请求响应完毕后才会开始。 串行连接的性能主要消耗在连接的建立,数据请求和传输中。对服务器影响不大,可以忽略。

在并行连接中:优点是能同时发起多个请求、减少因某个请求过大而造成假阻塞的情况、相比串行而言极大的提高了传输速度。因此也带来了它的缺点、客户端会建立多个请求、因此会造成客户端本身的性能问题( 因为每个新请求都是一个TCP连接),因此浏览器使用的就是并行连接,但默认会限制并行请求个数比如4个,5个的方式来保证客户端的其它性能优良。
并行连接的性能在客户端主要消耗在TCP创建是的内存消耗上、对客户端的影响比较大(如果带宽不够大,多个连接争抢定大的带宽可想而知、每个请求都会很慢)、对服务器(还有高速代理)的影响也不容忽视、比如100个用户,每个用户打开100个连接,则服务器需要处理100*100个连接。这会导致服务器性能严重下降。

在持久连接中:优点是省去了并行连接的连接建立时延和适应时延( 因为持久连接只建立一次、以后都使用第一次建立的连接),缺点也很明显、如果不能很好的管理( 因为持久连接需要客户端或服务器来关闭)持久连接将会出现很多空连接、这会极大的影响且浪费服务器性能。
建议,采用并行连接以及持久连接的方式,这样更利于性能的保证和资源的充分利用。

自此、HTTP中的性能优化点就阐述完毕。
转载地址:http://blog.163.com/ny_lonely/blog/static/1889242732013116112920514/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cda备考学习学习笔记——基础知识篇(二)主要涉及了计算机科学与技术领域的基本概念和知识。 首先,它介绍了计算机网络的基础知识。网络是将多台计算机通过通信链路连接起来,使它们能够相互通信和共享资源的系统。笔记中详细介绍了网络的组成、拓扑结构和通信协议等重要内容。 其次,笔记还解释了计算机系统的基本组成。计算机系统由硬件和软件两部分组成,其中硬件包括中央处理器、存储器、输入输出设备等,而软件则分为系统软件和应用软件。笔记详细介绍了各种硬件和软件的功能和作用。 此外,笔记还对数据库管理系统进行了介绍。数据库管理系统是一种用于管理和组织数据的软件系统,它能够实现数据的存储、检索和更新等操作。笔记中详细介绍了数据库的概念、结构和操作等内容。 最后,笔记还包括了算法和数据结构的基础知识。算法是解决问题的一系列步骤和规则,而数据结构则是组织和存储数据的方式。笔记中介绍了常用的算法和数据结构,如排序算法、树和图等。 总之,通过学习CDA备考学习笔记中的基础知识篇(二),我们能够更好地理解计算机网络、计算机系统、数据库管理系统以及算法和数据结构等相关概念和知识。这些基础知识对于我们深入研究计算机科学与技术领域是非常重要的,也为我们日后的学习和工作奠定了坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值