TCP三次握手:
![TCP三次握手 四次断开 - arvin_ti - arvin_ti的博客 TCP三次握手 四次断开 - arvin_ti - arvin_ti的博客](http://img0.ph.126.net/xWshF5j-edFwEzYufwUZdQ==/6631455893305040499.png)
第一次:客户端首先向服务器发送一个(SYN)同步序列号包含(SEQ=随机的 一个初始序列值)
第二次:服务器收到客户端发来的请求以后,服务器返回发送一个以客户端发来的同步序列号加一的一个值作为ACK确认号值,然后在随机生成一个服务器端同步序列号,一同发给客户端(服务器端返回SEQ=随机生成 + ACK=客户端随机同步号+1)
第三次:客户端收到服务器回应后。客户端会发送一个以服务器端为随机号加1的号最为回应服务器的确认号。
TCP双向四次断开:
![TCP三次握手 四次断开 - arvin_ti - arvin_ti的博客 TCP三次握手 四次断开 - arvin_ti - arvin_ti的博客](http://img2.ph.126.net/2U7pWyZoc0nC-zX4OtrzBg==/6631597730305019759.jpg)
因为TCP/IP的连接是全双工的,所以每个方向都要单独进行关闭。
每当TCP单方向上的数据传输过,都会再送一个FIN过去,告诉对方我这方向上的数据将要关闭了,请你做好准备哦。当对方接到FIN后就会通知应用层TCP连接已经终止了这一方向上的数据的传输。发送FIN通常是应用层进行关闭的结果。
第一次:客户端向服务器发送数据后,将FIN置1,告诉它我将要关闭这一方向上的数据连接。
第二次:服务器接受到FIN后,关闭该方向上的数据的连接。将ACK置1,告诉客户端我已经接收到你的信息并以处理。
第三次:向客户端申请反方向上的数据连接的断开。将FIN置1。
第四次:客户端接到服务器发来的申请,将ACK置1,双方同时关闭连接。