草庐IT

FIN-WAIT

全部标签

tcp - tcp 程序在收到 RST 或 FIN 后被动关闭 tcp 连接之前是否会检查丢失的数据包

如果A和B之间有tcp连接,发送一些数据包,然后发送TCPRST(或TCPFIN/ACK)以关闭连接,让我说?PKT1,PKT2,PKT3,TCP_RST或PKT1,PKT2,PKT3,TCP_FIN/ACK但是数据包到达是乱序的PKT1,TCP_RST(orTCP_FIN/ACK),PKT2,PKT3那B会怎么react?根据TCP_RST和TCP_FIN/ACK的序号,B知道有一些数据包丢失(PKT2和PKT3),B在关闭连接之前会等待PKT2和PKT3,或者B在收到TCP_RST(或TCP_FIN/ACK)时立即关闭连接?谢谢 最佳答案

ubuntu - Websocket 连接卡在 FIN_WAIT1 FIN_WAIT2 状态

我正在尝试拥有一个服务器,多个客户端需要通过该服务器打开一个websocket并发送数据。但是看起来很多客户端无法建立连接..在服务器机器上,当我执行lsof或netstat-an时,我看到很多连接显示在状态FIN_WAIT1和FIN_WAIT2除了处于ESTABLISHED状态的连接。截至目前,打开文件的ulimit为1024。卡在这两种状态的连接会被计入打开文件列表吗?如果是这样的话,1024的限制很快就会用完。/proc/sys/net/ipv4/tcp_orphan_retries是0,好像相当于8https://serverfault.com/questions/274212

node.js - netcat 不发送最终 FIN 来关闭连接

我正在玩自制的nodejstcp服务器,并在Linux下用netcat测试它的行为。建立连接后,服务器会在线下发送“测试”字符串并关闭套接字。我希望netcat通过发送适当的tcp数据包关闭其一侧的连接,但它没有!这是我所做的:nc-vlocalhost9000之后整个对话是这样的:netcat-->server(SYN)netcatserver(ACK)netcatserver(ACK)netcatserver(ACK)在这一点上,我希望netcat发送FIN,但它从来没有。连接在一侧卡在FIN-WAIT-2,在另一侧卡在CLOSE-WAIT。如果我用telnet尝试同样的事情:te

sockets - 收到[FIN, ACK]后继续使用同一个连接

我看到有些服务器会在通过发送[FIN,ACK]完成单个请求后停止连接来自维基,Aconnectioncanbe"half-open",inwhichcaseonesidehasterminateditsend,buttheotherhasnot.Thesidethathasterminatedcannolongersendanydataintotheconnection,buttheothersidecan.Theterminatingsideshouldcontinuereadingthedatauntiltheothersideterminatesaswell.如果我想通过避免每个

sockets - FIN 数据包乱序并覆盖?

在浏览开源代码库时,我想到了一个有趣的场景。假设在成功建立TCP连接后,TCP客户端必须发送一个序列号=101的数据包。相反,它发送一个序列号为201的FIN。现在TCP服务器认为FIN乱序并将其排队并等待一个数据包到达。我的问题是,根据RFC,如果服务器收到序列号=101且长度=150的数据包,TCP端点的行为应该是什么。它是否会覆盖之前发送的FIN?或者服务器修剪数据包直到FIN序列号?或者它依赖于TCP实现? 最佳答案 根据RFC793中的一些段落"3.如果连接处于同步状态(ESTABLISHED,FIN-WAIT-1,FIN

c# - 服务器套接字在 Close_Wait 中挂起

场景如下:我正在从我的C#服务器应用程序向客户端发送大量数据。突然数据流停止,客户端没有数据更新,端口被阻塞。发生这种情况时,服务器端的症状是Close_Wait在该端口(netstat)操作会在日志中阻塞(错误代码:135)。无法从客户端建立新连接。Telnet无法访问该端口目前,每当出现问题时,我们都会重新启动服务器。显然这不是解决方案。有人可以为WindowsServer2008中卡在Close_Wait中的服务器套接字提供解决方案吗?对此场景的任何建议将不胜感激。提前致谢。 最佳答案 CLOSE_WAIT表示对端已关闭连接,

java - 使用 java 客户端/服务器重现 tcp CLOSE_WAIT 状态

有没有一种简单的方法可以用java程序重现tcpCLOSE_WAIT状态?我有一个遗留的Java应用程序有这个问题,我希望能够重现它以便我可以测试我的修复。谢谢 最佳答案 当另一端关闭连接而这一端没有关闭时,连接处于CLOSE_WAIT状态。很容易重现://Client.java(willsleepinCLOSE_WAIT)importjava.io.*;importjava.net.*;publicclassClient{publicstaticvoidmain(String[]args)throwsException{Socke

tcp - 是什么导致打开这么多 TIME_WAIT 连接?

因此,我在一台服务器上有应用程序A,它每秒向另一台服务器上的应用程序B发送710条HTTPPOST消息,该服务器正在监听单个端口。连接不是保持事件的;他们关门了。几分钟后,应用程序A报告它无法打开到应用程序B的新连接。我在两台机器上连续运行netstat,发现每台机器上都打开了大量TIME_WAIT连接。几乎所有显示的连接都在TIME_WAIT中。从在线阅读来看,这似乎是在每一方关闭连接后30秒(在我们的机器上为30秒,根据/proc/sys/net/ipv4/tcp_fin_timeout值)的状态。我在每台机器上运行一个脚本,该脚本一直在运行:netstat-na|grep5774

java - 为什么 android HttpURLConnection 不发回 FIN?

我想从我的Android应用程序将数据发布到服务器并获取响应,处理它然后发回并获取另一个请求。由于它是持续通信,直到不再响应进程,我更喜欢使用HttpURLConnection和http.keepAlive=true.我尝试重用套接字是成功的,但是我面临的问题是:我正在尝试从客户端(Android应用程序)启动关闭,因为如果终止从服务器开始,然后服务器转到TIME_WAIT状态。而且我不希望我的服务器进入那种状态,所以我更喜欢我的客户启动终止。但不幸的是我找不到合适的方法来使用HttpURLConnection经过数小时的搜索,我放弃了上述尝试,并且开始从服务器关闭基于keepaliv

networking - 带有FIN标志的TCP数据包也能有数据吗?

我正在开发一个数据包捕获程序。TCP数据包是否有可能设置了FIN标志但也有数据? 最佳答案 严格来说,可以将数据放入TCPFIN数据包中...引用自RFC793(强调我的):TheSYNandFINaretheonlycontrolsrequiringthisprotection,andthesecontrolsareusedonlyatconnectionopeningandclosing.Forsequencenumberpurposes,theSYNisconsideredtooccurbeforethefirstactual