您的位置:首页 > 理论基础 > 计算机网络

戏说 TCP 三次握手 四次挥手

u010232305 2016-03-24 19:14 48 查看

三次握手

1)客户端发送SYN(sync,同步)请求+发送序号X,给服务器端;

2)服务器端收到后将收到的X加1(方便下次核对),回一个ACK(acknowledge,应答)+一个SYN标志请求+发送序号Y;

3)客户端收到后将收到的Y加1,回一个ACK;

翻译成人类的语言:

1)老K想要跟老F隔江聊天,老K先喊:“老F咱们来聊天不来(SYN)?”

2)声音传播有时间,这段时间老F可能又跟隔壁王大妈广场舞去了。并且江上有风,可能这会儿喊话老K听不见了。所以老F听到后,回喊:“可以啊(ACK),你现在有空吗/听得见我说话吗(SYN)?”

3)老K听到后,回喊:“听得到!~(ACK)”,然后聊起了天来。

PS:因为江上风大,为了确保他们听到了对方的每一句话,以防他们的聊天时文不对题,所以老K在第一次喊的时候在句尾会加句:”这是俺说的第一句话(X)”,老F听到后会掰着手指头心中默念:“再听到声音,应该是老K的第二句话了(X+1)”,同样老F说话的时候也是这样(Y,Y+1)。

四次挥手

1)客户端想终止通信,发送FIN标志+发送序号X,然后不再发送数据;

2)服务器端收到后,将X+1,并回复ACK+发送序号Y;

3)服务器端也终止通信,发送FIN+发送序号Z;

4)客户端收到后,将Z+1,回复ACK;

为什么是四次而不是三次?原因在于2)步,服务器端收到FIN指令后,并不能像三次握手时那样,当时就将FIN指令协同ACK一起发回去,因为服务器端“可能还有话没讲完”,所以得等讲完了才发FIN回去。
标签: