一、三次握手连接建立:
① 请求端发送一个SYN报文段说明客户打算连接的服务器端口号以及初始序号,SYN请求发送后,客户进入SYN_SENT状态。
② 服务器启动后先进入LISTEN状态,当它收到客户发来的SYN请求后进入SYN_RCV状态,返回包含服务器的初始序号的SYN报文段应答,同时将确定序号设置为客户的初始序号加1,对客户的SYN报文段进行确认。
③ 客户接收到服务器的确认报文后进入连接建立状态,客户将确认序号设置为服务器的ISN加1,对服务器的SYN报文段进行确认,当服务器收到确认报文段后也进入连接建立状态。
二、TCP四次交互关闭连接
① 客户的应用进程主动发起关闭连接请求,客户发送一个FIN报文段,用来关闭从客户到服务器的数据传送,此时客户进入FIN_WAIT_1状态。
② 当服务器收到FIN后发回一个ACK,进入CLOSE_WAIT状态,ACK为收到的序号加1.客户收到确认后进入FIN_WAIT2状态,表明本方连接关闭。(此时仍可以收到服务器发来的数据)
③ 服务器程序关闭本方连接,其TCP端发送一个FIN报文段,进入LAST_AC状态,当客户收到报文段后进入TIME_WAIT状态。
④ 客户在收到服务器发来的FIN请求后,发回一个确认,并将确认序号设置为收到的序号加1。服务器收到该确认后连接关闭。