IOSiOS学习笔记程序员

《初识TCP》What!二次握手?四次握手?

2018-05-07  本文已影响73人  九剑仙

三次握手协议,为什么不是二次握手,也不是四次握手?


这是网上广为流传的一道面试题,我也正是带着这个疑问,走向了TCP...

历时两个月,我终于在今天找到了我想要的答案:来自知乎的一条匿名评论。

三次握手:
A:喂,你能听得到吗?
B:我能听得到,你能听到我吗?
A:我也能听得到。
...

二次握手:
A:喂,你能听得到吗?
B:我能听得到,你能听到我吗?
B:你能听到我吗?
B:你能听到我吗?
...

四次握手:
A:喂,你能听得到吗?
B:我能听得到,你能听到我吗?
A:我也能听得到,你能听得到吗?
B:我不想和傻逼说话。
...

逻辑理通之后再来看专业解释,就会有豁然开朗的感觉:

第一次握手

建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;

第二次握手

服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手

客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

上一篇 下一篇

猜你喜欢

热点阅读