首页 > 其他分享 >如何理解UDP 和 TCP? 区别? 应用场景?

如何理解UDP 和 TCP? 区别? 应用场景?

时间:2024-03-20 18:24:40浏览次数:25  
标签:UDP 场景 字节 报文 TCP 发送 应用层

一、UDP

UDP(User Datagram Protocol),用户数据包协议,是一个简单的面向数据报的通信协议,即对应用层交下来的报文,不合并,不拆分,只是在其上面加上首部后就交给了下面的网络层

也就是说无论应用层交给UDP多长的报文,它统统发送,一次发送一个报文

而对接收方,接到后直接去除首部,交给上面的应用层就完成任务

UDP报头包括4个字段,每个字段占用2个字节(即16个二进制位),标题短,开销小

特点如下:

  • UDP 不提供复杂的控制机制,利用 IP 提供面向无连接的通信服务
  • 传输途中出现丢包,UDP 也不负责重发
  • 当包的到达顺序出现乱序时,UDP没有纠正的功能。
  • 并且它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制。即使是出现网络拥堵的情况,UDP 也无法进行流量控制等避免网络拥塞行为

二、TCP

TCP(Transmission Control Protocol),传输控制协议,是一种可靠、面向字节流的通信协议,把上面应用层交下来的数据看成无结构的字节流来发送

可以想象成流水形式的,发送方TCP会将数据放入“蓄水池”(缓存区),等到可以发送的时候就发送,不能发送就等着,TCP会根据当前网络的拥塞状态来确定每个报文段的大小

TCP报文首部有20个字节,额外开销大

特点如下:

  • TCP充分地实现了数据传输时各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在 UDP 中都没有。
  • 此外,TCP 作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。
  • 根据 TCP 的这些机制,在 IP 这种无连接的网络上也能够实现高可靠性的通信( 主要通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现)

三、区别

UDPTCP两者的都位于传输层,如下图所示:

 两者区别如下表所示:

  • TCP 是面向连接的协议,建立连接3次握手、断开连接四次挥手,UDP是面向无连接,数据传输前后不连接连接,发送端只负责将数据发送到网络,接收端从消息队列读取

  • TCP 提供可靠的服务,传输过程采用流量控制、编号与确认、计时器等手段确保数据无差错,不丢失。UDP 则尽可能传递数据,但不保证传递交付给对方

  • TCP 面向字节流,将应用层报文看成一串无结构的字节流,分解为多个TCP报文段传输后,在目的站重新装配。UDP协议面向报文,不拆分应用层报文,只保留报文边界,一次发送一个报文,接收方去除报文首部后,原封不动将报文交给上层应用

  • TCP 只能点对点全双工通信。UDP 支持一对一、一对多、多对一和多对多的交互通信

两者应用场景如下图:

可以看到,TCP 应用场景适用于对效率要求低,对准确性要求高或者要求有链接的场景,而UDP 适用场景为对效率要求高,对准确性要求低的场景

参考文献

  • https://zh.wikipedia.org
  • https://www.shangmayuan.com/a/a1e3ceb218284cefb95de7fd.html
  • https://segmentfault.com/a/1190000021815671
  • https://vue3js.cn/interview

标签:UDP,场景,字节,报文,TCP,发送,应用层
From: https://www.cnblogs.com/smileZAZ/p/18085812

相关文章

  • redis的客户端操作,使用场景
    ####配置允许远程链接############1使用配置文件启动redisdaemonizeyesbind0.0.0.0protected-modenorequirepass123456pidfile/var/run/redis.pidport6379dir"/root/redis-7.2.4/data"logfile6379.log#2redis-server./redis-conf#3允许远程链接......
  • tcpdump
    tcpdump是一款强大的网络协议分析器,用于捕获和分析网络流量安装必要的packageapt-getupdateapt-getinstalltcpdump(ubuntu用apt-get,centos用yum;cat/etc/os-release可以查看操作系统)apt-getinstallnet-tools基本的tcpdump使用方法及其参数:1.基本抓包:sudotcpdump......
  • C++ Qt开发:QUdpSocket实现组播通信
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QUdpSocket组件实现基于UDP的组播通信。组播是一种一对多的通信方式,允许一个发送者将数......
  • C语言的UDP广播实现
    C语言的UDP广播实现以下是一个使用epoll和getopt的UDP广播客户端示例。这个客户端会向指定的广播地址发送一条消息,并等待服务器返回的数据包。#include<arpa/inet.h>#include<netinet/in.h>#include<sys/epoll.h>#include<sys/socket.h>#include<unistd.h>#include<st......
  • TCP基本语法
    TCP基本语法Cilent####TCP协议客户端importsocket#1.创建一个socket对象sk=socket.socket()#2.与服务端建立连接sk.connect(("127.0.0.1",9000))#3.收发数据的逻辑"""发送的数据类型是二进制字节流""""""b开头的字符串是二进制字节流格式,要求字符类型必......
  • Flink实战之Flink乱序场景汇总
    目录一数据乱序场景1数据源乱序2ETL造成乱序二Flink处理乱序数据方案1Watermark和EventTime模式2提前创建保序任务3使用事务性Sink保证下游数据时序三结语       在数据处理领域,无论离线批处理领域还是实时流处理领域,数据时序性对于最终数据的......
  • Modbus TCP转Profinet网关实现多服务器无缝对接通信
    在工业控制领域中,ModbusTCP转Profinet网关(XD-ETHPN20)扮演着连接不同设备间通讯的重要角色。当将Modbus主站与十几台服务器进行通讯时,通过modbustcp转profinet网关(XD-ETHPN20)设备将不同协议间的数据交和通迅连接起来,为工业自动化系统的运行提供了稳定可靠的基础。为了实现Modbus......
  • TCP与UDP以及常用协议
    TCP与UDP......
  • Linux TCP/UDP CS模型
    LinuxTCP/UDPCS模型目录LinuxTCP/UDPCS模型TCPServer/TCPClientUDPServer/UDPClientTCPServer/TCPClient在C语言中实现一个TCP服务器时,使用select函数可以帮助我们同时监控多个文件描述符(包括socket)的状态,从而实现非阻塞的I/O操作。以下是一个简单的TCP服务器示例,它......
  • 镭速,企业传输大文件都在用的udp文件传输工具
    在当今快速变化的数字世界中,文件传输工具已成为企业运营不可或缺的一部分。尤其是面对大文件传输的需求,传统的TCP协议由于其设计上的局限性,往往无法满足企业对高速、稳定传输的需求。这时,UDP文件传输工具以其独特的优势走进了人们的视野。UDP文件传输工具的优势与缺点UDP是......