TCP和UDP的区别?
TCP (传输控制协议) | UDP (用户数据报协议) | |
特点 | 可靠通信, 保证了数据的有序、 完整、 到达 | 不能保证数据有序、完整、到达 |
面向连接 | 面向连接的,只有在连接建立后才能够进行通信,简单来说就是需要牵电话线才能通话; | 不是面向连接的,任意UDP套接字只要获得了接收方的地址,就能够发送数据给接收方,简单来说就是只要我知道你家信箱在哪,我就可以写信给你; |
通信数据包 | 对用户而言,单次通信数据包长度的不做限制,用户不用考虑拆包问题,而要考虑粘包问题。因为任意长度的数据都会被TCP低层算法拆包,以某个长度的小数据包发送给接收方。且连续2次通信是可能被接收方一次性接收处理。 | 单次通信数据会数据长度有限制,超过限制只能在用户层进行封包,并要设计协议告知接收方数据长度。 不存在粘包问题,但是存在包问题,因为UDP下每次通信数据包没有应答机制,除非在应用层手动实现应答(需要做同步)。 |
多连接与广播 | 需要用户自己逐步构建多连接,并由程序员.使用一些手段进行维护,不支持通俗意义上的广播,最多能在现有的链接中进行“广播”。 | 本身没有限制通信规模,支持广播、多播、组播 |
服务器应用 |
| UDP一般不叫服务器,因为UDP是对等通信,不存在主机程序提供服务这一-说。而且单次通信数据包中包含了发送方的地址信息,但在应用层中没有刻意存储客户端的地址信息。 |
简述版:
TCP和UDP的区别?
Tcp:传输控制协议,是面向连接保证可靠性的协议。
Udp:用户数据报协议,是不连接的,不能保证可靠性的协议。
Tcp有:超时重传机制,滑动窗口机制,确认和应答机制。
Tcp是面向字节流的传输,数据包之间没有边界,会出现粘包现象。
Udp包是独立的,不会出现粘包现象。
问题: 如何保证UDP协议可靠?
答案详情请看:https://blog.csdn.net/weixin_50019298/article/details/115242116