计算机网络知识点(六)

目录

一、简述TCP的keep-alive以及和HTTP的keep-alive的区别

1、HTTP keep-alive

2、TCP keep-alive

二、简述TCP协议的延迟ACK和累计应答

1、延迟应答

2、累计应答

三、简述TCP如何加速大文件的传输

1、建连优化

2、平滑发包

3、丢包预判

4、RTO 探测

5、带宽评估

6、带宽争抢

四、服务器如何判断客户端断开连接

五、简述端到端、点到点的区别

1、端到端

2、点到点


一、简述TCP的keep-alive以及和HTTP的keep-alive的区别

1、HTTP keep-alive

        在http早期,每个http请求都要求打开一个tpc socket连接,并且使用一次之后就断开这个tcp连接。使用keep-alive可以改善这种状态,即在一次TCP连接中可以持续发送多份数据而不会断开连接。通过使用keep-alive机制,可以减少tcp连接建立次数,也意味着可以减少TIME_WAIT状态连接,以此提高性能和提高httpd服务器的吞吐率(更少的tcp连接意味着更少的系统内核调用,socket的accept()和close()调用)。但是,keep-alive并不是免费的午餐,长时间的tcp连接容易导致系统资源无效占用。配置不当的keep-alive,有时比重复利用连接带来的损失还更大。所以,正确地设置keep-alive timeout时间非常重要。

2、TCP keep-alive

        链接建立之后,如果应用程序或者上层协议一直不发送数据,或者隔很长时间才发送一次数据,当链接很久没有数据报文传输时如何去确定对方还在线,到底是掉线了还是确实没有数据传输,链接还需不需要保持,这种情况在TCP协议设计中是需要考虑到的。TCP协议通过一种巧妙的方式去解决这个问题,当超过一段时间之后,TCP自动发送一个数据为空的报文给对方,如果对方回应了这个报文,说明对方还在线,链接可以继续保持,如果对方没有报文返回,并且重试了多次之后则认为链接丢失,没有必要保持链接。

        TCP的keep-alive机制和HTTP的keep-alive机制是说的完全不同的两个东西,tcp的keep-alive是在ESTABLISH状态的时候,双方如何检测连接的可用行;而http的keep-alive说的是如何避免进行重复的TCP三次握手和四次挥手的环节。

二、简述TCP协议的延迟ACK和累计应答

1、延迟应答

        指的是TCP在接收到对端的报文后,并不会立即发送ack,而是等待一段时间发送ack, 以便将ack和要发送的数据一块发送。当然ack不能无限延长,否则对端会认为包超时而造成报文重 传。linux采用动态调节算法来确定延时的时间。

2、累计应答

        指的是为了保证顺序性,每一个包都有一个ID(序号),在建立连接的时候,会商定起始的ID是多少,然后按照ID一个个发送。而为了保证不丢包,对应发送的包都要进行应答,但不是一个个应答,而是会应答某个之前的ID,该模式称为累计应答。

三、简述TCP如何加速大文件的传输

1、建连优化

        TCP 在建立连接时,如果丢包,会进入重试,重试时间是 1s、2s、4s、8s 的指数递增间隔,缩短定时器可以让 TCP 在丢包环境建连时间更快,非常适用于高并发短连接的业务场景。

2、平滑发包

        在 RTT 内均匀发包,规避微分时间内的流量突发,尽量避免瞬间拥塞。

3、丢包预判

        有些网络的丢包是有规律性的,例如每隔一段时间出现一次丢包,例如每次丢包都连续丢几个等,如果程序能自动发现这个规律(有些不明显),就可以针对性提前多发数据,减少重传时间,提高有效发包率。

4、RTO 探测

        若始终收不到 ACK 报文,则需要触发 RTO 定时器。RTO 定时器一般都时间非常长,会浪费很多等待时间,而且一旦 RTO,CWND 就会骤降(标准 TCP),因此利用 Probe 提前与 RTO 去试探,可以规避由于 ACK 报文丢失而导致的速度下降问题。

