本文翻译自 : http://www.diffen.com/difference/TCP_vs_UDP
这个网站叫diffen
:
在它上面,你可以比较两个东西的异同。
比较项 | TCP | UDP |
---|---|---|
全称 | Transmission Control Protocol(传输控制协议) | User Datagram Protocol(用户数据报协议) |
连接 | 面向连接 | 无连接 |
功能 | 连接的基础是消息的传递,其实就是各类消息的传递,从而确认目前的连接是否存在 | 没有连接的概念,每一个数据报的发送都是一次新的过程 |
用途 | 高可靠 | 快速,高效传输,但是可靠度要求不高 |
常见的应用层协议 | HTTP,HTTPS,FTP,Telnet | DNS,DHCP |
数据包顺序 | 按顺序重排数据包 | 不会有重排机制,不保证顺序 |
传输速度 | 慢 | 快,没有错误回复,尽最大交付 |
可靠性 | 保证发送的数据保持不变,并按相同的顺序发送 | 不保证所有的数据报都能收到 |
头部大小 | 20字节,最大60字节 | 8 字节 |
数据 | 数据被读取为字节流,没有消息边界的区分 | 数据包是单独发送的,只有在它们到达时才被检查,数据包有明确的边界,服务器会读取到一个完整的消息 |
消耗 | 消耗比较大,需要三次握手,四次挥手,并且还有机制处理可靠性和拥塞控制 | UDP是轻量的,消耗少 |
数据流控制 | 做流量控制。在发送任何用户数据之前,TCP需要三次握手来建立套接字连接。 TCP处理可靠性和拥塞控制 | 没有用于流量控制的选项 |
错误检测 | 进行错误检查和错误恢复。错误的数据包从源重传到目的地。 | UDP进行错误检查(CRC),但只丢弃错误的数据包。不尝试恢复错误。 |
确认 | ACK | 没有ACK |