关于网络协议的若干问题(四)

news2024/11/26 14:31:38

1、QUIC 是一个精巧的协议,它有哪些特性?

:QUIC 还有其他特性,一个是快速建立连接。另一个是拥塞控制,QUIC 协议当前默认使用了 TCP 协议的 CUBIC(拥塞控制算法)。

CUBIC 进行了不同的设计,它的窗口增长函数仅仅取决于连续两次拥塞事件的时间间隔值,窗口增长完全独立于网络的时延 RTT。

CUBIC 的窗口大小以及变化过程如图所示。

当出现丢包事件时,CUBIC 会记录这时的拥塞窗口大小,把它作为 Wmax。接着,CUBIC 会通过某个因子执行拥塞窗口的乘法减小,然后,沿着立方函数进行窗口的恢复。

从图中可以看出,一开始恢复的速度是比较快的,后来便从快速恢复阶段进入拥塞避免阶段,也即当窗口接近 Wmax 的时候,增加速度变慢;立方函数在 Wmax 处达到稳定点,增长速度为零,之后,在平稳期慢慢增长,沿着立方函数的开始探索新的最大窗口。

2、HTTP 的 keepalive 模式是什么样?

:在没有 keepalive 模式下,每个 HTTP 请求都要建立一个 TCP 连接,并且使用一次之后就断开这个 TCP 连接。

使用 keepalive 之后,在一次 TCP 连接中可以持续发送多份数据而不会断开连接,可以减少 TCP 连接建立次数,减少 TIME_WAIT 状态连接。

然而,长时间的 TCP 连接容易导致系统资源无效占用,因而需要设置正确的 keepalive timeout 时间。当一个 HTTP 产生的 TCP 连接在传送完最后一个响应后,还需要等待 keepalive timeout 秒后,才能关闭这个连接。如果这个期间又有新的请求过来,可以复用 TCP 连接。

3、HTTPS 协议比较复杂,沟通过程太繁复,这样会导致效率问题,那有哪些手段可以解决这些问题吗?

:通过 HTTPS 访问的确复杂,至少经历四个阶段:DNS 查询、TCP 连接建立、TLS 连接建立,最后才是 HTTP 发送数据。

首先如果使用基于 UDP 的 QUIC,可以省略掉 TCP 的三次握手。至于 TLS 的建立,如果按基于 TLS 1.2 的,双方要交换 key,经过两个来回,也即两个 RTT,才能完成握手。

在 TLS 1.3 中,握手过程中移除了 ServerKeyExchange 和 ClientKeyExchange,DH 参数可以通过 key_share 进行传输。这样只要一个来回,就可以搞定 RTT 了。

对于 QUIC 来讲,也可以这样做。当客户端首次发起 QUIC 连接时,会发送一个 client hello 消息,服务器会回复一个消息,里面包括 server config,类似于 TLS1.3 中的 key_share 交换。当客户端获取到 server config 以后,就可以直接计算出密钥,发送应用数据了。

4、.HTTPS 的双向认证流程是什么样的?

5、随机数和 premaster 的含义是什么?

6、RTMP 建立连接的序列是什么样的?

客户端发送 C0、C1、 C2,服务器发送 S0、 S1、 S2。

首先,客户端发送 C0 表明自己的版本号,不必等对方的回复,然后发送 C1 表明自己的时间戳。

服务器只有在收到 C0 的时候,才能返回 S0,表明自己的版本号。如果版本不匹配,可以断开连接。

服务器发送完 S0 后,也不用等什么,就直接发送自己的时间戳 S1。客户端收到 S1 的时候,发一个知道了对方时间戳的 ACK C2。同理服务器收到 C1 的时候,发一个知道了对方时间戳的 ACK S2。

于是,握手完成。

7、全局负载均衡使用过程中,常常遇到失灵的情况,你知道具体有哪些情况吗?对应应该怎么来解决呢?

:全局负载均衡失灵的时间,可以分情况来应对而导致的。

1,全局负载均器因为流量过大,失灵,此情况,是因为流量已经超过了当前机器的极限所导致的,针对此只能通过扩容来解决。


2,全局负载均衡器因为机器故障了,导致的失灵。此情况的发生,说明机器存在负载均衡器有单点问题,须通过增加备机,或者更为可靠的集群来解决。


3,全局负载均衡器因为网络故障,导致的失录此情况,案例莫过于支付宝的光纤被挖掘机挖断,此问题可通过接入更多的线路来解。

8、如果权威 DNS 连不上,怎么办?

:一般情况下,DNS 是基于 UDP 协议的。在应用层设置一个超时器,如果 UDP 发出没有回应,则会进行重试。

DNS 服务器一般也是高可用的,很少情况下会挂。即便挂了,也会很快切换,重试一般就会成功。

对于客户端来讲,为了 DNS 解析能够成功,也会配置多个 DNS 服务器,当一个不成功的时候,可以选择另一个来尝试。

9、对于数据中心来讲,高可用是非常重要的,每个设备都要考虑高可用,那跨机房的高可用,你知道应该怎么做吗?