5、带宽评估

        通过单位时间内收到的 ACK 或 SACK 信息可以得知客户端有效接收速率,通过这个速率可以更合理的控制发包速度。

6、带宽争抢

        有些场景(例如合租)是大家互相挤占带宽的,假如你和室友各 1Mbps 的速度看电影,会把 2Mbps 出口占满,而如果一共有 3 个人看,则每人只能分到 1/3。若此时你的流量流量达到 2Mbps,而他俩还都是 1Mbps,则你至少仍可以分到 2/(2+1+1) * 2Mbps = 1Mbps 的 50% 的带宽,甚至更多,代价就是服务器侧的出口流量加大,增加成本(TCP 优化的本质就是用带宽换用户体验感)。

四、服务器如何判断客户端断开连接

        1. 检测连接是否丢失的方法大致有两种:keep-aliveheart-beat

        2. (tcp内部机制)采用keep-alive,它会先要求此连接一定时间没有活动(一般是几个小时),然后发出数据段,经过多次尝试后(每次尝试之间也有时间间隔),如果仍没有响应,则判断连接中断。可想而知,整个周期需要很长的时间。

        3. (应用层实现)一个简单的heart-beat实现一般测试连接是否中断采用的时间间隔都比较短,可以很快的决定连接是否中断。并且,由于是在应用层实现,因为可以自行决定当判断连接中断后应该采取的行为,而keep-alive在判断连接失败后只会将连接丢弃。

五、简述端到端、点到点的区别

1、端到端

        端到端通信是针对传输层来说的,传输层为网络中的主机提供端到端的通信。因为无论TCP还是UDP协议,都要负责把上层交付的数据从发送端传输到接收端,不论其中间跨越多少节点。只不过TCP比较可靠而UDP不可靠而已。所以称之为端到端,也就是从发送端到接收端

        它是一个网络连接,指的是在数据传输之前,在发送端与接收端之间(忽略中间有多少设备)为数据的传输建立一条链路,链路建立以后,发送端就可以发送数据,直到数据发送完毕,接收端确认接收成功。也就是说在数据传输之前,先为数据的传输开辟一条通道,然后再进行传输。从发送端发出数据到接收端接收完毕,结束。

        端到端通信建立在点到点通信的基础之上,它是由一段段的点到点通信信道构成的,是比点到点通信更高一级的通信方式,完成应用程序(进程)之间的通信。

        优点:链路建立之后,发送端知道接收端一定能收到,而且经过中间交换设备时不需要进行存储转发,因此传输延迟小。

        缺点:(1)直到接收端收到数据为止,发送端的设备一直要参与传输。如果整个传输的延迟很长,那么对发送端的设备造成很大的浪费。(2)如果接收设备关机或故障,那么端到端传输不可能实现。

2、点到点

        点到点通信是针对数据链路层或网络层来说的,因为数据链路层只负责直接相连的两个节点之间的通信,一个节点的数据链路层接受ip层数据并封装之后,就把数据帧从链路上发送到与其相邻的下一个节点。 点对点是基于MAC地址和或者IP地址,是指一个设备发数据给与该这边直接连接的其他设备,这台设备又在合适的时候将数据传递给与它相连的下一个设备,通过一台一台直接相连的设备把数据传递到接收端。

        直接相连的节点对等实体的通信叫点到点通信。它只提供一台机器到另一台机器之间的通信,不会涉及到程序或进程的概念。同时点到点通信并不能保证数据传输的可靠性,也不能说明源主机与目的主机之间是哪两个进程在通信。由物理层、数据链路层和网络层组成的通信子网为网络环境中的主机提供点到点的服务。

        优点:(1)发送端设备送出数据后,它的任务已经完成,不需要参与整个传输过程,这样不会浪费发送端设备的资源。(2)即使接收端设备关机或故障,点到点传输也可以采用存储转发技术进行缓冲。

        缺点:发送端发出数据后,不知道接收端能否收到或何时能收到数据。

        在一个网络系统的不同分层中,可能用到端到端传输,也可能用到点到点传输。如Internet网,IP 及以下各层采用点到点传输,4层以上采用端到端传输。

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

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

