面试必备之——TCP/UDP(二)

news2024/12/22 20:20:57

TCP流量控制

让发送方发送的速率不要太快,要让接收方开的及接收,防止发送方发送太快,导致接收方来不及接收。是端到端之间的控制

滑动窗口是实现流量控制的方法之一

TCP流量控制-滑动窗口

滑动窗口是传输层进行流控的一种措施,是实现流量控制的方法之一,接收方通过通告发送方自己的窗口大小,从而控制发送方的发送速度,达到防止发送方发送速度过快而导致自己被淹没的目的。

窗口的大小表示一次批量发送的数据量

滑动窗口过小会怎么样?

导致数据延迟

假设滑动窗口只有 1,那么每次只能发送一个数据,并且发送只有接收方对这个数据进行确认之后才能进行下个数据的发送,如果数据较大那么就需要不停的对数据进行确认,就会造成很大延迟

TCP阻塞控制

阻塞:对网络中某一资源(带宽、节点缓存等)的需求超过了该资源所能提供的可用部分

阻塞控制:防止过多的数据注入网络中,这样可以使网络中的资源不过载,阻塞控制是一个全局性的过程

阻塞控制的方法:慢启动、阻塞避免、快重传、快恢复

TCP阻塞控制-慢启动

慢启动是一种拥塞控制算法,通过逐步增加发送端每次发送的数据量来避免网络拥塞。当新的TCP连接建立时,由于不了解网络状况,慢启动算法能够确保发送端不会立即发送大量数据。刚开始阻塞窗口被设置为一个比较小的值,每当成功接收数据后,阻塞窗口会一直增长,直到达到某个设定的阈值或者发生丢包事件。

流量控制和阻塞控制的异同

相同点:都是为了防止数据丢失,实现机制都是让发送方发的慢一些,发的少一些

不同点:流量控制是让发送方的数据量与速度不要超过接收方的承受范围,是端到端之间的控制,阻塞控制是让发送方发送的数据量与速度不要超过网络中资源(带宽、节点缓存等)的承受范围,阻塞控制中其实接收方可能是能够承受比较大的数据的,但是网络中可能承受不了大数据,是全局性的控制。

TCP 粘包和拆包

粘包:发送端发送的若干包数据到接收端接收时粘成一包,也就是后一包数据的头紧接着前一包数据的尾。

拆包:一个完整的数据包被拆分成多个包进行发送,通常发生在发送端发送的单个数据包过大,超过其最大传输数量时

如何解决粘包和拆包问题

通过引入一些机制来标识数据包的边界

1、固定数据长度

2、在数据包之间插入一个特殊的分隔符,接收端通过查找这个分隔符来确定数据包的边界

3、自定义消息结构。 比如首先 4 个字节大小的变量来表示数据长度,真正的数据则在后面

TCP 和 UDP 的区别

(.精灵云)(.道生物联)(联想)(金美)

1、TCP 是一个面向连接的、可靠的、基于字节流的传输层协议。UDP是无连接的、不可靠的、基于报文的传输协议。

2、TCP首部需20个字节(源端口、目的端口、序列号、确认号、窗口、校验和等),UDP首部字段需8个字节(源端口、目的端口等)

3、TCP有流量控制和拥塞控制,UDP没有

4、TCP是一对一的连接,而UDP可以支持一对一,多对多,一对多。

5、TCP传输效率低,但可靠性高。UDP传输效率高,但可靠性低。

TCP为什么比UDP可靠

1、面向连接:TCP是面向连接的,三次握手和四次挥手

2、确认和重传:TCP有确认和重传机制(接收方收到报文就会确认,发送方发送一段时间后没有收到确认就会重传)

3、流量控制:TCP使用滑动窗口机制来实现流量控制,确保发送方不会发送过多的数据导致接收方无法处理。

3、阻塞控制:TCP有拥塞控制算法,如慢启动,避免网络拥塞和数据丢失。

TCP和UDP使用场景

TCP:适用于需要可靠传输的场景,如文件传输、邮件发送、网页浏览等

