首先TCP和UDP协议都是运行在运输层的协议。
UDP协议:用户数据包协议
1、UDP协议是无连接的。也就说在数据发送之前并不需要建立连接(当然,在发送数据结束的时候也就不存在链接的释放),因此减少了开销和数据发送之前的时延。
2、UDP使用尽最大努力的交付,但是不保证可靠性的交付,因此主机不需要维持复杂的链接状态表。
3、UDP是面向报文。发送方的UDP对于应用程序进程交下来的报文,即不合并,也不拆分,而是保留这些报文的边界。这也就是说,应用层交付给UDP多长的报文,UDP就照样发送,即一次发送一个报文。同时,在接收方,对于IP层交上来的UDP用户数据报,在去除首部后就原封不动的交付给应用层的应用进程了。也就说,UDP一次交付一个完整的报文。因此报文的大小必须合适,负责会降低数据的传输效率。如果报文太长,在IP层需要对报文分片,就会降低IP层的效率。反之,若报文太短,UDP把它交给IP层后,会使得IP数据报的首部相对过长,同样会降低IP层的效率。
4、UDP没有拥塞控制
TCP协议:传输控制协议
1、TCP协议是面向连接的运输层协议。在使用TCP协议之前,必须先建立TCP连接。
2、每个TCP连接只能有两个端点
3、可靠性交付,由于IP层只提供无比特差错的传输。
4、全双工通信。
5、面向字节流。TCP中的“流”指的是流入到进程或从进程流出的字节序列。