什么是TCP、UDP以及二者区别
TCP连接就像打电话,两者之间必须要有一条不间断的路,数据不到达对方,对方就一直等待,除非对方直接挂电话。先说的话先到,后说的话后到,是有顺序的。
UDP就像写信,发信方只管发出信件,不管对方是否收到。但是信封上必须写明地址,发信方和收信方没有通路,而是靠邮局联系。信件可能时隔很久才收到,也可能收不到,先发出的未必先到,后发出的也未必后到。
TCP是传输控制协议,提供面向连接的、可靠的字节流服务。客户端和服务端传输数据前,必须先建立TCP连接。TCP提供超时重发、丢弃重复数据、有序接收、应答确认、流量控制等保障可靠传输的功能;
UDP是用户数据报协议,是一种不可靠的、简单的面向数据报的传输层协议。它只负责把应用程序传给IP层的数据报发送出去,而不保证数据报到达。因为不建立连接,所以传输速率很快。
IP层根据端口区分是TCP报文还是UDP报文。
UDP适用场景:
- 面向数据报方式;
- 传输数据大多为短消息;
- 拥有大量client;
- 对数据安全性无特殊要求;
- 网络负担重,且对响应速度要求高;
如何使用UDP实现可靠传输
要使用UDP构建可靠的面向连接的数据传输,就要在应用层自己手动实现一些保障可靠传输的机制,来实现类似于TCP超时重传(定时器)、有序接收(添加包序号)、应答确认(ACK应答机制)、滑动窗口流量控制(滑动窗口机制)等。目前已有的UDP可靠传输机制有UDT、RTP、RUDP等协议。