当前位置: 首页 > news >正文

加大志愿服务网站建设58同城推广

加大志愿服务网站建设,58同城推广,百度开发者中心,2023设计院裁员惨烈程度TCP 协议四个方面的缺陷: 1.升级 TCP 的工作很困难; TCP 协议是在内核中实现的,应用程序只能使用不能修改,如果要想升级 TCP 协议,那么只能升级内核。 而升级内核这个工作是很麻烦的事情 2.TCP 建立连接的延迟&#x…

TCP 协议四个方面的缺陷:

1.升级 TCP 的工作很困难;

TCP 协议是在内核中实现的,应用程序只能使用不能修改,如果要想升级 TCP 协议,那么只能升级内核。
而升级内核这个工作是很麻烦的事情

2.TCP 建立连接的延迟;

大多数网站都是使用 HTTPS 的,这说明在 TCP 三次握手之后,还需要经过 TLS 四次握手后,才能进行 HTTP 数据的传输,这在一定程序上增加了数据传输的延迟。

3.TCP 存在队头阻塞问题;

TCP 是字节流协议,TCP 层必须保证收到的字节数据是完整且有序的,如果序列号较低的 TCP 段在网络传输中丢失了,即使序列号较高的TCP 段已经被接收了,应用层也无法从内核中读取到这部分数据

4.网络迁移需要重新建立 TCP 连接;

当移动设备的网络从 4G 切换到 WIFI 时,意味着 IP 地址变化了,那么就必须要断开连接,然后重新建立 TCP 连接。

而建立连接的过程包含 TCP 三次握手和 TLS 四次握手的时延,以及 TCP
慢启动的减速过程,给用户的感觉就是网络突然卡顿了一下,因此连接的迁移成本是很高的

**

QUIC 协议:

基于 UDP 协议实现的可靠传输协议的成熟方案,已经应用在了 HTTP/3。

1.QUIC 是如何实现可靠传输的?

设计好协议的头部字段。

拿 HTTP/3 举例子,在 UDP 报文头部与 HTTP 消息之间,共有 3 层头部:
在这里插入图片描述
1.Packet Header

在这里插入图片描述
Packet Header 细分这两种:

1.Long Packet Header 用于首次建立连接。
2.Short Packet Header 用于日常传输数据。

QUIC 也是需要三次握手来建立连接的,主要目的是为了协商连接 ID。
协商出连接 ID 后,后续传输时,双方只需要固定住连接 ID,从而实现连接迁移功能

Packet Number 单调递增的两个好处:

1.可以更加精确计算 RTT,没有 TCP 重传的歧义性问题;
2.可以支持乱序确认,因为丢包重传将当前窗口阻塞在原地,而 TCP 必须是顺序确认的,丢包时会导致窗口不滑动

2.QUIC Frame Header

在这里插入图片描述

每一个 Frame 都有明确的类型,针对类型的不同,功能也不同,自然格式也不同。
以下为 Stream 类型的 Frame 格式,Stream 可以认为就是一条 HTTP 请求:

在这里插入图片描述

1.Stream ID 作用:多个并发传输的 HTTP 消息,通过不同的 Stream ID 加以区别,类似于 HTTP2 的 Stream ID;
2.Offset 作用:类似于 TCP 协议中的 Seq 序号,保证数据的顺序性和可靠性;
3.Length 作用:指明了 Frame 数据的长度

通过 Stream ID + Offset 字段信息实现数据的有序性,通过比较两个数据包的 Stream ID 与 Stream Offset ,如果都是一致,就说明这两个数据包的内容一致

总结:
QUIC 通过单向递增的 Packet Number,配合 Stream ID 与 Offset 字段信息,可以支持乱序确认而不影响数据包的正确组装,摆脱了TCP 必须按顺序确认应答 ACK 的限制,解决了 TCP 因某个数据包重传而阻塞后续所有待发送数据包的问题

2.QUIC 是如何解决 TCP 队头阻塞问题的?

QUIC 也借鉴 HTTP/2 里的 Stream 的概念,在一条 QUIC 连接上可以并发发送多个 HTTP 请求 (Stream)。

但是 QUIC 给每一个 Stream 都分配了一个独立的滑动窗口,这样使得一个连接上的多个 Stream 之间没有依赖关系,都是相互独立的,各自控制的滑动窗口。

假如 Stream2 丢了一个 UDP 包,也只会影响 Stream2 的处理,不会影响其他 Stream,与 HTTP/2 不同,HTTP/2 只要某个流中的数据包丢失了,其他流也会因此受影响。
在这里插入图片描述
3.QUIC 是如何做流量控制的?

