当前位置: 首页 > 知识库问答 >
问题:

服务器在建立TCP连接后立即通过FIN、ACK和RST关闭TCP连接

宰子琪
2023-03-14

在Mac OS X 10.8机器上,我有一台Tomcat 7.0.40服务器和一台客户端,都在本地运行。通过三方握手建立TCP连接,然后立即从服务器发送FIN、ACK和RST。客户端收到“来自服务器的文件结束”或“连接重置”。

TCP序列:

客户端SYN
服务器SYN,确认
客户端确认

服务器[TCP窗口更新]确认字符
服务器FIN,确认字符
客户端确认字符
服务器[TCP Dup确认字符]确认字符
客户端GET/myurl/...
服务器RST

详细信息
-客户端和服务器都在本地运行
-首次获取请求失败。以下请求成功
-on上没有防火墙
-maxfiles已经增加,但徒劳

是什么原因导致服务器关闭套接字?感谢提示和想法。

编辑:Tomcat的日志有以下堆栈跟踪:

    FINE: Error parsing HTTP request header
    java.net.SocketException: Invalid argument
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:150)
    at java.net.SocketInputStream.read(SocketInputStream.java:121)
    at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:516)
    at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:501)
    at org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:98)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:928)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:724)

    Aug 14, 2013 5:15:17 PM org.apache.coyote.http11.AbstractHttp11Processor process
    FINE: Error parsing HTTP request header
    java.io.EOFException: Unexpected EOF read on the socket
    at org.apache.coyote.http11.Http11Processor.setRequestLineReadTimeout(Http11Processor.java:174)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:926)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:724)

共有1个答案

林元明
2023-03-14

您必须违反配置的访问规则(如IP地址黑名单),或者向它发送它不理解的内容。

 类似资料:
  • 我正在尝试在Java创建一个多客户机/服务器应用程序。我有些问题因为我的线好像纠缠在一起了...这就是我要做的。 > 我有一个服务器类,它通过使用以下代码来接受客户端: while(true){Socket Socket=ServerSocket.Accept();} 我的服务器应该记住所连接的客户端,因此我使用该套接字创建一个名为ClientThread的新线程,并将该线程放在服务器上的列表中

  • 问题内容: 我通过添加laravel安装了redis , 然后为了测试,我添加了以下代码: 在app / config / database.php中,我有: 它引发以下错误: 我用于该项目。使用。 问题答案: 首先,通过打开powershell并键入(确保可能需要在功能中启用此命令或以某种方式安装此命令),以确保Redis实际上在该端口上进行侦听。如果正在侦听,请检查防火墙设置。如果不监听,请确

  • 提前致谢

  • 如果我不关闭套接字: 客户端没有输出。服务器从不发送消息,或者客户端从不接收消息。 有人知道发生这种情况的可能原因吗?客户端使用一个线程接收消息,一个线程发送消息。客户端套接字在主客户端线程中创建,因此接收者和发送者线程使用当前套接字进行通信。 提前谢了。

  • STOMP 一种简单的消息传递协议,最初创建用于脚本语言,其框架受 HTTP 启发。 STOMP 得到广泛支持,心脏长连接一小时左右失去连接 失去到未定义的连接-建立连接后失去连接非常适合在 WebSocket 和 web 上使用。 SockJS SockJS是WebSocket技术的一种模拟,在表面上,它尽可能使用原生webSocket API,但是再底层非常智能,优先使用原生WebSocket,如果在不支持WebSocket的浏览器中,会自动降为轮询的方式。

  • 我的问题是为什么接收端没有得到发送的数据包? 注意:我的目标是在建立的连接上发送带有错误校验和的TCP数据包,并由不scapy的TCP服务器接收,提前谢谢!!