IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> TCP 和 UDP 的区别 -> 正文阅读

[网络协议]TCP 和 UDP 的区别

TCP 是什么

TCP(TRANSMISSION CONTROL PROTOCOL) 称为传输控制协议,是 TCP/IP 网络中使用的主要协议之一。

  • TCP 用于保证所有的数据都按顺序接收,如果不使用 TCP,数据就可能会丢失或乱序
  • TCP 是面向连接的协议,两台计算机在进行通信之前都要首先建立逻辑连接,这个过程称为“三次握手”
    • TCP 的另一个重要作用是保证了数据的可靠传输,如果数据包乱码或丢失,TCP 会对其进行重传

TCP 连接过程(三次握手)

1、首先,发送方将发送一个 SYN 信息给接收方
2、接收方收到对方发送的 SYN 信息之后,将返回一个确认信息 ACK,告诉发送方自己已经接收到 SYN 信息
3、最后,发送方发送另一个确认信息 ACK 给接收方
此时,TCP 双方就可以进行收发数据了

为什么 TCP 建立连接需要三次握手,而不是两次?
这是因为这是为了防止出现失效的连接请求报文段被服务端接收的情况,从而产生错误。
在这里插入图片描述

TCP 的特点

  • 面向连接
  • 仅支持单播传输
  • 基于字节流
  • 可靠传输
  • 提供拥塞控制
  • 提供全双工通信

TCP 的优缺点

  • 是一种面向连接,可靠的,基于字节流的传输层通信协议
  • 优点:安全,有序
  • 缺点:慢,效率低,首部开销大(至少20字节),占用系统资源多

适用场景

  • 浏览网站
  • 发送或接收邮件
  • 文件传输
  • 远程登录

UDP 是什么

UDP(USER DATA PROTOCOL)称为用户数据报协议,和 TCP 类似,UDP 也用于发送和接收数据,不同的是,UDP 是无连接的,在通信之前无需建立逻辑连接,当然也不保证数据传输的可靠性。

在OSI 模型中运行在第四层——传输层

当计算机使用 UDP 发送数据时,它并不关心数据是否被另一端收到,以及数据在传输过程中发生了什么

UDP 的特点

  • 面向无连接

在发送端,应用层将数据传递给传输层的 UDP 协议,UDP 只会给数据增加一个 UDP 头标识,然后就传递给网络层了

在接收端,网络层将数据传递给传输层,UDP 只去除 IP 报文头就传递给应用层,不会进行任何拼接操作

  • 有单播,多播,广播的功能

UDP 支持一对一,一对多,多对一和多对多的传输方式

  • 基于数据报发送
  • 不可靠性

1、不可靠性体现在无连接上,通信前不需要建立连接

2、收到什么数据就传递什么数据,也不会备份数据,发送数据之后也不会关心对方是否已经正确接收到数据

3、UDP 没有拥塞控制和流量控制,一直会以恒定的速度发送数据。在网络条件不好的情况下可能会导致丢包,但在某些实时性要求高的场景(IP电话、视频会议、直播等)就需要使用 UDP 而不是 TCP
在这里插入图片描述

  • 首部开销小,传输效率高

UDP 头部包含了以下几个数据:

1、两个十六位的端口号,分别为源端口(可选字段)和目标端口
2、整个数据报文的长度
3、整个数据报文的检验和(IPv4 可选 字段),该字段用于发现头部信息和数据中的错误

因此 UDP 的头部开销小,只有八字节,相比 TCP 的至少二十字节要少得多,在传输数据报文时是很高效的

UDP 的优缺点

  • 是一种无连接,相对于 TCP 传输不可靠,基于数据报的传输层通信协议
  • 优点:
    报文简单,传输速度快,效率高,首部开销小(8字节),占用系统资源少
  • 缺点:
    不可靠,不稳定
    不提供数据包分组、组装
    不能对数据包进行排序

适用场景

  • 多媒体
  • 即时通信(QQ视频聊天)
  • 在线视频
  • 网络语音电话

TCP 和 UDP 的比较

TCPUDP
是否基于连接面向连接无连接
可靠性相对于 UDP 可靠相对于 TCP 不可靠
传输方式基于字节流基于数据报
连接对象数量点到点,一对一一对一,一对多,多对一,多对多
有序性有序无序
实时性(效率)较低较高
协议首部大小首部开销大(至少20 字节)首部开销小(8 字节)
系统资源占用较多较少

总结:

  1. TCP 是面向连接的协议,发送数据前需要建立连接;而 UDP 是无连接的协议,发送数据不需要连接
  2. TCP 提供交付保证(TCP 通过校验和,重传机制,序号标识,滑动窗口,确认应答实现可靠传输),无差错,不丢失,不重复,且按序到达,同时也保证了数据的有效性;而 UDP 不提供任何有序性的保证,尽最大努力交付,数据包将以任何可能的顺序到达
  3. TCP 的逻辑通信信道是全双工的可靠信道,UDP 则是不可靠信道
  4. UDP 具有较好的实时性,传输效率比 TCP 高,适用于对高速传输和实时性有较高要求的通信或广播通信
  5. TCP 的首部开销至少 20 字节;UDP 的首部开销仅为 8 字节
  6. TCP 对系统资源要求较多,而UDP 对系统资源要求较少。TCP 被认为是重量级的协议,而 UDP 则是轻量级的协议
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-26 10:33:32  更:2021-09-26 10:34:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:50:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码