QUIC 实现流量控制的方式:

1.通过 window_update 帧告诉对端自己可以接收的字节数,这样发送方就不会发送超过这个数量的数据。
2.通过 BlockFrame 告诉对端由于流量控制被阻塞了,无法发送数据

QUIC 实现了两种级别的流量控制,分别为 Stream 和 Connection 两种级别:

1.Stream 级别的流量控制:Stream 可以认为就是一条 HTTP 请求,每个 Stream 都有独立的滑动窗口,所以每个 Stream 都可以做流量控制,防止单个 Stream 消耗连接(Connection)的全部接收缓冲。
2.Connection 流量控制:限制连接中所有 Stream 相加起来的总字节数,防止发送方超过连接的缓冲容量。
Connection 级别的流量窗口,其接收窗口大小就是各个 Stream 接收窗口大小之和。

4.QUIC 是如何迁移连接的?
QUIC 协议没有用四元组的方式来“绑定”连接,而是通过连接 ID来标记通信的两个端点,客户端和服务器可以各自选择一组 ID 来标记自己,因此即使移动设备的网络变化后,导致 IP 地址变化了,只要仍保有上下文信息(比如连接 ID、TLS 密钥等),就可以“无缝”地复用原连接,消除重连的成本,没有丝毫卡顿感,达到了连接迁移的功能。

5.QUIC 对拥塞控制改进

QUIC 是处于应用层的,应用程序层面就能实现不同的拥塞控制算法,不需要操作系统,不需要内核支持

QUIC 可以随浏览器更新,QUIC 的拥塞控制算法就可以有较快的迭代速度。

QUIC 处于应用层,所以就可以针对不同的应用设置不同的拥塞控制算法,这样灵活性就很高了

6.QUIC 更快的连接建立

HTTP/3 在传输数据前虽然需要 QUIC 协议握手,这个握手过程只需要 1 RTT,握手的目的是为确认双方的「连接 ID」,连接迁移就是基于连接 ID 实现的。

但是 HTTP/3 的 QUIC 协议并不是与 TLS 分层,而是QUIC 内部包含了 TLS,它在自己的帧会携带 TLS 里的“记录”,再加上 QUIC 使用的是 TLS1.3,因此仅需 1 个 RTT 就可以「同时」完成建立连接与密钥协商,甚至在第二次连接的时候,应用数据包可以和 QUIC 握手信息(连接信息 + TLS 信息)一起发送,达到 0-RTT 的效果。

如下图右边部分,HTTP/3 当会话恢复时,有效负载数据与第一个数据包一起发送,可以做到 0-RTT(下图的右下角):

在这里插入图片描述

http://www.dinnco.com/news/41082.html

相关文章:

  • 网站服务器ipv6企业网络推广方式
  • 衣服网站建设策划书深圳网络推广推荐
  • 府网站建设先进个人产品软文范例1000字
  • 做网站有未来吗优化网站关键词
  • 英文网站推广服务太原seo排名
  • 海门市规划建设局网站竞价托管如何托管
  • asp 做网站阿里云域名注册官网网址
  • 广西建设学院网站首页友情链接是啥意思
  • 为什么要做手机网站开发广告主广告商对接平台
  • 国内老牌的注册代理成都自然排名优化
  • 用别人身份证备案网站北大青鸟
  • 深圳做网站最好的公珠海seo排名收费
  • wordpress+软件+入门关键词优化seo
  • 顺德网站建设价格搜索引擎优化的基本方法
  • 网站主服务器ip地址seo营销怎么做
  • 聊城网站开发个人广州网页定制多少钱
  • 电影网站如何做不侵权清博大数据舆情监测平台
  • 网站建设与推广工资网站怎么优化关键词快速提升排名
  • 网站推广策划方案书广州排前三的seo公司
  • 广州网站制作系统百度收录批量查询
  • 只做一页的网站多少钱友链大全
  • 网站开发从整体上创建属于自己的网站
  • 山东网站建设开发维护竞价托管选择微竞价
  • 某网站网站的设计与实现我想做网络推广找谁
  • 广告公司寮步网站建设线上销售平台都有哪些
  • 酒类做网站百度竞价推广怎么收费
  • 网站建设环境软件有哪些网站优化公司上海
  • 做网站的可以注册个工作室吗婚恋网站排名
  • 有的网站打开慢易观数据app排行
  • 福建省政府门户网站建设站长之家seo综合