:其实跨机房的高可用分两个级别,分别是同城双活和异地灾备。

同城双活,就是在同一个城市,距离大概 30km 到 100km 的两个数据中心之间,通过高速专线互联的方式,让两个数据中心形成一个大二层网络。

同城双活最重要的是,数据如何从一个数据中心同步到另一个数据中心,并且在一个数据中心故障的时候,实现存储设备的切换,保证状态能够快速切换到另一个数据中心。在高速光纤互联情况下,主流的存储厂商都可以做到在一定距离之内的两台存储设备的近实时同步。数据双活是一切双活的基础。

基于双数据中心的数据同步,可以形成一个统一的存储池,从而数据库层在共享存储池的情况下可以近实时地切换,例如 Oracle RAC。

虚拟机在统一的存储池的情况下,也可以实现跨机房的 HA,在一个机房切换到另一个机房。

SLB 负载均衡实现同一机房的各个虚拟机之间的负载均衡。GSLB 可以实现跨机房的负载均衡,实现外部访问的切换。

如果在两个数据中心距离很近,并且大二层可通的情况下,也可以使用 VRRP 协议,通过 VIP 方式进行外部访问的切换。

异地灾备。

异地灾备的第一大问题还是数据的问题,也即生产数据中心的数据如何备份到容灾数据中心。由于异地距离比较远,不可能像双活一样采取近同步的方式,只能通过异步的方式进行同步。可以预见的问题是,容灾切换的时候,数据会丢失一部分。

由于容灾数据中心平时是不用的,不是所有的业务都会进行容灾,否则成本太高。

对于数据的问题,我比较建议从业务层面进行容灾。由于数据同步会比较慢,可以根据业务需求高优先级同步重要的数据,因而容灾的层次越高越好。

例如,有的用户完全不想操心,直接使用存储层面的异步复制。对于存储设备来讲,它是无法区分放在存储上的虚拟机,哪台是重要的,哪台是不重要的,只会完全根据块进行复制,很可能就会先复制了不重要的虚拟机。

如果用户想对虚拟机做区分,则可以使用虚拟机层面的异步复制。用户知道哪些虚拟机更重要一些,哪些虚拟机不重要,则可以先同步重要的虚拟机。

对业务来讲,如果用户可以根据业务层情况,在更细的粒度上区分数据是否重要。重要的数据,例如交易数据,需要优先同步;不重要的数据,例如日志数据,就不需要优先同步。

在有异地容灾的情况下,可以平时进行容灾演练,看容灾数据中心是否能够真正起作用,别容灾了半天,最后用的时候掉链子。

此文章为10月Day13学习笔记,内容来源于极客时间《趣谈网络协议》,推荐该课程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1089407.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[清华大学]漏洞挖掘之状态敏感的模糊测试StateFuzz

Dr.赵博栋 Prof.张超 清华大学 网络研究院 INSC 本文主要介绍了通过State Fuzz对Linux驱动程序进行模糊测试,该Fuzz方法由赵博栋博士在InForSec会议上分享,并在USENIX Security上发布.StateFuzz :System Call-Based State-Aware Linux Driver Fuzzing.该…

国际通用的Bug管理工具推荐:多款工具助力项目开发与管理

国际通用的bug管理工具有:1、Zoho Projects;2、Tracup;3、Bugtags;4、QC(QualityCenter);5、Bugzilla;6、EasyBUG;7、Mantis;8、WebIssues。Zoho Projects拥有专业的缺陷管理模块&am…

Webmin(CVE-2019-15107)远程命令执行漏洞复现

漏洞编号 CVE-2019-15107 webmin介绍 什么是webmin Webmin是目前功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作http://www.webmin.com/Webmin 是一个用 Perl 编写的基于浏览器的管理应用程序。是一个基于Web的界面…

项目管理必备工具推荐:提高效率、协作与跟踪的实用工具盘点

如果你是一个项目经理,你就会明白拥有合适的工具的重要性。如果没有正确的工具,将很难保持项目的组织和正常运行。幸运的是,有许多可用的项目管理工具可以帮助您提高项目的生产力和效率。这些工具旨在简化项目管理过程,使您更容易…

MySQL使用函数、存储过程实现:向数据表快速插入大量测试数据

实现数据表快速插入20W测试数据 实现过程创建表开启允许创建函数生成随机字符串生成随机整数生成随机地址创建存储过程调用存储过程查看插入数据 其他实用函数生成随机浮点数生成随机日期时间生成随机布尔值生成随机姓名生成随机手机号码生成随机邮箱地址生成随机IP地址生成随机…

【代码随想录】算法训练营 第二天 第一章 数组 Part 2

977. 有序数组的平方 题目 暴力解法 思路 原地更新所有数组元素为其平方数后&#xff0c;再使用sort函数排序&#xff0c;对vector使用sort函数时&#xff0c;两个参数分别是vector的起始元素和终止元素。 代码 class Solution { public:vector<int> sortedSquares(…

Linux shell编程学习笔记11:关系运算

