TCP/IP协议为什么需要的是三次握手,而不是两次or四次?
1. 三次握手,四次挥手
1.1 TCP/IP协议为什么需要的是3次握手?
因为 TCP 是全双工协议,需要确定可以同时双向传输数据,客户端和服务器双方都需要确认自己和对方的接收、发送能力是正常的。
其实只证明了符合半双工?
第一次握手: 客户端发送网络包,服务端收到。
此时,服务端能得出结论:客户端的发送能力、自己的接收能力是正常的。
第二次握手: 服务端发送网络包,客户端收到。
此时,客户端能得出结论:服务端和自己的发送能力、接收能力都是正常的。
此时,对于服务端,自己的发送能力和客户端的接收能力还未确认;于是需要第三次握手。
第三次握手: 客户端发送网络包,服务端接收到。此时,服务端确定自己的发送能力和客户端的接收能力都正常。
这下双方的收发都确认正常力,三次是最少的次数!
1.2 TCP/IP协议四次挥手的原因
客户端主动关闭连接
第一次挥手: 客户端向服务端发送 FIN 时,仅仅表示客户端不再发送数据了但是还能接收数据,因为服务端可能还有未处理完待发送的包。
第二次挥手: 服务器收到客户端的 FIN 报文时,先回一个 ACK 应答报文,而服务端可能还有数据需要处理和发送。
第三次挥手: 等服务端不再发送数据时,才发送 FIN 报文给客户端来表示同意现在关闭连接。
第四次挥手: 客户端接收到后,回服务端一个 ACK 应答报文。
从上面过程可知,服务端通常需要等待完成数据的发送和处理,所以服务端的 ACK 和 FIN 一般都会分开发送,从而比三次握手导致多了一次。
2. 全双工协议补充
2.1 单工传输模式
-
通信是单向的;
-
例如计算机和打印机之间的通信是单工模式,因为只有计算机向打印机传输数据,而没有相反方向的数据传输。
2.2 半双工传输模式
-
通信是双向的,但某一时刻只允许信号在一个信道上单向传输。
-
因此,半双工通信实际上是一种可切换方向的单工通信。
-
传统的对讲机使用的就是半双工通信方式。由于对讲机传送及接收使用相同的频率,不允许同时进行。因此一方讲完后,需设法告知另一方讲话结束(例如讲完后加上’OVER’),另一方才知道可以开始讲话。
2.3 全双工传输模式
-
通信是双向的,并且有两个信道,因此允许同时进行双向传输;要求收发双方都有独立的接收和发送能力;
-
计算机之间的通信是全双工方式,一般的电话、手机也是全双工的系统,因为在讲话时可以听到对方的声音。