TCP三次握手流程图
- 发起端称为客户端
- 接收端称为服务端
- 客户端向服务端发起一起请求(1次)
- 服务端进行一次回复 (2次)
- 客户端再向服务端进行一起确认 (3次)
在socket编程中的流程
- 最开始双端的状态机都是close
- 服务端要创建socket进行监听,随之状态机变为LISTEN
- 客户端要发起链接,会调用connect()对服务端进行链接,SYN位置为1,状态变为SYN_SENT (seq=100,SYN)
- 服务端为监听状态,并且收到了客户端的SYN请求,通过accept()函数接收,状态变为SYN_RCVD
- 服务端向客户端回复ack消息,seq=y ,ack=100+1,SYN=1,ACK=1
- 客户端connect()收到消息,链接建立成功, 状态变为ESTABLISHED
- 再向服务端发送一个确认消息,seq=100 + 1,ack = y + 1, ACK = 1
- 服务端收到消息后通过accept(),状态变为ESTABLISHED
- 之后就可以进行消息的相互发送了。