TCP与UDP都是传输层协议
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/79d44135c936645753d345041c4dea6a.jpeg)
TCP与UDP协议对比
| TCP | UDP |
---|
全称 | 传输控制协议 | 用户数据报协议或通用数据报协议 |
连接属性 | TCP是面向连接的协议。 | UDP是一种无连接协议。 |
功能特点 | 面向连接,可以基于此进行网络间信息传输。 | UDP也是用于消息传输的协议。但不是基于连接的,你可以使用UDP直接从一个节点发送字节消息到另一个节点,之后整个消息传输过程就结束了,不像TCP还需要后续的释放连接阶段。 |
用法 | TCP适用于需要高可靠性的应用,传输时间相对不太重要。 | UDP适用于需要快速,高效传输的应用,例如游戏,UDP的无状态特性对于回答来自大量客户端的小型查询的服务器也非常适用。 |
应用范围 | TCP可以被HTTP,HTTP,FTP,SMTP,Telnet等协议调用 | UDP可以被DNS,DHCP,TFTP,SNMP,RIP,VOIP等协议调用。 |
数据包有序性 | TCP保证数据包的有序性。 | UDP不保证数据传输的有序性,因为所有数据包都是相互独立的。如果需要确保数据传输的顺序,需由应用层额外负责。 |
传输效率 | TCP的速度比UDP慢。 | UDP速度更快,TCP本身不会进行错误尝试。这是一个“尽力而为”的协议。 |
可靠性 | 确保数据传输的可靠性和有序性。 | 不保证数据传输的完整性和可靠性 |
报文头 | TCP报文头20个字节 | UDP报文头8个字节。 |
报文头字段 | 源端口,目标端口,校验和 | 源端口,目标端口,校验和 |
数据流 | 数据作为字节流的方式读取传输,消息之间无明显分界线。 | 数据包是单独发送的,并且只在它们到达时才会检查其完整性。数据包之间具有明确的边界,消息接收方会根据这些消息包的分隔符来读取发送方实际发送消息内容。 |
协议量级 | TCP是重量级协议。在发送数据前,TCP需要三次握手来建立连接。TCP具备可靠性特点和拥塞控制的特性。 | UDP属于轻量级协议。消息无序,无连接跟踪。它是在IP层之上设计的小型传输层。 |
数据流控制 | TCP执行流量控制。在发送任何用户数据之前,TCP需要三次握手来建立连接。TCP处理可靠性和拥塞控制。 | UDP没有流控制 |
错误校验 | TCP执行错误检查和错误恢复。发生错误的数据包会重新执行传输操作。 | UDP执行错误检查,但只进行简单丢弃错误的数据包,并不进行错误恢复和重传。 |
字段 | 1。序列号,2。AcK编号,3。数据偏移,4。保留,5。控制位,6。窗口,7。紧急指针8.选项,9。填充,10。检查总和,11。源端口,12。目的端口 | 1。长度,2。源端口,3。目标端口,4。检查总和 |
消息确认 | 消息确认 | 无消息确认 |
连接握手 | SYN,SYN-ACK,ACK | 无握手 |
https://www.diffen.com/difference/TCP_vs_UDP