HTTP连接管理

Http事务的时延:
(1)TCP建立连接握手
(2)TCP慢启动拥塞控制
(3)数据聚集的Nagle算法
(4)用于捎带确认的TCP延迟确认算法
(5)TIME_WAIT时延和端口耗尽
TCP握手时延:三次握手+四次挥手带来时延;
TCP慢启动时延:一开始会限制发送的分组的速度,避免拥塞控制;新建立的连接的传输速度会小于交换过一定量数据的连接,这个会带来时延;
Nagle算法:TCP发送大量包含少量数据的分组,网络的性能就会下降;Nagle算法试图在发送分组之前,会将大量的TCP分组捆绑在一起,以提高网络的效率;这样就会导致小的HTTP分组无法填满一个分组,可能会一直等待其它数据的到来,导致时延;
延迟确认:确认之后才能继续发送报文;由于确认报文非常的小,所以TCP允许把这个确认捎带在数据分组之中,而不是直接的发送这个确认;延迟确认算法会在一个时间之内,将确认放在缓冲区之中,以寻找能够捎带它的分组,如果在那段时间内没有输出分组,就将确认以单独的分组发送;
TIME_WAIT时延:2MSL

串行处理事务时延:
一个页面嵌入了三张图片,需要发起四个Http请求;

串行处理事务

并行连接:通过多条TCP连接发起并发的HTTP请求;

并行连接

并行连接可能会提高页面的加速度:时延重叠;如果单条连接没有充分利用带宽,就可以将其未用的带宽分配来装载其它对象;
并行连接不一定快:带宽不足,导致每条连接都会以较慢的速度去加载;大量连接还会消耗很多内存,会导致服务器的性能下降;

并行连接的缺点:
每个事务都会打开/关闭一条连接,耗费时间和带宽;
由于TCP的慢启动特性的存在,每条新连接性能的都会下降;
并行连接数是有限的;

持久连接:允许HTTP设备在事务处理结束之后将TCP连接保持在打开状态,以便未来的HTTP请求重用现在的连接;在事务处理结束之后仍然保持在打开状态的TCP连接叫做持久连接;非持久连接会在事件处理结束之后关闭,持久连接会在不同的事务之间保持打开状态;
持久连接的优点:
降低时延和连接建立的开销;
将连接保持在已经调谐的状态;
减少了打开连接的潜在数量;

持久连接+并行连接:
少量并行连接+持久连接;

HTTP/1.0+keep-alive连接:
(1)客户端通过Connection:keep-alive首部发送给服务端;
(2)服务器响应首部包含相同的Connection:keep-alive首部;
(3)如果服务器响应没有Connection:keep-alive首部,客户端就认为服务器不支持keep-alive,会在处理完事务后关闭连接;
持久连接的方式:HTTP/1.0+keep-alive连接;

Keep-alive

keep-alive选项:
keep-alive选项只是请求将连接保持在活跃状态,发送端和接收端并不一定同意进行keep-alive会话;可以在任意时刻关闭keep-alive连接;

keep-alive首部是可选的,但是只有在提供Connection:keep-alive首部才能使用它;下面的实例 max,timeout都是服务器返回的;表明服务器最多还会为5个事务保持连接状态,并且打开状态在连接空闲之后,最多保持120s

keep-alive示例

HTTP/1.1持久连接:
(1)默认持久连接
(2)要在事务处理完之后关闭连接,必须显示的在报文中添加一个Connection:close首部
持久连接的限制和规则:
发送了Connection:close首部后,客户端就无法在那条连接上发送更多的请求了;
如果客户端不想在某条连接上发送请求了,就应该发送Connection:close首部;
只有连接上所有报文都是正确的(实体部分长度==Content-length),连接才能持久;
HTTP/1.1可以在任意时刻关闭连接;
管道化连接:
HTTP/1.1可以在持久连接上选择使用请求管道;在响应到达之前,可以将多条请求放入队列;当第一条请求到达时u,可以发送第二条连接;
管道化连接限制:
客户端无法确认是持久连接,就不应该使用管道;
必须按照和请求相同的顺序来回送HTTP响应;
HTTP客户端必须做好连接随时关闭的准备,还要准备好重新发送未完成的请求;

串行连接
持久连接

管道化连接

TCP关闭:
半关闭:shutdown()
全关闭 : close()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容