一.UDP协议
1.UDP协议是无连接的,发送数据之前不需要建立连接,减少了开销和发送数据之前的时延
2.UDP使用仅最大努力交付,主机不需要维护复杂的链接状态表
3.UDP是面向报文的。发送方的UDP对应用程序交下来的报文,添加首部后交给IP层,UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。也就是说,不管应用层交给UDP多长的报文,UDP照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,UDP把它交给IP层后,IP层在传送时可能要进行分片,会降低IP层的效率,反之,报文太短,UDP把它交给IP层后,会使IP数据报的首部的相对长度太大,也降低了IP层的效率
4.UDP没有拥塞控制,网络出现拥塞时,不会使源主机的发送速率降低,适用于某些实时性要求高的应用
5.UDP支持一对一,一对多,多对一,多对多的交互通信
6.UDP首部开销相对TCP来说较小
二.TCP协议
2.每一条TCP连接只能有两个端点,每一条TCP连接是点对点的
3.TCP提供可靠交付服务,通过TCP连接传送的数据,无差错,不丢失,不重复,并且按次序到达
4.TCP提供全双工通信,TCP连接两端都设有发送缓存和接受缓存,用来临时存放双向通信的数据。在发送时,应用程序把数据传送给TCP的缓存后,就可以做自己的事情,TCP在合适的时候把数据发送出去。在接收时,TCP把收到的数据放入缓存,上层的应用进程在合适的时候读取缓存中的数据
5.面向字节流。面向字节流的含义是:虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据看成仅仅是一连串的无结构字节流,TCP并不知道所传送的字节流的含义,TCP不保证接受方应用程序所收到的数据块和发送方应用程序所发出的数据块具有大小对应的关系
6.TCP对应用进程一次把多长的报文发送到TCP的缓存中是不关心的,TCP根据通信对方给出的窗口值和当前网络的拥塞程度决定一个报文段应该包含多少字节(UDP发送的报文长度是应用进程给出的),如果应用进程传送到TCP缓存的数据块太长,TCP就可以把它划分短一些再传送。如果应用进程一次只发来一个字节,TCP也可以等待积累有足够多的字节后再构成报文段发送出去