当前位置:首页 > 公众号精选 > CPP开发者
[导读]什么是RST我们都知道TCP正常情况下断开连接是用四次挥手,那是正常时候的优雅做法。但异常情况下,收发双方都不一定正常,连挥手这件事本身都可能做不到,所以就需要一个机制去强行关闭连接。RST就是用于这种情况,一般用来异常地关闭一个连接。它是一个TCP包头中的标志位。正常情况下,不...

什么是RST

我们都知道TCP正常情况下断开连接是用四次挥手,那是正常时候的优雅做法。

但异常情况下,收发双方都不一定正常,连挥手这件事本身都可能做不到,所以就需要一个机制去强行关闭连接。

RST 就是用于这种情况,一般用来异常地关闭一个连接。它是一个TCP包头中的标志位。

正常情况下,不管是发出,还是收到置了这个标志位的数据包,相应的内存、端口等连接资源都会被释放。从效果上来看就是TCP连接被关闭了。

而接收到 RST的一方,一般会看到一个 connection reset 或  connection refused 的报错。

TCP报头RST位

怎么知道收到RST了?

我们知道内核跟应用层是分开的两层,网络通信功能在内核,我们的客户端或服务端属于应用层。应用层只能通过 send/recv 与内核交互,才能感知到内核是不是收到了RST

当本端收到远端发来的RST后,内核已经认为此链接已经关闭。

此时如果本端应用层尝试去执行 读数据操作,比如recv,应用层就会收到 Connection reset by peer 的报错,意思是远端已经关闭连接。

ResetByPeer
如果本端应用层尝试去执行写数据操作,比如send,那么应用层就会收到 Broken pipe 的报错,意思是发送通道已经坏了。

BrokenPipe
这两个是开发过程中很经常遇到的报错,感觉大家可以把这篇文章放进收藏夹吃灰了,等遇到这个问题了,再打开来擦擦灰,说不定对你会有帮助。

出现RST的场景有哪些

RST一般出现于异常情况,归类为 对端的端口不可用 和 socket提前关闭。

端口不可用

端口不可用分为两种情况。要么是这个端口从来就没有"可用"过,比如根本就没监听(listen)过;要么就是曾经"可用",但现在"不可用"了,比如服务突然崩了。

端口未监听
TCP连接未监听的端口
服务端listen 方法会创建一个sock放入到全局的哈希表中。

此时客户端发起一个connect请求到服务端。服务端在收到数据包之后,第一时间会根据IP和端口从哈希表里去获取sock

全局hash表
如果服务端执行过listen,就能从全局哈希表里拿到sock

但如果服务端没有执行过listen,那哈希表里也就不会有对应的sock,结果当然是拿不到。此时,正常情况下服务端会发RST给客户端。

端口未监听就一定会发RST吗?
不一定。上面提到,发RST的前提是正常情况下,我们看下源码。

// net/ipv4/tcp_ipv4.c  
// 代码经过删减
int tcp_v4_rcv(struct sk_buff *skb)
{
    // 根据ip、端口等信息 获取sock。
    sk = __inet_lookup_skb(
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

卫星通信系统将接入多个卫星网络,速度高达100Mb/秒 美国亚利桑那州凤凰城2022年10月19日 /美通社/ -- 霍尼韦尔(纳斯达克代码:HON)正在开发其新一代的JetWave卫星通信系统,将实现机上高速宽带互联...

关键字: 霍尼韦尔 卫星通信系统 网络 飞机

腾盛博药生物科技有限公司公布了两项在美国健康志愿者中开展的评估长效BRII-732和BRII-778的1期研究最新数据,这两种在研候选药物旨在用于治疗人类免疫缺陷病毒(HIV)感染。两项研究结果均表明,BRII-732和...

关键字: FIR ST RS

李宁官方微博19日发布声明称,近日,网络上出现对于“逐梦行”秀款部分产品的讨论,李宁公司对此高度关注。此次相关产品的设计及造型给大家带来了困惑和疑虑,我们表示诚挚的歉意。本次“逐梦行”秀款产品的设计以“飞行”为主题,从飞...

关键字: 防护 网络

标普500指数今年迄今为止下跌22.7%,但高盛(Goldman Sachs)策略师认为估值依然太高。摩根士丹利旗下的Morgan Stanley Wealth Management称,面对高通胀环境下的利率大幅上升,股...

关键字: DMA MANAGEMENT 高通 ST

奈飞(Netflix)今年早些时候从数据中看到了一个令人担忧的信号:用户访问该流媒体服务的频率下降了。该公司对其用户在四周时间里观看其内容的天数进行了跟踪,并担心访问频率的下降会增加用户取消订阅的可能性。在发现这一问题之...

关键字: 信号 流媒体 TI ST

由国际投资移民咨询公司Henley & Partners发布的《亿万富翁报告》指出,在20世纪90年代末期,3000万美元被认为是“超级富豪”的定义,但自那时以来,资产价格大幅上涨,使1亿美元成为新的基准。尽管美...

关键字: RS

据CNMO了解,有韩媒报道称,韩国将在下个月公布下一代网络战略,为6G移动通信的商业化做准备。据悉,战略中除了6G网络的智能化、融合和空间扩展的技术战略外,还将提出公私合营的合作方式。

关键字: 6G 网络 战略

前不久,一位意大利女航天员在网络上走红,因为她在海外社交平台上发布了一组太空摄影作品,并配上了中国著名书法家王羲之所著《兰亭集序》中一句描绘宇宙景观的古文。“仰观宇宙之大,俯察品类之盛,所以游目骋怀,足以极视...

关键字: 卫星 航天器 网络 MIDDOT

郑州2022年10月17日 /美通社/ -- 近日,《福布斯》发布了"2022年全球最佳雇主榜单"(The World's Best Employers 2022),中国平安再度上榜并排名全...

关键字: 福布斯 ST TI BSP

这两年来Wi-Fi 6无线网络得到了大家的认可,现在的手机及路由器几乎都支持了这一标准,速度超过家里的千兆带宽没问题,在下一代的无线就是Wi-Fi 7了,高通日前首次演示了Wi-Fi 7的实际速度,达到了5Gbps。

关键字: 5G 网络 高通Wi-Fi 7

CPP开发者

237 篇文章

关注

发布文章

编辑精选

技术子站

关闭