这两个都是运输层的协议,UDP是无连接不可靠的,而TCP是面向连接可靠的,相较而言,UDP要简单许多。两者对比做一个简要概述。
连接方式
1.UDP是无连接的,就是通信双方无需建立连接就可以随时发送数据。
2.而TCP在发送数据之前必须三报文握手建立TCP连接,等数据传输结束后必须使用四报文挥手来释放连接。
可靠性
1.若传输过程中,UDP数据报产生误码了,接收方通过UDP首部检验和字段的值,可以检查产生误码,但也是丢弃罢了,发送方当然也不做任何处理。UDP适合于实时性比较高的情况:IP电话和视频会议。
2.而TCP通过基于字节的滑动窗口实现可靠传输。适用于实时性不高但保证数据的完整性的场景:文件传输。
对应用层报文的处理方式
UDP是面向应用报文的,而TCP是面向字节流的。
1.UDP:发送方的应用层将报文交付给运输层的UDP,UDP给应用层报文添加一个首部;接收方的运输层去掉UDP的首部,向上交付给应用进程,总体就是基于报文整体进行操作。
2.TCP:TCP将发送方的应用层报文看作是字节流,将他们的编号放在自己的发送缓存中,根据发送策略,提取部分字节,构建TCP报文段发送;接收方拿到TCP报文段提取数据存储在自己的接受缓存,并向上交付给应用进程。正是这种处理方式,TCP才能实现流量控制和拥塞控制。
对单播、多播、广播的支持
1.UDP支持单播、多播和广播。
2.但是TCP连接建立后,双方之间就好像有了一条可靠的信道,所以仅仅支持单播。