**
TCP与UDP的区别
**
TCP与UDP的区别,应该是个会被问的频率最高的一个面题。
1.TCP
传输控制协议TCP——提供面向连接的、可靠的数据传输服务,其数据传输的单位是报文段(segment)
TCP的主要特点:
①面向连接的运输层协议
②每一条TCP连接只能是点对点(1对1的);
③TCP提供可靠交付的服务(传送数据:无差错、不丢失、不重复、按序到达)
④TCP提供全双工通信(这应该也是释放连接需要四次挥手的原因之一(个人理解))
⑤面向字节流:“流”指的是流入到进程或从进程流出的字节序列。TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。
2.UDP:
用户数据报协议UDP——提供无连接的、尽最大努力的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报。
UDP的主要特点:
①UDP是无连接的
②UDP使用尽最大努力交付,不保证可靠传输
③面向报文
④没有拥塞控制
⑤UDP支持一对一、一对多、多对一和多对多的交互通信
⑥UDP首部开销小,仅8个字节,但TCP(至少)要20字节
3.TCP和UDP在发送报文时采用的方式完全不同,TCP并不关心应用进程一次把多长的报文发送到TCP缓存(发送缓存)中,而是根据对方给出的窗口值和当前网络拥塞的程度决定一个报文段应该包含多少字节(UDP发送的报文长度是应用进程给出的)。