TCP和UDP的区别

TCP(传输控制协议,Transport Control Protocol)

UDP(用户数据报协议,User Data Protocol)

1、TCP(面向连接如打电话要先拨号建立连接),建立TCP连接需经过三次握手(当主动方发出SYN连接请求后,等待对方回答SYN,ACK。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。第一次握手:建立连接时,客户端发送SYN包(SEQ=x)到服务器,并进入SYN_SEND状态,等待服务器确认。第二次握手:服务器收到SYN包,必须确认客户的SYN(ACK=x+1),同时自己也送一个SYN包(SEQ=y),即SYN+ACK包,此时服务器进入SYN_RECV状态。第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=y+1),此包发送完毕,客户端和服务器时入Established状态,完成三次握手。),释放TCP连接需经过四次挥手(服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,你未必会马上会关闭SOCKET,你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意可以关闭连接了,它这里的ACK报文和FIN报文多数情况下都是分开发送的。);UDP是无连接的,即发送数据之前不需要建立连接

如图所示为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?
TCP和UDP的区别

  • 2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付

    Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。

  • 3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。

  • 4.每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

  • 5、tcp的目的是提供可靠的数据传输,并在相互进行通信的设备或服务之间保持一个虚拟连接,tcp在数据包接收无序,丢失或在交付期间被破坏时,负责数据的恢复,tcp面向连接,如打电话要先拨号建立连接,udp则是无连接的,即发送数据之前不需要建立连接。

  • 6、TCP对系统资源要求较多,UDP对系统资源要求较少。