相关文章

线程间通信

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 我们已经知道进程之间不能直接共享信息,那么线程之间可以共享信息吗?我们通过一个例子来验证一下。定义一个全局变量g_num&am…

【腾讯云智笔试题——分苹果两种解法】

文章目录 题目描述解题思路:疑惑解析代码中明明是两个嵌套的for循环时间复杂度为什么是O(m)? 题目描述 有m个苹果,n个小孩。每个小孩都有一个编号,小明的编号是。要尽量公平的分苹果,相邻编号的…

C++ 类与对象的使用要点(超详细解析,小白必看系列)

1.面向过程和面向对象初步认识 C语言是面向过程的语言,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题 例如:洗衣服 C是基于对象的,关注的是对象,将一件事拆分成不同的对象,靠对…

短信接口的对接及应用

短信接口即企业短信平台接口(API版),是面向有一定技术开发能力的企业用户而单独研发的短信(sms)接口。以下是关于短信接口的主要内容和特点: 功能及作用: 支持二次开发:可以在现有的软件上进行定制修改、功…

Pandas——词云图绘制

文本处理 词频统计 绘制词云图 英文词频统计 分词→词形还原(nltk) →去停用词 →统计词频 中文词频统计 分词(jieba) →去停用词 → 统计词频 评论文本的分析 通过词云图展示出现次数较多的词, 可以发现问题 微博/头条/新闻评论 词云图绘制 可以使用Pyecharts绘制词云…

[NewStarCTF 2023 公开赛道]R!C!E!

好久没写了。今天儿弄一个rce 题很直接&#xff0c;好久没这么直白的题了&#xff0c;看源码 <?php highlight_file(__FILE__); if(isset($_POST[password])&&isset($_POST[e_v.a.l])){$passwordmd5($_POST[password]);$code$_POST[e_v.a.l];if(substr($password…

amov无人机连接;+数据传输;啊啊啊啊啊

socket传输数据: 局域网连接 连接---通信(命令行直接;)--- 传输数据(socket)--传输内容:launch文件; qgc连接; 1.局域网下的通信 1.1 局域网 厂家提供的方式是通过Homer图数传工具(硬件)构建的amov局域网实现通信连接. 好处是通信距离足够长,支持150m;坏处是"局部&qu…

电脑提示d3dcompiler_47.dll丢失的解决方法,实测靠谱的5种方法

在计算机使用过程中&#xff0c;缺失d3dcompiler_47.dll这一系统文件是一个常见问题&#xff0c;尤其是对于游戏和图形密集型应用程序用户来说尤为重要。这个文件是DirectX软件工具包的一部分&#xff0c;主要用于处理图形渲染的应用程序接口的核心元素。当你在运行游戏或某些软…

如何定制Spring的错误json信息

一&#xff0c;前言 相信很多同学都有遇到过这样的spring错误信息。 在我们没有做catch处理时或者做全局的exceptionHandle时&#xff0c;Spring遇到抛出向外的异常时&#xff0c;就会给我们封装返回这么个格式的异常信息。 那么问题来了&#xff0c;我们能否对这个返回增加错…

网络安全从入门到精通(特别篇I):应急响应案例

蓝队应急响应实战 1. 应急响应1. 应急响应 获取当前WEB环境的组成架构(语言,数据库,中间件,系统等) 分析思路: 1、利用时间节点筛选日志行为 2、利用已知对漏洞进行特征筛选 3、利用后门查杀进行筛选日志行为 #内容点: 应急响应: 1、抗拒绝服务攻击防范应对指南 2、勒…