Linux Shell 脚本编程和其他编程语言一样&#xff0c;支持算数、关系、布尔、字符串、文件测试等多种运算。前面几节我们研究了 Linux shell编程 中的 字符串运算 和 算术运算&#xff0c;今天我们来研究 Linux shell编程中的的关系运算。 一、关系运算符功能说明 运算符说明…

LeetCode34 在排序数组中寻找元素的第一个和最后一个位置

题目&#xff1a; 思路&#xff1a; https://blog.csdn.net/wangjiaqi333/article/details/124526112 直观的思路肯定是从前往后遍历一遍。用两个变量记录第一次和最后一次遇见target的下标&#xff0c;但这个方法的时间复杂度为O(n)&#xff0c;没有利用到数组升序排列的条件…

50 二叉树中的最大路径和

二叉树中的最大路径和 题解1 DFS 二叉树中的 路径被定义为一条节点序列&#xff0c;序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次。该路径 至少包含一个节点&#xff0c;且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二…

Spring中PointcutAdvisor和IntroductionAdvisor梳理

一、Advisor Advisor是SpringAOP的顶层抽象&#xff0c;用来管理Advice和Pointcut 1、Advice也叫增强器 Spring中有五种增强&#xff1a;BeforeAdvide&#xff08;前置增强&#xff09;、AfterAdvice&#xff08;后置增强&#xff09;、RoundAdvice&#xff08;环绕增强&#…

论文导读 | 7月8月上旬MSOM文章精选

编者按 淘宝店承诺的交货时间早些还是晚些更有利&#xff1f; 波动的市场环境下如何进行分布式储能的选址与运营&#xff1f; 企业存在服务竞争时如何对待“共享库存”这一模式&#xff1f; 网约车平台在线派单时能否综合权衡司机资质、等待时间、订单远近等多种因素&#xff1…

供应链 | 在线平台系列解读(三):B2C 平台市场中物流战略与平台渠道结构设计之间的相互作用

论文解读&#xff1a;张怡雯&#xff0c;温梓曦&#xff0c;肖善&#xff0c;杨子豪 The interplay between logistics strategy and platform’s channel structure design in B2C platform market 原文作者信息 H. Liu, T. Xu, S. Jing, Z. Liu, S. Wang (2023) The interpl…

Java语法基础案例(二)

目录 案例六&#xff1a;抢红包 案例七&#xff1a;找素数 方法一&#xff1a; 方法二&#xff1a; 方法三&#xff1a; 案例八&#xff1a;实现双色球 关于本项目所用所有方法的解释&#xff1a; 案例六&#xff1a;抢红包 一个大V直播时发起了抢红包活动&#xff0c;分…

PyQt5 PyQt6 Designer 的安装

pip国内的一些镜像 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 豆瓣(douban) http://pypi.douban.com/simple/ 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/ 中国科学技术大学 http://pypi.mirrors.ustc.…

力扣164最大间距

1.前言 因为昨天写了一个基数排序&#xff0c;今天我来写一道用基数排序实现的题解&#xff0c;希望可以帮助你理解基数排序。 这个题本身不难&#xff0c;就是线性时间和线性额外空间(O(n))的算法&#xff0c;有点难实现 基数排序的时间复杂度是O(d*(nradix))&#xff0c;其中…

HTML图片标签(2) HTML5+CSS3+移动web 前端开发入门笔记(三)

图片标签 HTML中&#xff0c;可以使用标签来插入图片。具体的语法为&#xff1a; <img src"图片路径" alt"替代文本">其中&#xff0c;src属性用于指定图片的路径&#xff0c;可以是相对路径或绝对路径。常见的有相对当前HTML文件的路径&#xff0…

Golang 实现接口和继承

小猴子继承了老猴子&#xff0c;这样老猴子拥有的能力包括字段&#xff0c;方法就会自动的被老猴子继承。 小猴子不需要做任何处理就可以拿到老猴子的字段和它的方法&#xff0c;因为是继承关系。 但是小猴子还会其他的技能&#xff0c;比如还会像小鸟一样飞翔&#xff0c;希…

国际减灾日 | 智慧减灾——百分点科技的数据科学视角

国际减轻自然灾害日简称“国际减灾日”&#xff0c;由联合国于1989年设立&#xff0c;旨在关注全球灾害风险&#xff0c;呼吁各国政府、组织和个人积极参与减灾工作&#xff0c;以保护人民生命财产安全。今年10月13日是第34个国际减灾日&#xff0c;主题为“共同打造有韧性的未…

卫星影像如何插入到AutoCAD使用

工具 Bigemap gis office地图软件 BIGEMAP GIS Office-全能版 Bigemap APP_卫星地图APP_高清卫星地图APP 第一步&#xff1a; 首先需要下载影像&#xff0c;选择一个区域下载&#xff0c;影像下载方式有以下几种&#xff1a; 那么通过下载方式选择好了范围以后&#xff0c;选…

【C++】-c++11的知识点(中)--lambda表达式,可变模板参数以及包装类(bind绑定)

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …