【面试】TCP 与 UDP区别

一、TCP 与 UDP 对比

  1. TCP

传输控制协议 TCP(Transmission Control Protocol),是面向连接的【3次握手,4次挥手】,提供可靠交付,具有错误恢复机制(如超时重传、校验和等),有流量控制,拥塞控制,提供全双工通信,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),每一条 TCP 连接只能是点对点的(一对一)

开销:
由于其复杂性,开销较大,需要更多的处理时间和资源。

报文结构:
TCP段,包含序列号、确认号、窗口大小等控制信息。

用途:
常用于需要可靠传输的应用,如网页浏览(HTTP)、文件传输(FTP)、邮件传输(SMTP)等。
适用于数据完整性至关重要的应用,如金融交易、电子邮件等。

  1. UDP

用户数据报协议 UDP(User Datagram Protocol),是无连接的,尽最大可能交付(可能发生数据丢失或乱序),没有错误恢复机制没有拥塞控制面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部),支持一对一、一对多、多对一和多对多的交互通信

开销:
开销较小,使用较少的处理时间和资源。

报文结构:
UDP数据报,包含源端口、目的端口、数据长度等信息。

用途:
常用于对实时性要求高的应用,如在线游戏、实时视频会议、DNS查询、VoIP等。
适用于可以容忍一定数据丢失的应用,或者实时性要求高,对延迟敏感的应用。

二、TCP的 3次握手,4次挥手

TCP(传输控制协议)的三次握手(Three-way Handshake)过程是建立一个可靠的连接所必需的。

  1. 第一次握手客户端发送一个SYN(同步序列编号)报文到服务器以开始一个连接。这个报文指明了客户端的初始序列号(ISN, Initial Sequence Number)。

  2. 第二次握手服务器接收到这个SYN报文后,需要确认客户端的序列号,因此会发送一个SYN-ACK(同步-确认)报文。这个报文包含了服务器自己的初始序列号,并且对客户端的SYN报文中的序列号进行确认(即ACK, Acknowledgement number)。

  3. 第三次握手客户端接收到服务器的SYN-ACK报文后,会发送一个ACK报文到服务器端进行最后的确认。这个ACK报文对服务器的SYN报文中的序列号进行确认。

这个过程确保了双方都可以接收和发送数据,从而建立了一个全双工的通信连接

至于“四次挥手”,这通常是指TCP连接的终止过程:

  1. 第一次挥手:当通信的一方准备关闭连接时,发送一个FIN(结束)报文,用来关闭主动方到被动方的数据传输。

  2. 第二次挥手接收方接收到FIN报文后,发送一个ACK报文确认,并告知对方可以关闭其到发送方的数据传输。

  3. 第三次挥手接收方发送一个FIN报文给发送方,请求关闭其数据传输。

  4. 第四次挥手发送方接收到这个FIN报文后,发送一个ACK报文进行确认,完成连接的关闭。

四次挥手过程中,双方都可以独立地开始关闭连接的过程,因此可能出现一方已经准备好关闭连接,而另一方还需要一些时间来完成数据传输的情况。这就是为什么需要四次挥手来确保双方都能独立地关闭连接。

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

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

相关文章

YoloV9改进策略:注意力篇|BackBone改进|自研像素和通道并行注意力模块(独家原创)

摘要 本文使用FFA-Net的注意力改进YoloV9,FFA-Net提出了通道注意力和像素注意力相结合的方式,提高Block的表征能力,我把这两种注意力结合起来改进YoloV8的BackBone,取得了非常好的效果,即插即用,简单易懂,非常适合大家入手。 论文翻译:《FFA-Net:用于单图像去雾的特征…

nccl 03 记 回顾:从下载,编译到调试 nccl-test

1, 下载与编译 1.1 源码下载 $ git clone https://github.com/NVIDIA/nccl.git 1.2 编译 1.2.1 一般编译: $ make -j src.build 1.2.2 特定架构gpu 编译 $ make -j src.build NVCC_GENCODE"-gencodearchcompute_80,codesm_80" A10…

qt pro工程文件通用宏定义

在 Qt .pro 文件中,有一些预定义的宏(或变量),它们代表了特定的路径或与项目、构建环境相关的信息。 以下是一些常用的 .pro 文件宏: 通用宏 $$PWD: 当前 .pro 文件所在的绝对路径。这是一个非常重要的宏,…

react笔记-05react扩展篇

