TCP三次握手有很多文章来讲述,不过我总觉得有点抽象,这次打算通过一个“打印机”的小故事来讲解三次握手和四次挥手.
一.三次握手
TCP提供面向连接的服务,在传送数据前必须建立连接,TCP连接是通过三次握手建立的。
1.1 标准说明
三次握手过程:
- 一开始两方都处在closed状态,当服务端监听到客户端的请求,服务端的状态 会进入到listen状态
- 第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN(seq=x),此时客户端处于 SYN_SENT 状态
- 第二次握手:服务端收到客户端的SYN报文后,用自己的SYN报文进行应答,并指明自己服务端的初始化序列号(seq=y),此外为了确认客户端的SYN,会将客户端的ISN(也就是x)+1作为ack的值(ack=x+1).此时服务端处于SYN_RCVD状态
- 第三次握手:客户端收到SYN报文之后,会发送一个ACK报文,报文里面会将服务端的ISN(就是y)+1作为ack值(ack=y+1).此时客户端处于ESTABLISHED 状态.服务端收到ACK报文之后,服务端也进入ESTABLISHED 状态,此时连接建立,可以开始通信
1.2 “打印机小故事”
有一次工作,小赵希望用打印机打点材料,可是自己电脑没驱动,就想着喊小王帮忙打一