当 netcat 工作时如何调试 curl?

当 netcat 工作时如何调试 curl?

以下 cURL 命令挂起:

$ curl -v http://1.1.1.1/*
   Trying 1.1.1.1:80...
* Connected to 1.1.1.1 (1.1.1.1) port 80
> GET / HTTP/1.1
> Host: 1.1.1.1
> User-Agent: curl/8.3.0
> Accept: */*
> 
^C

但是,如果我将该请求复制到文件中并使用 Netcat 发送,它可以起作用吗?

$ cat req
GET / HTTP/1.1
Host: 1.1.1.1
User-Agent: curl/8.3.0
Accept: */*


$ cat req | nc -N -v 1.1.1.1 80
Connection to 1.1.1.1 80 port [tcp/http] succeeded!
HTTP/1.1 301 Moved Permanently
Server: cloudflare
Date: Tue, 10 Oct 2023 18:44:58 GMT
... snipped rest of response ...

问题:我可以使用哪些技术来进一步调试此问题?我已经在 cURL 和 Netcat 上设置了详细标志。


strace 显示的唯一有趣的事情是 cURL 调用了某个调用/var/run/nscd/socket,而 netcat 却没有。但我不明白这会如何影响到直接 IP 地址的 TCP 连接。(感谢 Steffan Ullrich 告诉我我需要跟踪 %net 和 %file)

相关内容