TCP协议和UDP协议的区别
一、TCP协议
TCP (Transmission Control Protocol)属于传输层协议,TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;一般来说,TCP对应的是可靠性要求高的应用。
TCP支持的应用协议主要有:Telnet、FTP、SMTP等。
TCP是面向连接的协议,也就是说,正式收发数据之前,必须要先建立可靠的连接。面向连接就是比如“你给别人打电话,线路需要接通了还有对方拿起话筒,才能互通电话”。一个TCP连接必须要经过三次“对话”才能建立起来,这里作下简单的介绍,主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机
A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。
二、UDP协议
UDP(User Datagram Protocol)协议属于传输层协议,UDP则不为IP提供可靠性、流控或差错恢复功能;一般来说,UDP对应的则是可靠性要求低、传输经济的应用。
UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。
UDP协议是面向非连接的协议,“面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。与手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。对于以前做的项目网络编程多人聊天室采用的是TCP协议,不管是公聊还是私聊,都是要把消息发送给在线用户列表中的用户,但是根据UDP协议,可以将该项目中的TCP协议改为UDP协议,因为不管是私聊还是公聊,该用户不必管对方的状态是在线还是不在线都可以发送给已经注册过该系统的用户,只要将这个消息放在一个缓冲区中就可以,只要等被发送消息的用户上线以后,再呈现在两用户的聊天框中就可以。
三、TCP和UDP的区别
1.TCP是面向连接的,UDP是无连接的。
2.TCP提供可靠地交互,无差错,不丢失,不重复,且按序到达;UDP是尽最大的努力交互,即不保证可靠交互。
3.TCP是面向字节流的,即将数据看成一串无结构的字节流,UDP是面向报文的,UDP是没有拥塞控制的,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)。
4.每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。
5.TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。
一生有所追!