【Java】Java网络编程TCP与UDP

来源:互联网 发布:淘宝买家2钻厉害吗 编辑:程序博客网 时间:2024/05/29 04:37

【区别1】

TCP和UDP都是传输层协议

TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。

当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。

TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。


UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,

但是并不能保证它们能到达目的地。

由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,

且没有超时重发等机制,故而传输速度很快


【区别2】

两类传输协议:TCP;UDP 
TCP是Tranfer Control Protocol的 简称,是一种面向连接的保证可靠传输的协议。

通过TCP协议传输,得到的是一个顺序的无差错的数据流。

发送方和接收方的成对的两个socket之间必须建 立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送 或接收操作。 

UDP是User Datagram Protocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。 

比较: 

UDP:1,每个数据报中都给出了完整的地址信息,因此无需要建立发送方和接收方的连接。 

            2 ,UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内。 

           3,UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方 

TCP: 1,面向连接的协议,在socket之间进行数据传输之前必然要建立连接,所以在TCP中需要连接 
                时间。 


            2,TCP传输数据大小限制,一旦连接建立起来,双方的socket就可以按统一的格式传输大的   
                    数据。 

           3,TCP是一个可靠的协议,它确保接收方完全正确地获取发送方所发送的全部数据。 

应用: 

    1,TCP在网络通信上有极强的生命力,例如远程连接(Telnet)和文件传输(FTP)都需要不定长度的数据被可靠地传输。但是可靠的传输是要付出代价的,对数据内容正确性的检验必然占用计算机的处理时间和网络的带宽 ,因此TCP传输的效率不如UDP高。 

    2,UDP操作简单,而且仅需要较少的监护,因此通常用于局域网高可靠性的分散系统中client/server应用程序。例如视频会议系统,并不要求音频视频数据绝对的正确,只要保证连贯性就可以了,这种情况下显然使用UDP会更合理一些。 


【小结】

当数据传输的性能必须让位于数据传输的完整性、可控制性和可靠性时,TCP协议是当然的选择。当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。在数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择,如:DNS交换。把SNMP建立在UDP上的部分原因是设计者认为当发生网络阻塞时,UDP较低的开销使其有更好的机会去传送管理数据。TCP丰富的功能有时会导致不可预料的性能低下,但是我们相信在不远的将来,TCP可靠的点对点连接将会用于绝大多数的网络应用。

1 0
原创粉丝点击