tcp与udp的区别?

如题所述

tcp---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个tcp连接,之后才能传输数据。tcp提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
udp---用户数据报协议,是一个简单的面向数据报的运输层协议。udp不提供可靠性,它只是把应用程序传给ip层的数据报发送出去,但是并不能保证它们能到达目的地。由于udp在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快
现在internet上流行的协议是tcp/ip协议,该协议中对低于1024的端口都有确切的定义,他们对应着internet上一些常见的服务。这些常见的服务可以分为使用tcp端口(面向连接)和使用udp端口(面向无连接)两种。
说到tcp和udp,首先要明白“连接”和“无连接”的含义,他们的关系可以用一个形象地比喻来说明,就是打电话和写信。两个人如果要通话,首先要建立连接——即打电话时的拨号,等待响应后——即接听电话后,才能相互传递信息,最后还要断开连接——即挂电话。写信就比较简单了,填写好收信人的地址后将信投入邮筒,收信人就可以收到了。从这个分析可以看出,建立连接可以在需要痛心地双方建立一个传递信息的通道,在发送方发送请求连接信息接收方响应后,由于是在接受方响应后才开始传递信息,而且是在一个通道中传送,因此接受方能比较完整地收到发送方发出的信息,即信息传递的可靠性比较高。但也正因为需要建立连接,使资源开销加大(在建立连接前必须等待接受方响应,传输信息过程中必须确认信息是否传到及断开连接时发出相应的信号等),独占一个通道,在断开连接钱不能建立另一个连接,即两人在通话过程中第三方不能打入电话。而无连接是一开始就发送信息(严格说来,这是没有开始、结束的),只是一次性的传递,是先不需要接受方的响应,因而在一定程度上也无法保证信息传递的可靠性了,就像写信一样,我们只是将信寄出去,却不能保证收信人一定可以收到。
tcp是面向连接的,有比较高的可靠性,
一些要求比较高的服务一般使用这个协议,如ftp、telnet、smtp、http、pop3等,而udp是面向无连接的,使用这个协议的常见服务有dns、snmp、qq等。对于qq必须另外说明一下,qq2003以前是只使用udp协议的,其服务器使用8000端口,侦听是否有信息传来,客户端使用4000端口,向外发送信息(这也就不难理解在一般的显ip的qq版本中显示好友的ip地址信息中端口常为4000或其后续端口的原因了),即qq程序既接受服务又提供服务,在以后的qq版本中也支持使用tcp协议了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-10-20
TCP全称为Transmission Control Protocol,即传输控制协议;
UDP全称为User Datagram Protocol,即用户数据报协议。
两者区别在于以下几点:
1、连接性
TCP面向连接,也就是在发送和接收数据之前,必须和对方建立连接,也就是我们常说的用来建立连接的3次握手和负责断开连接的4次挥手;而UDP面向无连接,也就是不需要建立连接即可发送和接收数据。
2、可靠性
TCP提供可靠的服务,传输过程中可以确保连接可靠稳定,如编号确认、流量控制、计时器等,确保数据不丢失不出错。
3、报文首部
TCP报文首部有20个字节,额外开销大;UDP报文首部有8个字节,标题短开销小。
4、报文结构
TCP面向字节流,将应用层报文分解成多个TCP报文段进行传输,到底目的站后重新分配;UDP面向报文,不拆分报文,1次发送1个报文。
5、吞吐量控制
TCP拥塞控制、流量控制、重传机制、滑动窗口等机制保证传输质量,而UDP却没有。
6、双工性
TCP只能点对点全双工通信,UDP支持一对一、一对多、多对一、多对多的交互通信。
相似回答