TCP的RST有什么用

这篇“TCP的RST有什么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“TCP的RST有什么用”文章吧。

建网站原本是网站策划师、网络程序员、网页设计师等,应用各种网络程序开发技术和网页设计技术配合操作的协同工作。创新互联专业提供网站设计制作、网站设计,网页设计,网站制作(企业站、响应式网站、电商门户网站)等服务,从网站深度策划、搜索引擎友好度优化到用户体验的提升,我们力求做到极致!

TCP 首部中的 RST 比特是用于 "复位" 的。一般来说,无论何时一个报文段发往基准的连接(referenced connection)出现错误,TCP 都会发出一个复位报文段("基准的连接" 指由目的 IP 地址和目的端口号以及源 IP 地址和源端口号指明的连接)。

1. 到不存在的端口的连接请求

产生复位的一种常见情况是当连接请求达到时,目的端口没有进程正在监听。对于 UDP,当一个数据报到达目的端口时,该端口没有在使用,它将产生一个 ICMP 端口不可达的信息。而 TCP 则使用复位。

如下示例,客户端向目的端口 1935 发送连接请求的起始包 "SYN",但是端口为 1935 的服务器并没有启动,此时 TCP 回复客户端 RST 报文。

C: SYN -> S(1935)

TCP的RST有什么用

S(1935): RST -> C

2. 异常终止一个连接

终止一个连接的正常方式是一方发送 FIN,有时这也称为有序释放(orderly release),因为在所有排队数据都已发送之后才发送 FIN,正常情况下没有任何数据丢失。但也有可能发送一个复位报文段而不是 FIN 来中途释放一个连接,有时称这为异常释放(abortive relase)。

异常终止一个连接对应用程序来说有两个优点:

  1. 丢弃任何待发送数据并立即发送复位报文段;

  2. RST 的接收方会区分另一端执行的是异常关闭还是正常关闭。应用程序使用的 API 必须提供产生异常关闭而不是正常关闭的手段。

socket API 通过 "linger on close" 选项(即 SO_LINGER)提供了这种异常关闭的能力。

3. 检测半打开连接

如果一方已经关闭或异常终止连接而另一方却还不知道,我们将这样的 TCP 连接称为半打开(Half-Open)。任何一端的主机异常都可能导致这种情况发生。只要不打算在半打开连接上传输数据,仍处于连接状态的一方就不会检测另一方已经出现异常。

半打开连接的另一种常见原因是当客户主机突然掉电而不是正常的结束客户应用程序后再关机。

以上就是关于“TCP的RST有什么用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注创新互联行业资讯频道。


新闻标题:TCP的RST有什么用
网页链接:http://azwzsj.com/article/iphshh.html