TCP 和 UDP的区别

article/2025/10/4 23:21:07

  • 前言

  • 一、TCP和UDP的区别

  • 二、OSI七层模型

  • 三、TCP协议的特点

  • 四、UDP协议的特点

  • 五、TCP和UDP的比较

  • 总结


前言

总结一下TCP和UDP的区别。

一、TCP和UDP的区别

1.什么是TCP?

TCP  (Transmission Control Protocol)传输控制协议

2.什么是UDP?

UDP(User Datagram Protocol)用户数据报协议

区别点:

(1)TCP 面向连接(如打电话要先拨号建立连接)提供可靠的服务。可靠指:通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;
相当于:打电话,我已经确定了对面的人是我要找的那个人了,我可以把信息传输了对的人了,所以是可靠的。

UDP 是无连接的,即发送数据之前不需要建立连接,UDP 尽最大努力交付,即不保证可靠交付。例如:发送QQ信息,对方是离线状态,我只管发信息过去,不管离线的人是不是收到了。我只管我发成功了。不可靠是指:在这次发送中,有可能会丢数据包。就算是丢了,也不会再重新发送。如果是TCP:丢包时重发,对次序乱掉的分包进行顺序控制。

(2)UDP 具有较好的实时性,工作效率比 TCP 高,适用于对高速传输和实时性有较高的通信或广播通信。
解释:
实时性:在规定时间内系统的反应能力。
因为TCP需要建立连接,需要消耗时间,所以UD工作效率高,对于高速传输来说,UDP的效率更高。

与TCP相比,UDP它以更快的速度传输数据。该协议相对不太可靠。因此,用于传输音频和视频文件等数据。

(3)TCP 连接只能是一对一的,UDP 支持一对一,一对多,多对一和多对多的交互通信。
解释:打电话就是TCP协议,每次只能给一个人打电话。UDP就像是QQ发送信息,可以一对多的给别人发消息。
 

(4)TCP是面向字节流,把数据看成一连串无结构的字节流,UDP 是面向报文的一次交付一个完整的报文,报文不可分割,报文是 UDP 数据报处理的最小单位。


(5)TCP 和 UDP 都可以检查错误,但只有 TCP 可以纠正错误,因为它同时具有拥塞和流量控制。

(6)TCP只能进行点对点的数据传输,不支持多播和广播传输方式。

二、OSI七层模型:


OSI中的上面4层(应用层、表示层、会话层、传输层)为高层,定义了程序的功能;下面3层(网络层、数据链路层、物理层)为底层,主要是处理面向网络端到端的数据流。

应用层(Application Layer)
应用层是最靠近用户的OSI层。这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。
协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP等。

主要负责对软件提供接口以使程序能使用网络服务。术语“应用层”并不是指运行在网络上的某个特别应用程序 ,应用层提供的服务包括文件传输、文件管理以及电子邮件的信息处理。

表示层(Presentation Layer)
数据的表示、安全、压缩。可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。
格式有:JPEG、ASCll、DECOIC、加密格式等。

应用程序和网络之间的翻译官,在表示层,数据将按照网络能理解的方案进行格式化;这种格式化也因所使用网络的类型不同而不同。

表示层管理数据的解密与加密,如系统口令的处理。例如:在 Internet上查询你银行账户,使用的即是一种安全连接。你的账户数据在发送前被加密,在网络的另一端,表示层将对接收到的数据解密。除此之外,表示层协议还对图片和文件格式信息进行解码和编码。
这一层:主要是对数据的格式化、代码转化,压缩,数据加解密等这些工作。

会话层(Session Layer)
建立、管理、终止会话,对应主机进程,指本地主机与远程主机正在进行的会话。

通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。

负责在网络中的两节点之间建立、维持和终止通信。 会话层的功能包括:建立通信链接,保持会话过程通信链接的畅通,同步两个节点之间的对话,决定通信是否被中断以及通信中断时决定从何处重新发送。

你可能常常听到有人把会话层称作网络通信的“交通警察”。当通过拨号向你的 ISP (因特网服务提供商)请求连接到因特网时,ISP 服务器上的会话层向你与你的 PC 客户机上的会话层进行协商连接。若你的电话线偶然从墙上插孔脱落时,你终端机上的会话层将检测到连接中断并重新发起连接。会话层通过决定节点通信的优先级和通信时间的长短来设置通信期限。

