1 复位报文作用
TCP首部中的RST比特是用于“复位”的。一般说来,无论何时一个报文段发往基准的连接(referenced connection)出现错误,TCP都会发出一个复位报文段(这里提到的“基准的连接”是指由目的 I P 地址和目的端口号以及源 I P 地址和源端口号指明的连接。)
2 产生时机
① 到不存在的端口的连接。对于UDP,当一个数据报到达目的端口时,该端口没在使用,它将产生一个ICMP端口不可达的信息。而TCP则使用复位。
② 异常终止一个链接。终止一个连接的正常方式是一方发送 F I N。有时这也称为有序释放,因为在所有排队数据都已发送之后才发送 F I N,正常情况下没有任何数据丢失。但也有可能发送一个复位报文段而不是 F I N来中途释放一个连接。有时称这为异常释放。
异常终止一个连接对应用程序来说有两个优点:
(1) 丢弃任何待发数据并立即发送复位报文段;
(2) R S T的接收方会区分另一端执行的是异常关闭还是正常关闭。应用程序使用的A P I必须提供产生异常关闭而不是正常关闭的手段。Socket API 通过“ linger on close ”选项(SO_LINGER)提供了这种异常关闭的能力。
③ 检测半打开链接。如果一方已经关闭或异常终止连接而另一方却还不知道,我们将这样的 T C P连接称为半打开(H a l f - O p e n)的。任何一端的主机异常都可能导致发生这种情况。只要不打算在半打开连接上传输数据,仍处于连接状态的一方就不会检测另一方已经出现异常。当一方重启后,接收到的消息都以复位作为应答。