传输层——UDP和TCP的对比

整理自计算机网络微课堂

一、UDP是无连接的,而TCP是面向连接的。

使用UDP协议通信的双方,可以随时发送数据。

使用TCP协议的通信双方,在进行数据传输之前,必须使用“三报文握手”来建立TCP连接,TCP连接建立成功后才能进行数据传输。数据传输结束后,必须使用“四报文挥手”来释放TCP连接。这里的连接是指逻辑连接关系,而不是物理连接。

二、UDP支持单播、多播及广播,TCP只支持单播。

UDP支持单播、多播、广播,也就是说,UDP支持1对1、1对多、1对全的通信。

TCP只支持单播,也就是1对1通信。

三、UDP是面向报文的,TCP是面向字节流的

UDP对应用进程交付下来的报文既不合并也不拆分,而是保留这些报文的边界。

发送方的TCP把应用进程交付下来的数据块仅仅看作是一连串的、无结构的字节流,TCP并不知道这些待传送的字节流的含义,仅将他们编号,并存储在自己的发送缓存中。TCP根据发送策略,从发送缓存中提取一定数量的字节,构建TCP报文段并发送。

接收方的TCP一方面从所接收到的TCP报文段中取出数据载荷部分并存储在接收缓存中,一方面将接收缓存中的一些字节交付给应用进程,TCP不保证接收方应用进程所收到的数据块与发送方应用进程所发出的数据块具有对应大小的关系。接收方的应用进程必须有能力识别收到的字节流,把它还原成有意义的应用层数据。也就是说,TCP是面向字节流的,这正是TCP实现可靠传输、流量控制、以及拥塞控制的基础。

四、UDP向上层提供无连接、不可靠的传输服务,TCP向上层提供面向连接的可靠传输服务。

五、首部

UDP首部仅有4个字段,每个字段长度为2个字节,由于UDP不提供可靠传输服务,仅仅在网际协议的基础上添加了用于区分应用进程的端口,因此,UDP的首部非常简单,只有8个字节。

一个TCP报文段由首部和数据载荷两部分构成,比UDP用户数据报的首部复杂得多。其最小长度为20字节,最大长度为60字节,这是因为TCP要实现可靠传输、流量控制、拥塞控制等服务,因此TCP的首部复杂、字段多、首部长度长。

原文地址:https://www.cnblogs.com/zhaogw/p/15494614.html