获取104“Connection reset by peer”错误的一般规则是什么?

10
有关网站何时发送TCP重置信号、触发“连接被对方重置”错误的一般规则吗?
例如:
- 开启过多连接 - 使用带宽过高 - 连接时间过长 - ...?
我相信并没有法规来规定这一点,不同的网站/开发者可能有不同的喜好。但如果有一些普遍遵循的规则集(来自网站或相关教材,或是你在学校/工作中学到的),那么我会很感兴趣。
当然,我提出这个问题的原因是想找到绕过封锁的方法...
我正在下载一些政府数据,这些数据是免费提供的,但缺乏API之类的东西,所以获取它的两种正式方式要么是在某个Web-GIS上点击几千次,要么是沿着卡夫卡式的道路解释各种级别的文员数据库、csv文件、zip文件的概念,以及您不能(如果他们做了您试图向他们解释的事情,也不需要)只需将“巨大”的硬盘驱动器带到他们的机构,所以我正在努力找到对所有人都节省资源的最佳途径...
1个回答

11
一个网站不会“发送”“Connection reset by peer”的错误。如果客户端收到一个TCP reset消息表示活动连接,这个错误是由操作系统内核生成的。有许多原因可能会导致发送TCP reset消息。例如出于DOS保护目的限制同一IP地址在特定时间内的连接数、限制数据爬取或者强制使用公平策略等情况下,某些负载可能会通过设计发送TCP reset。对于这种显式限制,没有普遍适用的规则甚至法律。
TCP reset也可能是由于应用程序过载、应用程序崩溃、系统资源耗尽等原因引起的。
如果客户端向服务器已经认为关闭的连接写入,那么TCP reset也会发生。例如,当HTTP keep alive功能被使用时,服务器可能会在HTTP响应之后的任何时候因为闲置而关闭连接。如果客户端在服务器关闭连接的同时在同一连接上发送新请求,服务器将拒绝新请求(因为连接在服务器端已关闭),并发送TCP RST消息,导致客户端出现“connection reset by peer”的错误。客户端需要通过创建新连接并重新发送请求来正确处理此情况(前提是请求未更改状态,即可幂等)。

似乎我弄错了背景。我会编辑我的问题。我猜你已经涵盖了部分原因,但如果有任何硬性指导方针,我会很感兴趣。 - JC_CL
谢谢,这非常有帮助!但是我很想有一些学习更多关于这个主题的资源,如果有的话,更多的答案可能会很有趣。 - JC_CL
1
@JC_CL:一个简单的搜索可以显示高票问题之一,即什么导致TCP/IP重置(RST)标志被发送? - Steffen Ullrich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接