传输层(Transport Layer)
定义传输数据的协议端口号,以及流控和差错校验。

协议有:TCP UDP等,数据包一旦离开网卡即进入网络传输层。

定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。

网络层(Network Layer)
进行逻辑地址寻址,实现不同网络之间的路径选择。

协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP等。

在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。

O S I 模型的第三层,其主要功能是将网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收方。  

网络层通过综合考虑发送优先权、网络拥塞程度、服务质量以及可选路由的花费来决定从一个网络中节点A 到另一个网络中节点B 的最佳路径。由于网络层处理,并智能指导数据传送,路由器连接网络各段,所以路由器属于网络层。在网络中,“路由”是基于编址方案、使用模式以及可达性来指引数据的发送。

数据链路层(Datalink Layer)
建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议)
将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。

数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等。

定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。

OSI模型的第二层,它控制网络层与物理层之间的通信。它的主要功能是如何在不可靠的物理线路上进行数据的可靠传递。为了保证传输,从网络层接收到的数据被分割成特定的可被物理层传输的帧。帧是用来移动数据的结构包,它不仅包括原始数据,还包括发送方和接收方的物理地址以及检错和控制信息。其中的地址确定了帧将发送到何处,而纠错和控制信息则确保帧无差错到达。 如果在传送数据时,接收点检测到所传数据中有差错,就要通知发送方重发这一帧。

数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。

物理层(Physical Layer)
建立、维护、断开物理连接。

它的主要主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。

O S I 模型的最低层或第一层,该层包括物理连网媒介,如电缆连线连接器。物理层的协议产生并检测电压以便发送和接收携带数据的信号。在你的桌面P C 上插入网络接口卡,你就建立了计算机连网的基础。换言之,你提供了一个物理层。尽管物理层不提供纠错服务,但它能够设定数据传输速率并监测数据出错率。网络物理问题,如电线断开,将影响物理层。   用户要传递信息就要利用一些物理媒体,如双绞线、同轴电缆等,但具体的物理媒体并不在OSI的7层之内,有人把物理媒体当做第0层,物理层的任务就是为它的上一层提供一个物理连接,以及它们的机械、电气、功能和过程特性。如规定使用电缆和接头的类型、传送信号的电压等。在这一层,数据还没有被组织,仅作为原始的位流或电气电压处理,单位是bit比特。

补充知识


一个设备工作在哪一层,关键看它工作时利用哪一层的数据头部信息。网桥工作时,是以MAC头部来决定转发端口的,因此显然它是数据链路层的设备。
具体说:
物理层:网卡,网线,集线器,中继器,调制解调器
数据链路层:网桥,交换机
网络层:路由器
网关工作在第四层传输层及其以上。
集线器是物理层设备,采用广播的形式来传输信息。
交换机就是用来进行报文交换的机器。多为链路层设备(二层交换机),能够进行地址学习,采用存储转发的形式来交换报文.。
路由器的一个作用是连通不同的网络,另一个作用是选择信息传送的线路。选择通畅快捷的近路,能大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率。

参考地址:安全验证 - 知乎

三、TCP协议的特点:

1、面向连接

面向连接,是指发送数据之前必须在两端建立连接。建立连接的方法是“三次握手”,这样能建立可靠的连接。建立连接,是为数据的可靠传输打下了基础。

2、仅支持单播传输

每条TCP传输连接只能有两个端点,只能进行点对点的数据传输,不支持多播和广播传输方式。

3、面向字节流

TCP不像UDP一样那样一个个报文独立地传输,而是在不保留报文边界的情况下以字节流方式进行传输。

4、可靠传输

对于可靠传输,判断丢包,误码靠的是TCP的段编号以及确认号。TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。

5、提供拥塞控制

当网络出现拥塞的时候,TCP能够减小向网络注入数据的速率和数量,缓解拥塞

四、UDP协议的特点:

1、面向无连接

首先 UDP 是不需要和 TCP一样在发送数据前进行三次握手建立连接的,想发数据就可以开始发送了。并且也只是数据报文的搬运工,不会对数据报文进行任何拆分和拼接操作。

