http(3)

作者: xandone | 来源:发表于2019-01-08 15:42 被阅读5次

1.http/1.0
一个http的请求过程,就是建立一个socket通讯的过程,http是不保存状态的协议,因此每次完成一次http请求,就会断开一次TCP连接。
由于互联网的飞速发展,http通讯过程中,传输的文本数据量越来越大,因此,某些请求都会建立很多次socket,造成无谓的TCP连接和断开,增加了通讯量的开销。
大致如下:
建立TCP连接
http请求/响应
断开TCP连接
...
建立TCP连接
http请求/响应
断开TCP连接
直到http请求的文本全部获取,中间可能经历了N次的TCP连接。

2.http/1.1
因而在Http/1.1的版本中,增加了持久连接的方法(keep-alive),http长连接,即只要任意一方没有提出断开连接,那么TCP保持连接状态,一般情况由client这边主动断开连接,但是也不排除服务器不支持长连接,或者等待时间长而导致服务器断开TCP
大致如下:
建立TCP连接
http请求/响应
...
http请求/响应
断开TCP连接
很明显省去了中间的多次TCP连接的过程,提升了web传输的效率,节省了带宽。(注:除非手动附带connection:close的首部,否则默认开启持久连接。)
虽说如此,但是持久化连接和非持久化连接都有一个共同的缺点,每次http的请求都需发送header,除了传输报文主体外,还需传输交换大量的header信息。

3.WebSocket的出现:
WebSocket是HTML5出的东西(协议)
http发送请求后,建立一个TCP连接,之后就不需要继续发送http请求,依然可以和服务端保持长连接,同时,websockt
还是一个双通道的连接,任一端都可以发送和接受消息。
虽然websocket实现了长连接,但是这种长连接可能会出现一种假死状态,因为现实网络中,client端和server端之间存在着复杂的中间网络层,很多时候,
由于C和S端长时间没有互相通讯,TCP可能出现自动断开的情况,而中间网络层在设计上做了层层的缓存处理,websocket在断开之后,仍然会存在一种没有
断开的假象。
解决方法
服务器和客户端能够发送 Ping/Pong Frame(心跳)。这种 Frame 是一种特殊的数据包,它只包含一些元数据而不需要真正的 Data Payload,
可以在不影响 Application 的情况下维持住中间网络的连接状态。

相关文章

  • HTTP/2 HTTP/3

    HTTP/2 HTTP/3 HTTP/1.1 有哪些不足 同一时间一个连接只能对应一个请求 同一个域名, 大多数浏...

  • http/1.1 http/2 http/3

    最近整理了一下http的历史发展,学习参考。 http/2相比与http/1.1,提高了网络的性能优化; http...

  • http(3)

    1.http/1.0一个http的请求过程,就是建立一个socket通讯的过程,http是不保存状态的协议,因此每...

  • HTTP协议-HTTP3

    序言 上节提到HTTP3通过更加底层的传输层的优化来提升效率,究竟如何,让我们一起看一下。 HTTP3的优化 通过...

  • HTTP/2&HTTP/3

    HTTP/2很好的解决了当前常用的HTTP/1的一些性能问题,但兼容等问题使得它并不普及。相较来说,HTTP/2大...

  • HTTP/3 官宣,什么是 HTTP/3

    介绍 HTTP 简史 发布的第一个 HTTP 版本是 HTTP/0.9。Tim Berners-Lee 于 198...

  • (4)HTTP/1.1、HTTP/2、HTTP/3 演变

    一、HTTP/1.1 相比 1.0 性能改进 1)TCP 长连接改善 HTTP/1.0 短连接性能开销 2)支持 ...

  • 图解HTTP(3)

    第九章 基于HTTP的功能追加协议 1. 消除HTTP瓶颈的SPDY(Google 2010),解决性能瓶颈,缩短...

  • HTTP回顾3

    HTTP报文 用于HTTP协议交互的信息被称为HTTP报文,HTTP报文是由多行数据构成的字符串文本,其中,CR+...

  • HTTP/3 原理

    2015 年 HTTP/2 标准发表后,大多数主流浏览器也于当年年底支持该标准。此后,凭借着多路复用、头部压缩、服...

网友评论

      本文标题:http(3)

      本文链接:https://www.haomeiwen.com/subject/nzfbrqtx.html