【问题标题】:CLOSE_WAIT connection terminate without killing softwareCLOSE_WAIT 连接终止而不杀死软件
【发布时间】:2017-11-19 07:47:26
【问题描述】:

由于情况(与代理 tcp 连接有关),我经常以 CLOSE_WAIT 连接结束。通常是我的浏览器在调试时引起的。

隧道由 PHP 脚本启动,该脚本可以检测到这些 CLOSE_WAIT 状态,因此它可以显示错误并且不尝试重用该端口(因为“程序 X”使其忙碌)。杀死相关程序相当容易,但我不希望这样做,因为重新设置需要很长时间。

有这个perl script 发送虚假的“ACK”包,因此程序会在连接终止的情况下关闭连接。有什么方法可以在 PHP 中实现这一点:

my $packet = Net::RawIP->new({
   ip => { frag_off => 0, tos => 0, saddr => $dst_ip, daddr => $src_ip},
   tcp => { dest => $src_port, source => $dst_port, seq => 10, ack => 1}
});
$packet->send;

就像我说的:我有所有详细信息,这只是我需要的实际数据包生成和发送。我想避免必须从 PHP 外部触发 perl 脚本。

【问题讨论】:

    标签: php networking tcp


    【解决方案1】:

    可以将 create_socket() 与 SOCK_RAW 一起使用。

    但是,标头(IP/TCP)的设置必须是原始数据。这很难。

    PRNL(PHP Raw Network Library) 可以更轻松。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      • 2012-09-19
      • 2017-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多