面试的时候经常会问到TCP和UDP的区别,他们俩都属于传输层协议,看了极客时间的趣谈网络协议之后总结下。
从特点上看他们的区别如下:
1、TCP是面向连接的,而UDP是面向无连接,那什么是连接呢?其实就是客户端和服务端之间的状态(连接状态),我们知道TCP通信时有三次握手和四次挥手的过程,这里面其实就是创建连接和释放连接的过程,具体过程参考整理的TCP抓包过程;
2、TCP是可靠的,UDP是不可靠的,前面提到TCP和UDP的连接问题,就是因为TCP是连接的,所以它可以实现数据的可靠性达到,保证数据正常传输,而UDP就不一样,他只管发,发完之后也不去管客户端是否收到了,所以他是不可靠的;
3、TCP传递时都需要建立连接,而且TCP的数据格式内容比较多,所以这在性能(实时性)上相比于UDP来说是比较差的,UDP比较直接,直接传;
4、TCP便于控制,从字面上将我们就是“传输控制协议”,也就说可以控制传输,这里面我理解主要是拥塞控制和流量控制,通过这种技术可以控制整个网络的质量,避免网络拥堵,具体细节实现目前还将不清楚;
5、TCP基于流模式,UDP数据报模式 ;
6、有序性:TCP 利用序列号保证了消息包的的顺序交付,到达可能无序,但 TCP 会排序;
使用场景上看:
由于TCP是可靠的、面向连接的,所以更适合对通信传输可靠性较高的场景,常用的:Telnet、FTP、SMTP、HTTP,HTTP是最普遍最广泛的基于TCP协议基础上的应用层协议,UDP适合实时性较高的场景,比如:流媒体协议、实时游戏、IOT物联网、移动通信领域,还有就是对数据可靠性要求比较的场景,比如:DNS、DHCP
数据格式上看:
TCP的报文格式:
UDP的报文格式:
同样抓包看下,影像比较深刻,如下:
UDP:
UDPTCP:
TCP
网友评论