react笔记-扩展篇 包括新用法和hooks 1. setState setState更新状态的两种写法: 1. setState({}, [() > {}]) 2. setState(() > {// 返回一个状态修改对象return {} }, [() > {}])1. 对象写法: ⚠️注意:react更新状态是异步的 …

探究布局模型:从LayoutLM到LayoutLMv2与LayoutXLM

LAYOUT LM 联合建模文档的layout信息和text信息, 预训练 文档理解模型。 模型架构 使用BERT作为backbone, 加入2-D绝对位置信息,图像信息 ,分别捕获token在文档中的相对位置以及字体、文字方向、颜色等视觉信息。 2D位置嵌入 …

Linux 查看进程 ps -ef | grep

说明 在 Unix 和 Linux 系统中,ps -ef 命令用于显示所有正在运行的进程的详细信息。而 grep 是一个强大的文本搜索工具,它允许你在输入流(比如来自文件或另一个命令的输出)中搜索特定的模式。 当你将 ps -ef 的输出通过管道 | 传…

装备制造行业数据分析指标体系

数字化飞速发展的时代,多品种、定制化的产品需求、越来越短的产品生命周期、完善的售后服务、极佳的客户体验和快速的交货速度等,使得装备制造行业的经营环境越来越复杂,企业竞争从拼产品、拼价格迈向拼服务,装备制造企业正处于数…

阿里云 debian10.3 sudo apt-get updat 报错的解决方案

阿里云全新的debian10.3(buster)镜像,却无法正常执行 sudo apt-get update。主要报错信息如下: Err:6 http://mirrors.cloud.aliyuncs.com/debian buster-backports Release404 Not Found [IP: 100.100.2.148 80] Err:3 http://mirrors.cloud.aliyuncs…

无引擎游戏开发(1):EasyX图形库引入 + 跟随鼠标移动的小球

来自bilibili up主的Voidmatrix的视频教程:【从零开始的C游戏开发】 一、图形库引入 EasyX在国内文档最多,而且功能函数齐全,最适合入门。 环境配置:vs2022 (官网下载免费版) 百度搜EasyX官方&#xff0…

后方穿行预警系统技术规范(简化版)

后方穿行预警系统技术规范(简化版) 1 系统概述2 预警区域3 预警目标4 预警条件5 指标需求1 系统概述 RCTA后方穿行预警系统工作在驾驶员有倒车意向的时候。在倒车过程中当驾驶员视线因周围障碍物被遮挡而产生碰撞风险时,系统通过光学信号对驾驶员进行提醒。 2 预警区域 RCT…

前端入门篇(五十二)练习6:transition过渡小动画

所以应该先找到第n个li,找到li再找img,li没有找错,底下又各自只有一个img,解决 ul li:nth-child(1) img { } 描述文字从下往上: 一开始描述也在框框下面,当hover时,translateY(0)&#xff0…

js处理数组的方法总结

本文总结了JavaScript操作数组的所有方法方式。包含了ES6新增的方法。会在操作方法上解释出现的版本。 内容较多,建议收藏查看。 push(): 在数组末尾添加一个或多个元素,并返回新的长度。 let arr [1, 2, 3]; let newLength arr.push(4, 5); console.…

【JS重点18】原型链(面试重点)

一:原型链底层原理 以下面一段代码为例,基于原型对象(Star构造函数的原型对象)的继承使得不同构造函数的原型对象关联在一起(此处是最大的构造函数Object原型对象),并且这种关联的关系是一种链…

CleanShot X for Mac v4.7 屏幕滚动长截图录像工具(保姆级教程,小白轻松上手,简单易学)

Mac分享吧 文章目录 一、下载软件二、部分特有功能效果1、截图软件的普遍常用功能(画框、箭头、加文字等)都具备,不再详细介绍2、ABCD、1234等信息标注(每按一下鼠标,即各是A、B、C、D...等)3、截图更换背…

SQL注入-下篇

HTTP注入 一、Referer注入 概述 当你访问一个网站的时候,你的浏览器需要告诉服务器你是从哪个地方访问服务器的。如直接在浏览器器的URL栏输入网址访问网站是没有referer的,需要在一个打开的网站中,点击链接跳转到另一个页面。 Less-19 判…

Oracle中先进先出数据结构的例子

在Oracle中,实现先进先出(FIFO)数据结构的一个典型例子可以通过设计和查询特定的表来完成。以下是一个简化的例子来说明这个概念: 1. 设计表结构 首先,我们需要一个包含“入队”时间戳的表来模拟队列的行为。以下是一…

Python部分库函数

目录 一、常规函数 元组相关函数 1.元组的创建 2.元组多变量赋值 列表相关函数 1.列表的创建 (1)将至于中括号中的、用逗号分隔开的一组数据赋值给一个变量,数据可以是多个也可以是一个 (2)使用list函数 &…

第29讲:Ceph集群使用RBD块存储设备与K8S的PV集成

文章目录 1.Ceph集群使用RBD块存储与K8S集成简介2.Ceph集群RBD块存储与K8S PV存储卷集成2.1.创建K8S集群PV使用的块存储2.2.创建K8S集群访问RBD块存储设备的认证用户2.3.将认证用户的Key存储在K8S Secret资源中2.4.在K8S集群的所有节点中安装Ceph命令2.5.创建PV及PVC资源使用RB…

C#开发-集合使用和技巧(八)集合中的排序Sort、OrderBy、OrderByDescending

C#开发-集合使用和技巧&#xff08;八&#xff09;集合中的排序Sort、OrderBy、OrderByDescending List<T>.Sort()IEnumerable<T>.OrderBy()Enumerable<T>.OrderByDescending() 在C#中&#xff0c;List<T> 类提供了多种方法来进行排序&#xff0c;最常…

浔川法务部通知——浔川法务部

原文链接&#xff1a;如何用python做一个用户登录界面——浔川python社-CSDN博客 抄袭链接&#xff1a;用python做的一个登录界面——浔川python社-易微帮 浔川python社原创文章被抄袭&#xff0c;请抄袭网站删除文章。 我方于昨夜联系了CSDN举报中心。如不删除&#xff0c;我…