UDP:适用于对实时性要求较高、但对数据可靠性要求不高的场景,如语音通话、实时视频传输等

socket流程

(.海康)

1、服务器端

(1)socket()函数:创建一个socket

(2)bind()函数:将IP地址、port端口绑定到socket上

(3)listen()函数:使socket对象进入监听状态,等待客户端的连接请求

(4)accept()函数:接受客户端的连接

(5)用send()和recv()或者read()和write()收发数据

(6)close()函数:关闭连接

2、客户端

(1)socket()函数:创建一个socket

(2)connect()函数:链接服务器,需要指定服务器的IP地址和端口号作为参数

(4)用send()和recv()或者read()和write()收发数据

(5)close()函数:关闭连接

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

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

相关文章

电脑版视频剪辑软件哪个好?适合新手使用的剪辑软件!

电脑版视频剪辑软件哪个好?在电脑版视频剪辑软件的选择上,每位用户都有其独特的偏好和需求。对于初学者而言,寻找一款操作简便、功能齐全的软件至关重要。为大家推荐几款常用的视频剪辑软件: 1、福昕视频剪辑 2、HitFilm 3、DaVin…

天了噜,IDEA竟然还有这种坑!

问题描述 IDEA 编辑器 idea Cannot resolve symbol 鼠标聚焦时,错误信息为:” idea Cannot resolve symbol “ IDEA自动修复功能 提示信息如下,然而并没有什么卵用。 问题梳理: IDEA 这个目录下的包都引入不了 import org.s…

Redis的分布式部署方案-哨兵

Redis 的主从复制模式下,⼀旦主节点由于故障不能提供服务,需要⼈⼯进⾏主从切换,同时⼤量 的客⼾端需要被通知切换到新的主节点上,对于上了⼀定规模的应⽤来说,这种⽅案是⽆法接受的, 于是 Redis 从 2.8 开…

uniapp加载第三方字体方案对比(附原生微信小程序方案)

文章目录 官方文档uniapp文档微信小程序文档 下载字体包引入方案限制微信小程序限制uniapp的限制 方案对比方案1:CSS本地加载方案2:CSS远程加载方案3:转换为base64,然后通过css引入方案4:使用uni.loadFontFace() 页面使…

手撕初阶数据结构之---排序

1.排序概念及运用 排序:所谓排序,就是使⼀串记录,按照其中的某个或某些关键字的⼤⼩,递增或递减的排列起来的操作。 常见的排序算法 直接插入排序的时间复杂度是O(N^2) 这个是最差的情况下,就是大的在前面&#xff…

30kw 可调恒流电子负载,你了解多少?

30kW可调恒流电子负载,是一种用于测试电源、蓄电池、发电机等电力设备的设备。它的主要功能是模拟实际负载,通过调节电流的大小,来检测电力设备的工作性能和稳定性。 让我们了解一下什么是电子负载。电子负载是一种可以吸收或提供电能的设备&…

【数据分析---偏企业】 Excel操作

各位大佬好 ,这里是阿川的博客,祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 Excel操作前 必看 Python 初阶 Python—语言基础与…

[MRCTF2020]套娃 php字符串解析绕过,jsfuck编码

进来看到代码 <!-- //1st $query $_SERVER[QUERY_STRING];if( substr_count($query, _) ! 0 || substr_count($query, %5f) ! 0 ){die(Y0u are So cutE!); }if($_GET[b_u_p_t] ! 23333 && preg_match(/^23333$/, $_GET[b_u_p_t])){echo "you are going to th…

超维室外轮式巡检机器人打造无人值守变电站

变电站是电力系统的重要组成部分&#xff0c;负责电能的转换、分配和传输&#xff0c;确保电力供应的稳定性和安全性。然而&#xff0c;由于变电站内设备众多、环境复杂、风险较高&#xff0c;传统的人工巡检方式面临着效率低下、成本高昂和人员安全隐患等问题。为应对这些挑战…

苹果iOS 18 Beta 6更新亮点一览:这些新功能让你爱不释手

