![使用 tcpdump 检测 HTTP 会话](https://linux22.com/image/1360142/%E4%BD%BF%E7%94%A8%20tcpdump%20%E6%A3%80%E6%B5%8B%20HTTP%20%E4%BC%9A%E8%AF%9D.png)
我有一个跟踪文件,我想找到跟踪中成功访问的所有通过 HTTP 联系的 Web 服务器。
我在用着:
tcpdump -r file.trace - tcp port 80
也许我必须搜索向我发送响应数据包的服务器 IP 列表(我的意思是那些与我创建 HTTP 会话的服务器)。仅服务器,而不是其他 TCP 连接。我的意思是,我需要响应 HTTP 请求并发送 HTTP 响应的服务器 IP。
我怎能这样做?
答案1
tcpdump -r file.trace - tcp dst port 80
,正如您所发现的,不是一个有效的 tcpdump 命令。如果您删除多余的-
,那么您会得到
tcpdump -r file.trace tcp dst port 80
这是一个有效的 tcpdump 命令,它将仅显示流量到TCP 端口 80。它不会显示流量从TCP 端口 80,例如,如果file.trace
有往返于端口 80 的 HTTP 流量,它将显示 HTTP 请求流量,但不是HTTP 响应流量。
如果你想查看和从端口 80,使用
tcpdump -r file.trace tcp port 80
但是,如果有除 HTTP 流量之外的 TCP 流量往返于端口 80,则也会显示该流量。
此外,HTTP 流量不是不会显示往返于端口 80 的流量,例如 HTTP-over-SSL/TLS(“https”)流量,或到端口 8080 等端口的流量。例如,要查看往返于端口 80(用于 HTTP)和端口 443(用于 HTTPS)的流量,请执行以下操作
tcpdump -r file.trace tcp port 80 or 443
那么什么是“不起作用”?
例如,它没有显示 HTTPS 流量吗?如果是,则需要添加端口 443。
它没有显示到其他端口的流量吗?如果是这样,您还需要添加这些端口。Tcpdump 无法识别 HTTP 流量(Wireshark 只能通过端口号识别它)。
它是否只显示请求,而不显示响应?如果您想查看响应,请使用tcp port
而不是tcp dst port
。如果您仅有的想要查看请求,请使用tcp dst port
。