TCP通信原理
- TCP(Transmission Control Protocol,传输控制协议)是一种传输层协议,它主要负责点对点的数据传输
- TCP 主要特点是面向连接的,也就是说,在数据传输之前,它需要先建立一个连接。连接建立之后,两端计算机就可以相互发送数据。
- 在建立连接时,TCP 会按照三次握手的方式建立连接,这是为了确保两端计算机都准备好接收数据。连接建立之后,两端计算机就可以相互发送数据。
- TCP 的可靠性是通过滑动窗口协议来实现的。在传输数据之前,发送端会设定一个窗口大小,表示最多可以发送多少数据。接收端在收到数据之后,会发送一个确认信息告诉发送端已经收到了多少数据。发送端收到确认信息后,就可以继续发送数据了。如果发送端在规定时间内没有收到确认信息,就会重新发送数据。这样就可以保证数据的可靠传输。
TCP 三次握手建立连接
- 客户端发送 SYN 包给服务端,表示客户端想要建立连接。
- 服务端收到 SYN 包之后,会回复 SYN+ACK 包,表示服务端已经收到客户端的请求,并准备好接受数据。
- 客户端收到 SYN+ACK 包之后,会回复 ACK 包,表示客户端已经收到服务端的回应,并准备好发送数据。
TCP 四次挥手断开连接
四次挥手即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发。由于TCP连接是全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭。
挥手请求可以是Client端,也可以是Server端发起的
UDP通信原理
- UDP(User Datagram Protocol,用户数据报协议)是一种面向无连接的网络协议
- UDP 在发送数据方面更快,但是也带来了更多的不确定性,因为数据包可能会丢失、重复或乱序。
- UDP 使用数据报形式发送数据,每个数据报的大小最大可达 64 KB。由于没有连接的建立和维护,UDP 可以将小型数据包发送到任何地方。
- UDP 使用 IP 地址来标识源主机和目的主机,并使用端口号来标识应用程序。这使得一台主机可以同时运行多个应用程序,并且各个应用程序之间可以通过端口号区分。
总结一下大概的区别
1. 连接
- TCP 是面向连接的传输层协议,传输数据前先要建立连接。
- UDP 是不需要连接,即刻传输数据。
- TCP 是一对一的两点服务,即一条连接只有两个端点。
- UDP 支持一对一、一对多、多对多的交互通信
3. 可靠性
- TCP 是可靠交付数据的,数据可以无差错、不丢失、不重复、按需到达。
- UDP 是尽最大努力交付,不保证可靠交付数据。
4. 拥塞控制、流量控制
- TCP 有拥塞控制和流量控制机制,保证数据传输的安全性。
- UDP 则没有,即使网络非常拥堵了,也不会影响 UDP 的发送速率。
5、面向方向
- TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;
- UDP是面向报文的
6、逻辑信道
- TCP的逻辑通信信道是全双工的可靠信道
- UDP则是不可靠信道
参考:一文彻底搞懂 TCP三次握手、四次挥手过程及原理 - 知乎 (zhihu.com)
一文搞懂TCP与UDP的区别 - 知乎 (zhihu.com)
TCP和Udp的区别是什么? - 知乎 (zhihu.com)