一文读懂TCP、UDP协议区别和应用场景

网络 网络管理
TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol ,用户数据报协议)都属于TCP/IP协议簇。TCP/IP协议集包括了超文本传输协议(HTTP)、文本传输协议(FTP)、远程登录协议(Telnet)、internet协议(IP)、internet控制信息协议(IMCP)等,而今天要讲的传输控制协议(TCP)和用户数据报协议(UDP)正是运行在协议簇的传输层。

 [[276674]]

TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol ,用户数据报协议)都属于TCP/IP协议簇。TCP/IP协议集包括了超文本传输协议(HTTP)、文本传输协议(FTP)、远程登录协议(Telnet)、internet协议(IP)、internet控制信息协议(IMCP)等,而今天要讲的传输控制协议(TCP)和用户数据报协议(UDP)正是运行在协议簇的传输层。

 

一文读懂TCP、UDP协议区别和应用场景

 

OSI协议模型、TCP/IP协议模型

TCP和UDP的区别

连接性

TCP是面向连接的协议,在收发数据前必须和对方建立可靠的连接,建立连接的3次握手、断开连接的4次挥手,为数据传输打下可靠基础;UDP是一个面向无连接的协议,数据传输前,源端和终端不建立连接,发送端尽可能快的将数据扔到网络上,接收端从消息队列中读取消息段。

可靠性

TCP提供可靠交付的服务,传输过程中采用许多方法保证在连接上提供可靠的传输服务,如编号与确认、流量控制、计时器等,确保数据无差错,不丢失,不重复且按序到达;UDP使用尽可能最大努力交付,但不保证可靠交付。

报文首部

TCP报文首部有20个字节,额外开销大;UDP报文首部只有8个字节,标题短,开销小。

 

一文读懂TCP、UDP协议区别和应用场景

 

UDP报文结构

 

一文读懂TCP、UDP协议区别和应用场景

 

TCP报文结构

报文传输

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

吞吐量控制

TCP拥塞控制、流量控制、重传机制、滑动窗口等机制保证传输质量;UDP没有。

双工性

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

TCP和UDP的编程步骤

 

一文读懂TCP、UDP协议区别和应用场景

 

TCP编程步骤

 

一文读懂TCP、UDP协议区别和应用场景

 

UDP编程步骤

从上面TCP、UDP编程步骤可以看出,UDP 服务器端不需要调用监听(listen)和接收(accept)客户端连接,而客户端也不需要连接服务器端(connect)。UDP协议中,任何一方建立socket后,都可以用sendto发送数据、用recvfrom接收数据,不必关心对方是否存在,是否发送了数据。

TCP和UDP的使用场景

为了实现TCP网络通信的可靠性,增加校验和、序号标识、滑动窗口、确认应答、拥塞控制等复杂的机制,建立了繁琐的握手过程,增加了TCP对系统资源的消耗;TCP的重传机制、顺序控制机制等对数据传输有一定延时影响,降低了传输效率。TCP适合对传输效率要求低,但准确率要求高的应用场景,比如万维网(HTTP)、文件传输(FTP)、电子邮件(SMTP)等。

UDP是无连接的,不可靠传输,尽最大努力交付数据,协议简单、资源要求少、传输速度快、实时性高的特点,适用于对传输效率要求高,但准确率要求低的应用场景,比如域名转换(DNS)、远程文件服务器(NFS)等。

责任编辑:武晓燕 来源: 今日头条
相关推荐

2021-05-14 08:34:32

UDP TCP场景

2023-04-26 13:48:36

2024-02-23 10:10:00

List接口Java

2022-10-12 07:24:18

大文件哈希算法Hash

2013-05-27 10:48:16

TCPUDP传输协议

2020-03-14 13:13:02

物联网IOT通信协议

2020-03-03 17:47:07

UDP TCP面试题

2021-05-07 09:17:21

HTTPTCP协议

2022-07-07 18:03:15

网络协议网络通信

2022-06-14 09:01:06

TypeScript泛型

2022-02-20 09:56:28

TCPIP网络协议

2022-11-06 21:14:02

数据驱动架构数据

2018-09-28 14:06:25

前端缓存后端

2022-09-22 09:00:46

CSS单位

2020-12-31 10:48:17

ELKEFKLinux

2023-10-23 15:38:12

Spring 5开发

2022-07-27 15:56:58

固态硬盘网络存储

2021-08-04 16:06:45

DataOps智领云

2023-12-22 19:59:15

2019-11-14 05:02:05

雾计算边缘计算物联网
点赞
收藏

51CTO技术栈公众号