day13 二叉树的遍历

一、二叉树的递归遍历 题目链接&#xff1a; 144.二叉树的前序遍历(opens new window)145.二叉树的后序遍历(opens new window)94.二叉树的中序遍历 文章讲解&#xff1a;https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%80%92%E5%BD%92%E9%81%8D%E5%8E…

Go源码--sync库(3):sync.Pool(2)

回收 回收其实就是将 pool.local 置为空 可以让垃圾回收器回收 我们来看下 源码 func init() {// 将 poolCleanup 注册到 gc开始前的准备工作处理器中在 STW时执行runtime_registerPoolCleanup(poolCleanup) }这里注册了清理程序到GC前准备工作 也就是发生GC前需要执行这段代…

云上Elasticsearch-规格选型

阿里云ES购买实例规格&#xff0c;数据节点&#xff0c;kibana节点&#xff0c;专有主节点&#xff0c;冷数据节点&#xff0c;协调节点&#xff0c;弹性数据节点各是什么 在阿里云Elasticsearch中&#xff0c;不同类型的实例规格代表着不同的角色和功能。以下是对各个节点类型…

任务流程----

创建macvlan网络 sudo docker network create \--driver macvlan \--subnet<你的宿主机子网&#xff0c;如192.168.1.0/24> \--gateway<你的宿主机网关> \-o parent物理接口名称&#xff0c;如eth0 \my-macvlan-1 创建容器 sudo docker run -itd \--name contai…

鸿蒙HarmonyOS实战:渲染控制、路由案例

条件渲染 简单来说&#xff0c;就是动态控制组件的显示与隐藏&#xff0c;类似于vue中的v-if 但是这里写法就是用if、else、else if看起来更像是原生的感觉 效果 循环渲染 我们实际开发中&#xff0c;数据一般是后端返回来的对象格式&#xff0c;对此我们需要进行遍历&#…

Nginx 搭建域名访问环境

1.Nginx配置文件 server {listen 80;server_name www.gulimall.com;#charset koi8-r;#access_log /var/log/nginx/log/host.access.log main;location / {proxy_pass http://192.168.232.1:10001;}#error_page 404 /404.html;# redirect server error p…

华为od-C卷200分题目1 - 分月饼

华为od-C卷200分题目1 - 分月饼 题目描述 中秋节&#xff0c;公司分月饼&#xff0c;m个员工&#xff0c;买了n个月饼&#xff0c;m<n&#xff0c;每个员工至少分1个月饼&#xff0c;但可以分多个&#xff0c; 单人分到最多月饼的个数是Max1&#xff0c;单人分到第二多月饼…

信息论与大数据安全知识点

文章目录 第一章 绪论&#xfffc;大数据概述大数据安全与加密技术 安全存储与访问控制技术访问控制概念早期的四种访问控制模型局限性总结 大数据场景下的访问控制技术 安全检索技术密文检索基础 安全处理技术同态加密 隐私保护技术 第一章 绪论&#xfffc; 大数据概述 大数…

川湘菜店该如何选择合适的油烟净化器?

我最近分析了餐饮市场的油烟净化器等产品报告&#xff0c;解决了餐饮业厨房油腻的难题&#xff0c;更加方便了在餐饮业和商业场所有需求的小伙伴们。 川湘菜以其浓郁的香味和丰富的口感&#xff0c;深受广大食客的喜爱。然而&#xff0c;川湘菜烹饪过程中产生的油烟量也相对较…

分班查询,一键发布,老师们都在用的分班查询系统

老师们开学季马上又要到了&#xff0c;回想起了每年埋头苦干&#xff0c;对着一堆堆的学生名单&#xff0c;一个个手动分配班级&#xff0c;再一个个通知家长和学生的日子&#xff0c;那种手忙脚乱&#xff0c;生怕出错的紧张感&#xff0c;是不是还历历在目&#xff1f;每次分…