“三次握手过程理解”


第一次握手:建立连接时,客户端发送syn包(syn=x)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

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

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

其本质思想就是“让我知道你回应”了。 服务器监听请求,客户端发起连接请求(第一次连接),请求在路上可能存在丢失的风险, 所以当请求到了服务器后如果服务器同意建立连接会给客户端一个回信(第二次连接),告诉它:我已经收到请求,可以连接。

但是回信也存在一个问题,那就是回信能不能到客户端?它需要客户端给他一个回信说我已经收到批准通知了, 如果客户端一直不回复的话意味着客户端没有收到批准通知。

因此客户端一收到批准通知就立马回复(第三次握手):OK老铁我收到你的批准通知了。至此,三次握手结束。 一个很类似的例子就是投简历:先投简历,然后对方公司会通知你通过简历筛选,你收到这个通知后一般会回复一下我知道了。 这种“让我知道你已经知道了”的想法是一种约定俗成的可靠信息交互的基本方式, 基于此想法构建的信息交互框架叫做协议。



文章作者: tttcpw
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 tttcpw !
  目录