具体来说就是:

  • 在发送端,应用层将数据传递给传输层的 UDP 协议,UDP 只会给数据增加一个 UDP 头标识下是 UDP 协议,然后就传递给网络层了
  • 在接收端,网络层将数据传递给传输层,UDP 只去除 IP 报文头就传递给应用层,不会任何拼接操作

2、有单播,多播,广播的功能

UDP 不止支持一对一的传输方式,同样支持一对多,多对多,多对一的方式,也就是说 UDP 提供了单播,多播,广播的功能。

3、UDP是面向报文的

发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。因此,应用程序必须选择合适大小的报文

4、不可靠性

首先不可靠性体现在无连接上,通信都不需要建立连接,想发就发,这样的情况肯定不可靠。

并且收到什么数据就传递什么数据,并且也不会备份数据,发送数据也不会关心对方是否已经正确接收到数据了。

再者网络环境时好时坏,但是 UDP 因为没有拥塞控制,一直会以恒定的速度发送数据。即使网络条件不好,也不会对发送速率进行调整。这样实现的弊端就是在网络条件不好的情况下可能会导致丢包,但是优点也很明显,在某些实时性要求高的场景(比如电话会议)就需要使用 UDP 而不是 TCP。

5、头部开销小,传输数据报文时是很高效的。

五、TCP和UDP的比较

总结

  • TCP向上层提供面向连接的可靠服务 ,UDP向上层提供无连接不可靠服务。
  • 虽然 UDP 并没有 TCP 传输来的准确,但是也能在很多实时性要求高的地方有所作为
  • 对数据准确性要求高,速度可以相对较慢的,可以选用TCP

详细的TCP,UDP协议:

TCP与UDP的区别_tcp和udp的区别_会飞的IT蜗牛的博客-CSDN博客

百度百科-验证


https://baijiahao.baidu.com/s?id=1748541534760823549&wfr=spider&for=pc

安全验证 - 知乎


http://chatgpt.dhexx.cn/article/w1ES2hs1.shtml

相关文章

TCP与UDP的区别与联系

TCP协议 TCP协议全称传输控制协议,就是对传输过程中的数据有一定的控制!我们来看看它的包头的样子! 我们来分析分析每部分的含义和作用: 源端口号/目的端口号: 表示数据从哪个进程来, 到哪个进程去. 32位序号: 4位首部长度: 表示该tcp报头有多少个4字节(32个bit) 6位保…

TCP和UDP的区别·一张图秒懂

tcp和udp少女喝水照片 下面看看具体TCP与UDP区别: TCP用的更多一些。更靠谱。

网络基础——TCP与UDP的区别

Web基础——COOKIE与SESSION的区别 如上表格,区别总结如下: 1)、连接性质不同: TCP是面向有连接,而UDP是面向无连接的。 所谓的面向有连接,通俗讲是指传输数据时,是否需要先建立通讯&#xff0c…

一文搞懂TCP与UDP的区别

摘要:计算机网络基础 引言 网络协议是每个前端工程师都必须要掌握的知识,TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP,本文将介绍下这两者以及它们之间的区别。 一、TCP/IP网络模型 计算机与网络设备要相互通信…

TCP和UDP的区别和优缺点

1、TCP与UDP区别总结: 1、 TCP面向连接 (如打电话要先拨号建立连接); UDP是无连接 的,即发送数据之前不需要建立连接 2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不…

终于懂了TCP和UDP协议区别

老样子先认识一下这俩伙计 TCP和UDP都是来自于传输层的协议。 传输层是位于第2层的,如下图所示。 传输层位于应用层和网络层之间,负责位于不同主机中进程之间的通信。 之前一位老哥问我:不同电脑之间是如何通信的呢?是不是还要自己开发协议什么的。 分析:这位老哥觉…

TCP和UDP的区别(简单明了)

目录 1 前言 2 TCP 2.1 TCP如何保证可靠传输 3 UDP 1 前言 你知道什么是TCP和UDP吗?你知道TCP和UDP有什么区别吗?可能大家平时总是听说过TCP和UDP,但是一直不知道它们是怎么回事。今天就给大家介绍一下。我们常用的网络通讯、软件聊天、以…

AndroidStudio清理C盘下AVD模拟器的空间

