我制作了一个简单的Linux套接字网络服务器,并观看了它的http流量。通常,当它将HTTP 200或404发送回请求的GET或POST客户端(Web浏览器或扫描程序)时,客户端会将服务器刚刚发送的消息回送给它。为什么他们的行为如此,他们对我的服务器有何期待?
与37.236.190.20:39889建立的新连接0
收到37.236.190.20:39889
的新消息0GET / HTTP / 1.1 连接:Keep-Alive Keep-Alive:300 User-Agent:Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHT ML,像Gecko)Chrome / 63.0.3239.132 Safari / 537.36 主持人:18.231.188.211
成功将文件login.html发送到0 37.236.190.20:39889 nsent = 550
收到37.236.190.20:39889
的新消息0HTTP / 1.1 200好的 连接:关闭 内容长度:465 内容类型:text / html
[我发送的html页面]
成功将文件login.html发送到0 37.236.190.20:39889 nsent = 550
与37.236.190.20:39889的连接0被强行关闭。原因:回声
答案 0 :(得分:1)
由于我没有在任何地方找到任何此类行为的记录,在gdb的帮助下我发现我使用的是无符号变量来保存错误返回-1的函数的返回值。
--net=host
因此,第二行中的评估永远不会成立,并且消息的长度将为0xffffffffffffffff。但由于缓冲区保存了我以前发送的消息,并且没有收到任何新消息来覆盖它,似乎客户端正在回显我的服务器。 谢谢大家的帮助。抱歉这个错误。