首先: 无论多少次握手都不能满足传输的绝对可靠,TCP的核心思想:保证数据可靠传输 其次:保证传输效率。
一、为什么要握手(为什么不是2次握手)? ?
为了保证传输的可靠。
第一次握手CLIENT告诉SERVER“我将要开始传输数据了”。
第二次握手SERVER告诉CLIENT“我已经知道你将要传输数据了,我已经做好准备”。
第三次握手CLIENT告诉SERVER“我已经知道你已经知道'我知道你已经做好准备'”,SERVER端收到这个信号,开始传输数据。
但是此时CLIENT并不知道SERVER已经知道“CLIENT 已经知道SERVER已经知道”(有点绕,可以忽略这一句)。
?二、为什么是3次而不是4次?
为了提高传输的效率
总之不管多少次握手,总会有一方不知道对方已经知道。因此为了传输效率,只要3次握手就认为已经可以开始传输数据,三次握手之后,
CLIENT和SERVER就进入ESTABLISHED状态,开始数据传输。
?
为什么不是两次:
请问根据以上对话判断,
-
B是否能收到A的信息? (答案是肯定的) -
A是否能收到B的信息? (你猜?)
为什么不是四次:
-
A->B: 洞幺洞幺,我是洞拐,收到请回复,Over。 -
B->A: 洞拐洞拐,洞幺收到,收到请回复,Over。 -
A->B: 洞幺洞幺,洞拐收到,收到请回复,Over。 -
B->A: 洞拐你是鱼吗。。。 。
|