TCP与UDP区别

2012-11-28来源 : 互联网

TCP(Tran**ission Control Protocol)传输控制协议,提供面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,**数据能从一端传到另一端。

UDP(User Datagram Protocol)用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能**它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

TCP建立连接之后,通信双方都同时可以进行数据的传输,因此它是全双工的,TCP采用超时重传和捎带确认机制来**其可靠性,位于目的主机的TCP服务对接受到的数据进行确认,并向源应用程序发送确认信息,确认信息是包含待接收下一个字节的数据包。根据滑动窗口协议,对于窗口内未经确认的分组需要重传。对于网络拥塞,TCP应用的是AIMD拥塞控制算法,该算法实现滑动窗口慢启动的功能,并**对超时事件作出及时反应。

发送数据过程中,应用数据被分割成TCP认为*适合发送的数据块。这和UDP**不同,应用程序产生的数据报长度将保持不变。而当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒。TCP将保持它*部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。如果必要,TCP将对收到的数据进行重新排序,并丢弃重复数据报文,将收到的数据以正确的顺序交给应用层。

UDP协议使用报头中的校验值来**数据的安全。校验值*先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP协议可以检测是否出错。这与TCP协议是不同的,后者要求必须具有校验值。

由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。UDP使用尽*大努力交付,即不**可靠交付, UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加*部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。 

综上,当数据传输的性能必须让位于数据传输的完整性、可控制性和可靠性时,TCP协议是当然的选择。当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是*好的选择。

 

渝ICP备2024022750号-1

Copyright©2004-2024 3158.CN. All Rights Reserved 重庆市上台九悟酒销售有限公司 版权所有

3158招商加盟网友情提示:投资有风险,选择需谨慎