TCP 和 UDP 区别

news/2024/9/17 7:41:01/ 标签: tcp/ip, udp, 网络协议

UDP

UDP(用户数据报协议,User Datagram Protocol)是一种无连接的网络传输协议,提供了简单的消息传送服务。UDP位于传输层,允许应用程序向其他主机发送封装在IP数据报中的消息,而无需先建立连接。由于UDP不保证消息的可靠传递,它可能不会检测到丢包、错误、乱序等问题,因此传输速度相对较快,但可靠性较低。

UDP的主要特点包括:

  1. 无连接:UDP在传输数据之前不需要建立连接,减少了开销和延迟。
  2. 尽最大努力交付:UDP不保证数据包的顺序、完整性或可靠性。如果需要这些保证,必须由应用层来实现。
  3. 简单:UDP头部开销小,仅8字节,包括源端口号、目的端口号、长度和校验和,相比TCP的20字节头部要小很多。
  4. 支持一对一、一对多、多对一和多对多的交互通信:UDP支持广播和多播传输。
  5. 无拥塞控制:UDP发送数据时不进行拥塞控制,因此网络拥塞不会影响发送方的发送速率。

UDP适用于以下场景:

  • 实时应用:如视频会议、实时游戏或VoIP(语音通信),这些应用对时间敏感,可以容忍一定程度的数据丢失,但不能接受大的延迟。
  • 简单查询响应通信:如DNS查询,通常只涉及单个请求和响应,UDP的低延迟特性非常适合。
  • 广播和多播传输:UDP能够支持向多个接收者同时发送数据,适用于多播应用。

由于UDP提供的是不可靠的服务,上层应用可能需要在必要时实现自己的错误检测和纠正机制,以确保数据的完整性和顺序。

TCP

