为什么 nc / netcat 不能轻松嗅探 http 端口流量?

为什么 nc / netcat 不能轻松嗅探 http 端口流量?

我并不是在寻求诸如“尝试 wireshark”之类的建议。我只是想要了解 netcat 是什么,不是什么。

当我尝试监听 (-l) 端口 80 时,系统显示“地址已被使用”。netcat 不能像浏览器那样监听正在使用的端口吗?或者这真的是对浏览器工作原理的错误理解?也许 netcat 绕过了操作系统中的某些共享机制?

我认为我的问题的答案就隐藏在使用代理的这个解释中,但我无法理解它。 http://pankaj-k.net/weblog/2010/05/using_netcat_to_view_tcpip_tra.html

答案1

我试图了解 netcat 是什么,什么不是什么。

首先,它不是一个嗅探器。

如果您的机器上已经有程序在监听 80 端口,比如一个 Web 服务器,那么其他程序就都不能监听 80 端口了(至少不能使用与已经监听的程序相同的本地 IP 地址),因为您的机器接收到的到 80 端口的数据包只能发送给一个程序。

数据包嗅探器使用的机制与“正常”网络应用程序(例如浏览器和 netcat)使用的机制不同;它们使用的机制取决于您所运行的操作系统(libpcap/WinPcap 存在以向应用程序隐藏该细节),并且这些机制允许嗅探器获取作为原始链路层或原始 IP 数据包接收的所有数据包的副本。

netcat 不能像浏览器那样监听正在使用的端口吗?或者这真的是对浏览器工作原理的错误理解?

是的,这是对浏览器工作原理的错误理解。运行在您计算机上的浏览器不会侦听您计算机上的 80 端口,而是会将流量发送到 Web 服务器计算机上的 80 端口。

答案2

按照那家伙说的

浏览器不会监听正在使用的端口(根据定义,我认为任何客户端或服务器都无法做到这一点,否则操作系统就不知道将数据包发送到哪个进程,特别是哪个特定的连接)。浏览器发现一个未使用的端口。

http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

不低于 1024,实际上也不低于 49152!所以端口号非常高。临时端口范围为 49152–65535

如果您了解 netstat 的基本用法,它会使您对这些事情更加熟悉。

从 cmd 提示符尝试 netstat -aon 或 netstat -n 并查看输出。

以下是 netstat -n 的示例

你会看到两列 IP,一列是本地的,一列是远程的(所以它不会显示连接是传入的还是传出的)。左侧显示与你的计算机相关的 IP。查看右侧的行,其中右侧有:80 在这种情况下只有一行,但通常有很多行,现在查看左侧浏览器选择的端口,例如 50714

在此处输入图片描述

如果您执行 netstat -on 或 -aon,-o 将为您提供一个进程 id 列,您可以在任务管理器中看到哪个进程是哪个。

相关内容