苹果公司作为全球科技行业的领军者&#xff0c;每一次的系统更新都备受业界和消费者的关注。 iOS系统作为苹果设备的核心&#xff0c;其每一次迭代都带来了新功能和优化&#xff0c;极大地提升了用户体验。2024年8月13日&#xff0c;苹果向iPhone用户推送了iOS 18 Beta 6更新&…

水印去除方法

有一批建筑图去水印&#xff0c;水印的位置基本位于左右下角或者图片中间&#xff0c;因此调研一些去水印的方法&#xff0c;以前做电商图场景的水印去除或者印章去除的话&#xff0c;通常会训练一个unet来做这个事情。 1.工具 3 秒去水印&#xff01;6 款超好用的免费图像去…

Endnote与word关联 解决方案: COM加载项-----》CWYW插件安装

1、首先说一下本次情况&#xff0c;office的版本是2019&#xff0c;后安装的Endnote 9。旧版word也可按此方法尝试。 2、先找到关键的EndNote Cwyw.dll文件。应在此目录下&#xff1a;C:\Program Files (x86)\EndNote X7\Product-Support\CWYW。 3、如没有EndNote Cwyw.dll文…

DETR论文,基于transformer的目标检测网络 DETR:End-to-End Object Detection with Transformers

transformer的基本结构: encoder-decoder的基本流程为&#xff1a; 1&#xff09;对于输入&#xff0c;首先进行embedding操作&#xff0c;即将输入映射为向量的形式&#xff0c;包含两部分操作&#xff0c;第一部分是input embedding&#xff1a;例如&#xff0c;在NLP领域&…

DevEco Studio 5.0 Beta版下载链接

最新工具 - 下载中心 - 华为开发者联盟 (huawei.com)https://developer.huawei.com/consumer/cn/download/

代码随想录算法训练营第十三天

day12周日放假 二叉树理论基础: 文章链接:代码随想录 文章摘要: 满二叉树定义&#xff1a;如果一棵二叉树只有度为0的结点和度为2的结点&#xff0c;并且度为0的结点在同一层上&#xff0c;则这棵二叉树为满二叉树。 完全二叉树定义&#xff1a;在完全二叉树中&#xff0c…

springboot限流验证码登录接口(优雅版)

我们的业务逻辑是如图所示&#xff0c; 限流思路 我们 实现登录接口之后&#xff0c;我们想像这么一个场景&#xff0c;因为我们的登录接口在我们的拦截器中是放行的&#xff0c;如果这时候有人恶意来爆刷我们的登录接口&#xff0c;那我们的这个接口不就爆掉了吗&#xff0c…

【车载开发系列】使用J-Flash下载Hex文件

【车载开发系列】使用J-Flash下载Hex文件 【车载开发系列】使用J-Flash下载Hex文件 【车载开发系列】使用J-Flash下载Hex文件概要1. 打开J-Flash软件2. 创建新的工程3. 选择芯片类型4. 打开HEX文件5. 连接芯片6. 擦除目标扇区&#xff08;可选&#xff09;7. 烧写文件到目标扇区…

计算机毕业设计PySpark+Django农产品推荐系统 农产品爬虫 农产品商城 农产品大数据 农产品数据分析可视化 PySpark Hadoop

本科生毕业实习与设计&#xff08;论文&#xff09; 基于协同过滤的农产品推荐系统 Agricultural products recommendation system based on Collaborative filtering 学 院&#xff1a; 机械工程学院&#xff08;楷体_GB2312四号&#xff0c;下同&#xff09; …

pdf怎么转换成word?介绍6个pdf转word免费方法!(超简单)

pdf怎么转换成word&#xff1f;pdf格式因兼容多种平台和操作系统而广受欢迎&#xff0c;非常适合文档存储和共享。然而&#xff0c;编辑 PDF 文件通常需要试用一些其它的软件进行辅助&#xff0c;这让许多用户选择将 PDF 转换为 Word 格式&#xff0c;以方便内容修改。在以下情…