一、UDP协议和TCP协议的对比
1、UDP无连接,TCP面向连接
使用UDP协议的通信双方可以随时发送数据,使用TCP协议的通信双方必须先进行3次握手建立连接,才能发送数据,最后还要进行4次挥手才能释放连接。
2、UDP支持单播、多播以及广播,TCP只支持单播
可以和第一点联系起来,TCP要想发送数据得先建立起连接,也就是说双方没有建立连接自然不能发送数据。但是UDP可以随时发送数据,没有那么多的局限性,也就支持单播、多播和广播。
3、UDP面向应用报文,TCP面向字节流
UDP:
通信双方使用UDP协议,发送方的运输层给从应用层传下来的应用报文添加一个UDP首部,使之成为UDP数据报(上一节提到的UDP复用),随后经过下面各层处理后进行发送。
接收方收到后,在运输层去除UDP数据报的UDP首部,并交付给上一层(上一节提到的UDP分用)。
很明显可以看到,整个过程UDP对应用报文并没有进行合并,也没有进行拆分,发送方仅仅只是添加一个UDP首部,就交给下一层;而接收方也仅仅只是将UDP首部去掉,随后交付给上一层。所以UDP是面向应用报文的。
TCP:
如果通信双方使用TCP协议,发送的运输层将应用层传下来的数据块看成一连串的、无结构的字节流。TCP将它们编号并存储在自己的发送缓存中,TCP根据发送策略从发送缓存中提取一定数量的字节,构成TCP报文段并发送。
接收方从接收到的报文段中取出数据载荷部分并存储在接收缓存中,同时将接收缓存中的一些字节交付给上层。
所以TCP是面向字节流的。这也是TCP实现可靠传输、流量控制和拥塞控制的基础。
4、UDP提供不可靠传输,TCP提供可靠传输
5、UDP数据报首部仅有8字节,TCP报文段首部最小20字节、最大为60字节。