TCP的3次握手与4次握手

为什么连接需要三次握手,断开需要四次握手。


首先我们知道,TCP协议是去全双工的。可以在发送的同时进行接收数据。
假定是主机A和主机B进行通信,断开时是A主动断开的。


1)三次握手:第一次握手表明A可以发数据给B。但是无法保证B发给A的数据可以被收到。所以B也需要发送SYN给A,A对它进行回应,才保证了B也可以发数据给A。
个人理解可以把三步拆分为四步理解:
a)主机A给B发送SYN
b)主机B回复ack --- 这时表明A可以发数据给B
c)主机B发送SYN给A
d)主机A回复ack --- 这时表明B也可以发送数据给A
只不过协议中,把中间两步放在一步进行了。

2)四次握手,就像下面这样理解:
a)主机A给B发送FIN,表示对B说“我要断开了”
b)主机B回复ack进行确认,表示对A说“嗯,我知道了,你可以断开了”
c)然后B发送FIN给A,表示对A说“A,我也要断开了”
d)A回复ack进行确认,表示对B说:“嗯,知道了,你断开吧”
前两步对A进行断开,后两步对B进行断开。
那么为什么不能把中间两步进行合并呢,因为无法保证被断开的一方的数据已经传送完毕了。

原文地址:https://www.cnblogs.com/zizhuocainiao/p/8084680.html