TCP关闭连接
2013-09-04 15:17
267 查看
与建立连接需要三次握手一样,关闭连接也要遵循一定的操作序列。由于TCP连接时全双工的,数据可以在两个方向上同时传递,每台设备都可以单独关闭该方向上的连接。关闭连接意味着我的数据已经发送完了,但它还可以继续接收从对方到来的数据,直到对方也关闭了连接。应用程序可以连续调用几次send操作,紧接着关闭连接,然后接收数据,知道因对方关闭连接而导致接收失败。
用户关闭连接后,如果TCP缓冲区中还有数据没发送,TCP会保证把数据成功地发送给对方,关闭连接后,应用程序必须继续读取从对方到达的数据,直到对方关闭连接为止,(关闭连接之后,自己不能再调用send发送数据,但是TCP会将缓冲区中没发送完毕的数据发送给对方),这使得参与通信的两台设备能够在连接结束之前有机会将缓冲区中没来得及发送的数据全部成功地发送给对方,不至于造成数据的丢失或不完整。
1,主动关闭方发送FIN报文,seq=m,自己进入FIN_WAIT_1状态,等待接收回复报文;
2,被动关闭方,接收到FIN报文后,发送ACK ack=m+1,报文,进入CLOSE_WAIT状态,此时不再能接收数据;如果还没有数据没发送完毕,则将数据发送完毕;然后准备关闭连接。
3,主动关闭方接收到FIN报文的回应,连接状态置为FIN_WAIT_2,此时写通道已经关闭。
4,被动关闭方发送完毕数据后,发送关闭报文,FIN seq=n,并进入LASK_ACK状态,即等待此次关闭报文的响应报文。
5,主动关闭方接收到对方的FIN报文,回复确认,即ack=n+1,并进入TIME_WAIT状态,然后过2MSL自动关闭连接。
6,被动关闭方接收到ACK报文后,进入CLOSED状态,连接双方都关闭。
终止连接时,双方都发送FIN报文,并接收对应的ACK报文,连接才真正地结束。简要的说:收到对方的FIN报文,读通道关闭;发送FIN报文并接收到ACK报文,写通道才关闭。
用户关闭连接后,如果TCP缓冲区中还有数据没发送,TCP会保证把数据成功地发送给对方,关闭连接后,应用程序必须继续读取从对方到达的数据,直到对方关闭连接为止,(关闭连接之后,自己不能再调用send发送数据,但是TCP会将缓冲区中没发送完毕的数据发送给对方),这使得参与通信的两台设备能够在连接结束之前有机会将缓冲区中没来得及发送的数据全部成功地发送给对方,不至于造成数据的丢失或不完整。
1,主动关闭方发送FIN报文,seq=m,自己进入FIN_WAIT_1状态,等待接收回复报文;
2,被动关闭方,接收到FIN报文后,发送ACK ack=m+1,报文,进入CLOSE_WAIT状态,此时不再能接收数据;如果还没有数据没发送完毕,则将数据发送完毕;然后准备关闭连接。
3,主动关闭方接收到FIN报文的回应,连接状态置为FIN_WAIT_2,此时写通道已经关闭。
4,被动关闭方发送完毕数据后,发送关闭报文,FIN seq=n,并进入LASK_ACK状态,即等待此次关闭报文的响应报文。
5,主动关闭方接收到对方的FIN报文,回复确认,即ack=n+1,并进入TIME_WAIT状态,然后过2MSL自动关闭连接。
6,被动关闭方接收到ACK报文后,进入CLOSED状态,连接双方都关闭。
终止连接时,双方都发送FIN报文,并接收对应的ACK报文,连接才真正地结束。简要的说:收到对方的FIN报文,读通道关闭;发送FIN报文并接收到ACK报文,写通道才关闭。
相关文章推荐
- libjingle源码解析(3)-【PseudoTcp】建立UDP之上的TCP(1):连接和关闭
- 说下TCP/IP UDP协议 及TCP的连接与关闭
- TCP连接关闭总结
- Linux 下TCP连接关闭情况分析
- 高性能网络编程(四)--TCP连接的关闭
- TCP协议---关闭连接
- 在向服务器发送请求时发生传输级错误。 (provider: TCP 提供程序, error: 0 - 远程主机强迫关闭了一个现有的连接。) .
- 在向服务器发送请求时发生传输级错误。 (provider: TCP 提供程序, error: 0 - 远程主机强迫关闭了一个现有的连接。)
- 关闭TCP连接的学问
- 关闭tcp连接
- TCP的三次握手(建立连接)和四次挥手(关闭连接)http://www.cnblogs.com/Jessy/p/3535612.html
- 为什么 muduo 的 shutdown() 没有直接关闭 TCP 连接?
- TCP连接建立与关闭
- TCP的三次握手(建立连接)和四次挥手(关闭连接)
- TCP连接的状态与关闭方式,及其对Server与Client的影响
- socket使用TCP协议时,send、recv函数解析以及TCP连接关闭的问题
- TCP连接关闭过程笔记
- TCP的三次握手(建立连接)和四次挥手(关闭连接)
- muduo网络库学习(五)服务器监听类Acceptor及Tcp连接TcpConnection的建立与关闭
- socket使用TCP协议时,send、recv函数解析以及TCP连接关闭的问题