一、访问不存在的端口
当客户端程序访问一个不存在的端口时,目标主机将给它发送一个复位报文段。
收到复位报文段的一端应该关闭连接或者重新连接,而不能回应这个复位报文段。
当客户端程序向服务器某个端口发起连接,而该端口仍被处于TIME_WAIT
状态的连接所占用时,客户端也将收到复位报文段。
二、异常终止连接
对正常终止的连接:数据交换完成后,一方给另一方发送结束报文段,四次挥手断开连接。
TCP
提供了异常终止一个连接的方法,即给对方发送一个复位报文段。一旦发送了复位报文段,发送端所有排队等待发送的数据将被丢弃。
应用程序可以使用socket
选项SO_LINGER
来发送复位报文段,以终止一个连接。
三、处理半打开连接
半打开状态:
服务器(或客户端)关闭或者异常终止了连接,而对方没有接收到结束报文段(比如发生了网络故障),此时,客户端(或服务器)还维持着原来的连接,而服务器即使重启,也已经没有该连接的任何信息了。
半打开连接:
处于半打开状态的连接我们称之为半打开连接。
如果客户端(或服务器)往处于半打开状态的连接写入数据,则对方将回应一个复位报文段。