正常情况下,TCP建立连接需要进行三次握手,断开连接需要四次挥手:
1. 三次握手建立连接:
建立连接请求都是由客户端主动向服务端发起
连接前准备:
服务端(在客户端之前启动):
-
创建套接字(Socket结构体 sip(地址) sport(端口信息))
-
为套接字绑定地址信息
-
开始监听(LISTEN状态)
客户端:
-
创建套接字(Socket结构体 sip(地址) sport(端口信息))
-
为套接字绑定地址信息
-
先服务端发送连接请求
建立连接过程(三次握手):
-
客户端向服务端发送SYN请求(连接请求,同步报文段)
这一动作完成之后客户端处于SYN_SEND状态,等待服务端发送SYN和ACK
-
服务端收到SYN请求后,创建新的套接字专门用来处理这一个连接(将该连接放入内核等待队列中),再向客户端发送SYN请求和ACK(确认报文)回复
这一动作完成之后服务端处于SYN_RCVD状态,等待客户端下一次回复的ACK
-
客户端收到服务端回复的ACK之后,确认对方具有收发数据能力,再次向服务端回复ACK
这一动作完成之后客户端处于ESTABLISHED(就绪状态),此时客户端已准备