1.TCP面向连接,UDP面向非连接(发送数据前不需要连接)
面向连接是通信前,确认双方链路是否可达(三次握手和四次挥手)
面向非连接,通信前不去确认链路是否可达
2.TCP提供安全可靠的数据传输服务,UDP不保证传输数据的可靠性
TCP在数据传输会确认连接与信息是否正确收到,保证数据无差错、不丢失、不重复
UDP收到什么数据就传递什么数据,不会备份数据,发送数据也不关心对方是否正确接收到了数据
3.TCP面向字节流,UDP面向报文
字节流是因为TCP遵循Nagle算法,会将数据分组,会造成粘包
只有上一个分组得到确认,才会发送下一个分组
手机出多个小分组,在一个确认来时一起发送
面向报文是将同一种数据包一起打包到IP层,不会出现TCP中两种不同的数据包一起发送到IP层的问题,所以不会出现粘包
4.TCP传输速度慢,UDP传输数据快(现在TCP不比UDP 慢多少)
5.TCP连接只能是点对点的,UDP可以一对一,一对多,多对一
6.TCP首部开销20字节,UDP首部开销小,只需8字节
参考文章
TCP/IP协议之传输层:TCP/UDP协议详解(一)_一个Android菜鸟的博客-CSDN博客