TCP和UDP的区别
TCP是面向连接的通信服务
UDP是面向无连接的通信服务
TCP提供可靠的数据传输
UDP是不可靠的数据传输,可能会丢包
TCP传输速度慢
UDP传输速度快
TCP是面向字节流的
UDP是面向报文的
TCP的报头长度至少20字节
UDP报头长度只有8字节
TCP一对一
UDP可以一对一,一对多
传输方式的不同
UDP是面向报文的:
应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。
TCP是面向字节流的:
虽然应用层和TCP的交互也是一次一个数据块,但是TCP并不会总是一次发送一个数据块;TCP有一个缓冲区,当应用层传送的数据块太长的话,TCP会把它划分短一点再传送;如果应用层一次直发送一个字节的话,TCP也会累积到足够多的字节后在再发送。
连接方式的不同
UDP是面向无连接的
UDP传输数据时并不建立连接,而是通过简单地抓取应用程序的数据,然后尽可能快的把数据包扔到网络上,属于不可靠的连接。
TCP是面向连接的
TCP需要经过三次握手建立连接、四次挥手断开连接,是可靠的连接。
补充
为什么UDP比TCP快?
1. TCP需要三次握手
2. TCP有拥塞控制,控制流量等机制
为什么TCP比UDP可靠?
1. TCP是面向有连接的,建立连接之后才发送数据;而UDP则不管对方存不存在都会发送数据。
2. TCP有确认机制,接收端每收到一个正确包都会回应给发送端。超时或者数据包不完整的话发送端会重传。UDP没有。因此可能丢包。
什么时候使用TCP?
当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。
什么时候应该使用UDP?
当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。