TCP(传输控制协议,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它的设计目标是提供一个可靠的端到端的字节流传递服务。在互联网协议族(TCP/IP)中,TCP层位于IP层之上,应用层之下,负责在不可靠的互联网环境中提供可靠的数据传输服务。

TCP的主要特点包括:

  1. 面向连接:在数据传输之前,必须在两端建立一个TCP连接,数据传输完成后,连接需要被正式关闭。
  2. 可靠传输:TCP通过序列号、确认应答、重传机制等确保数据的正确传输。即使在网络条件不佳的情况下,也能保证数据的完整性和顺序。
  3. 流量控制:TCP使用滑动窗口机制进行流量控制,避免发送方数据发送过快,接收方来不及处理。
  4. 拥塞控制:TCP有一套拥塞控制机制,如慢启动、拥塞避免、快速重传和快速恢复,以避免网络拥塞。
  5. 全双工通信:TCP连接的两端都可以同时发送和接收数据,实现全双工通信。
  6. 字节流服务:TCP对应用层数据进行封装,形成字节流进行传输,而不是单独的数据包。

TCP的工作流程大致可以分为三个阶段:连接建立、数据传输和连接释放。

  • 连接建立:通过三次握手过程建立连接。首先,客户端发送一个SYN包;服务器回应一个SYN-ACK包;最后,客户端发送ACK包,完成连接建立。
  • 数据传输:在建立的连接上,数据可以双向传输。TCP保证数据的顺序、完整性。
  • 连接释放:通过四次挥手过程释放连接。首先,发起关闭连接的一方发送FIN包;接收方回应ACK包;接收方发送FIN包;最后,发起方回应ACK包,完成连接释放。

TCP广泛应用于需要高可靠性的网络服务中,如Web HTTP服务、电子邮件传输和文件传输等。

TCP和UDP是两种主要的传输层协议,它们有以下主要区别:

  1. 连接性:

    • TCP:面向连接
    • UDP:无连接
  2. 可靠性:

    • TCP:可靠传输,保证数据完整性和顺序
    • UDP:不可靠传输,可能丢包、乱序
  3. 传输速度:

    • TCP:相对较慢
    • UDP:相对较快
  4. 数据格式:

    • TCP:字节流
    • UDP:数据报
  5. 应用场景:

    • TCP:要求可靠传输的应用,如网页、邮件
    • UDP:实时性要求高的应用,如视频流、游戏
  6. 流量控制:

    • TCP:有流量控制机制
    • UDP:无流量控制
  7. 拥塞控制:

    • TCP:有拥塞控制
    • UDP:无拥塞控制
  8. 首部开销:

    • TCP:20字节
    • UDP:8字节
  9. 编程复杂度:

    • TCP:较复杂
    • UDP:较简单

http://www.ppmy.cn/news/1521960.html

相关文章

【论文笔记】Multi-Task Learning as a Bargaining Game

Abstract 本文将多任务学习中的梯度组合步骤视为一种讨价还价式博弈(bargaining game),通过游戏,各个任务协商出共识梯度更新方向。 在一定条件下,这种问题具有唯一解(Nash Bargaining Solution),可以作为多任务学习中的一种原则…

I2VGen-XL模型构建指南

一、介绍 VGen可以根据输入的文本、图像、指定的运动、指定的主体,甚至人类提供的反馈信号生成高质量的视频。它还提供了各类常用的视频生成模型工具,例如可视化、采样、训练、推理、使用图像和视频的联合训练,加速等各类工具和技术。 &quo…

微信小程序显示后台文章副文本,图片和视频正常显示

解决方案: 使用 wxParse 或 rich-text 组件: 这两种方式可以解析 HTML 字符串并渲染富文本内容,包括图片和视频。 数据处理: 将后台返回的富文本数据进行处理,提取出图片和视频的链接,并将其转换成小程序支持的格式。 方案一:使…

数据库学习01——mysql怎么创建数据库和表

第一步:创建数据库 使用 create database 语句,后跟要创建的数据库名称: CREATE DATABASE dbname;例如,要创建名为 my_db 的数据库,请输入: CREATE DATABASE my_db ;使用 show databases; 语句检查数据库是…

第十六篇:走入计算机网络的传输层--传输层概述

1. 传输层的功能 ① 分割与重组数据 一次数据传输有大小限制,传输层需要做数据分割,所以在数据送达后必然也需要做数据重组。 ② 按端口号寻址 IP只能定位数据哪台主机,无法判断数据报文应该交给哪个应用,传输层给每个应用都设…

Java基础 ——线程

多线程 并行和并发 需求:边打英雄联盟和边听音乐 问题:只能先后关系,并不能同时发生 多进程或者多线程来解决 并行和并发: 并行:多件事情在同一时刻发生 并发:多件事情在同一时间段发生,同一…

无线信道中ph和ph^2的场景

使用 p h ph ph的情况: Rayleigh 分布的随机变量可以通过两个独立且相同分布的零均值、高斯分布的随机变量表示。设两个高斯随机变量为 X ∼ N ( 0 , σ 2 ) X \sim \mathcal{N}(0, \sigma^2) X∼N(0,σ2)和 Y ∼ N ( 0 , σ 2 ) Y \sim \mathcal{N}(0, \sigma^2)…

回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测+交叉验证

回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测交叉验证 目录 回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测交叉验证效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现基于贝叶…

端口安全老化细节

我们都知道port-security aging-time命令用来配置端口安全动态MAC地址的老化时间,但是后面还可以加上类型: [SW1-GigabitEthernet0/0/1]port-security aging-time 5 type absolute Absolute time 绝对老化 inactivity Inactivity time相对老化 …

详解 HTTPS 与 TLS证书链校验

一文详解 HTTPS 与 TLS证书链校验_证书链怎么验证-CSDN博客 深入浅出 SSL/CA 证书及其相关证书文件(pem、crt、cer、key、csr) https://zhuanlan.zhihu.com/p/702745054

ASP.NET Core 入门教学十七 GraphQL入门指南

GraphQL 是一种用于 API 的查询语言,允许客户端请求所需的数据,并能够合并多个资源到一个请求中。在 ASP.NET Core 中使用 GraphQL 可以提供更灵活、高效和实用的数据查询方式。以下是 ASP.NET Core 中 GraphQL 的入门指南: 1. 安装必要的 N…

【Android】程序开发组件—探究Jetpack

引言 Jetpack是一个开发组件工具集,它的主要目的是帮助我们编写出更加简洁的代码,并简化我们的开发过程,在这么多的组件当中,最需要我们关注的其实还是架构组件,接下来就对Jetpack的主要架构组件进行学习!…

Jmeter终极线程组“Ultimate Thread Group“如何使用?

1、安装,点击"选项",再点击"Plugins Manager",下载"Custom Thread Groups" 2、添加"jpgc - Ultimate Thread Group" 3、"jpgc - Ultimate Thread Group"使用

从C到Py:面向对象程序设计

面向对象思想 我们先来介绍一下两大编程思想,其一是面向过程,它强调功能上的封装,运用的是简单的线性思维,二是面向对象,它主要是对属性和行为上的封装,处理复杂的事物。 面向过程的典型语言是C语言&…

西门子PLC MODBUS TCP通信

1. PLC要读设备的数据,PLC作为CLIENT(客户端),第三方设备作为SERVER(服务端)。https://zhuanlan.zhihu.com/p/705926399 2.PLC作为服务端 3.1 Modbus TCP 通信S7-1200Modbus TCP通信 Modbus TCP 服务器指令 MB_SERVER V5.0 新功…

android 15升级适配无法安装运行,并且提示应用未安装

最近升级项目到android15,一开始遇到这个报错,以为是广播的问题,因为当时在Log中发现这个的报错 One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be 这条报错的解决方案依据 google开发者android14 关于这条的 原文: …

Git撤销add

git要提交版本第一步是add,就算是文件本身已经存在只是修改,也需要添加,即添加到暂存区。其中最偷懒和也保险的命令是: git add . 即添加了本地(多称工作目录)所有文件。 撤销add有以下文章: …

了解一下HTTP 与 HTTPS 的区别

介绍: HTTP是超文本传输协议。规定了客户端(通常是浏览器)和服务器之间如何传输超文本,也就是包含链接的文本。通常使用TCP【1】/IP协议来传输数据,默认端口为80。 HTTPS是超文本传输安全协议,具有CA证书。…

【2024数模国赛赛题思路公开】国赛D题思路丨附可运行代码丨无偿自提

2024年国赛D题解题思路 问题一 【题目】 投射一枚深弹,潜艇中心位置的深度定位没有误差,两个水平坐标定位均服从正态分布。分析投弹最大命中概率与投弹落点平面坐标及定深引信引爆深度之间的关系,并给出使得投弹命中概率最大的投弹方案&…

【时时三省】(C语言基础)指针进阶 例题3

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 例题: 这个arr里面是放了[a b c d e f \0] 第一个arr 这个sizeof是计算这个数组的大小 这个里面加上\0一共是7个元素 所以打印7 第二个arr0 这个指数组…