刚刚打开了Explorer,他奶奶的,少了那么多G。【强迫症不能忍】 于是我查找了一下,发现AndroidStudio官方的模拟器占用很大空间。 就我的来说,一个模拟器.avd占用了我10G。草 在这个目录下可以看到.avd文件和.ini文件。.avd占了我…

AVD配置和使用

android 虚拟设备管理Android Virtual Device Manager以下为直接复制粘贴内容:AVD的全称为:Android Virtual Device,就是Android运行的虚拟设备,他是Android的模拟器识别。建立的Android要运行,必须创建AVD&#xff0c…

IDEA使用AVD Manager创建AVD

1、打开AVDManager 2、 3、 4、选择镜像 5、点击Finish 6、 启动报错: 16:51 Emulator: emulator: ERROR: This AVDs configuration is missing a kernel file! Please ensure the file "kernel-qemu" is in the same location as your system image.16:…

Android studio 创建avd失败

1.问题描述 第一次创建虚拟机,显示 consider using a system image with Google APIs to enable testing with Google Play Services,avd创建失败。 2.原因 sdk文件夹下的 .\sources\system-images 路径变更为 .\system-images。 💡sdk文件夹…

avd模拟器快捷键

正看到一个activity在屏幕朝向改变时有可能会泄漏的帖子,因为activity会重新create http://blog.csdn.net/tu_bingbing/article/details/10395129 结果发现还是自己测试一下的好,于是发现对avd的快捷键还是一无所知 重新google了下 国外版 http://w…

Appium基础 — Android模拟器(AVD)安装

当前市面上Android版本的模拟器还是挺多的,我们主要说明三款Android模拟器。 分别是:Android Virtual Devices、Genymotion、国内安卓模拟器。 Android Virtual Devices是Android SDK自带的模拟器,根据Android SDK不同平台版本,可…

android studio找不到avd,修改android studio中的avd sdk路径、avd sdk找不到的解决方案

类型:编程工具大小:1.53G语言:英文 评分:6.2 标签: 立即下载 很多人都遇到安装android studio之后需要下载gradle和重新下载avd sdk的问题 首先,设置环境变量,ANDROID_SDK_HOME值为sdk所在目录,GRADLE_HOME值为gradle所在目录,在path中添加%ANDROID_SDK_HOME%\bin;%GR…

android avd

avd 记录~ 一、avd 创建1.1、选择创建自己的设备1.2、自定义设备的参数配置1.3、选择自己创建的设备,next,再选择api即可。 二、avd 默认位置安装位置2.1、.android/avd 下2.1.1、.android/avd/xxxx.ini 文件2.1.2、.android/avd/.avd 下 config.ini 三、…

模拟器之AVD模拟器

以下内容全部或部分转自或参考于网络。 注:AVD模拟器运行很慢,第一次启动后可以不用再关闭。 现在新版的AVD模拟器也很快(如果CPU支持会更快),而且是免费的。 AVD模拟器上的按键和电脑物理键盘的对应关系 1.menu键…

Android Studio修改Avd虚拟机位置

一、Android Studio修改Avd虚拟机位置 创建虚拟机后默认位置 Android虚拟机一个版本解禁10个g, c盘往往不够用。 这样就需要修改 第一步:.ini文件和对应的虚拟机avd文件夹 第二步:将avd剪切到其他的盘中 第三步:修改.ini文件的path路径为新的目录

Could not start AVD

Could not start AVD 环境 linux下的Android Studio 问题描述 在启动模拟器时需要先下载Andriod 10.0 (google),我使用over the wall 下载起来比较快,下载之后选择已下载的手机类型之后弹出来“Could not start AVD”,或者在第二次开机使用时下拉选择AVD Manage…

Android AVD 存放路径修改

1、在D盘或者任何你想要的地方建立一个文件夹 AndroidAVD用于存放虚拟机。 2、右击“我的电脑”->"属性"->“高级系统设置"->"环境变量"->"系统变量"->"新建",新建一个环境变量,变量名为ANDROID_SDK_H…

IntelliJ IDEA修改AVD目录

IDEA中Android AVD目录默认是用户目录的 .android 目录下,占用C盘空间,修改AVD下载目录,只需在环境变量中添加 ANDROID_AVD_HOME 为变更的目录即可。 如: PS: 原用户目录的 .android可以直接删除,创建AVD时会重新在用户…