Когда я успешно нашел устройство на своем компьютере и позвонил pcap_open (...) Это дает мне пакеты только для моего компьютера? Как насчет других вычислений в сети? Показывает ли мне пакеты, которые еще не отправлены?pcap function: pcap_open() question
ответ
Краткие ответы:
Зависит, зависит, и нет.
длинные ответы:
Вы должны понять несколько вещей, прежде чем вопросы можно ответить. Во-первых, вам нужно знать, что каждый пакет, отправленный в сети Ethernet, будет содержать заголовок Ethernet, который указывает адрес источника и получателя. Эти адреса относятся к картам Ethernet отправителя и предполагаемого приемника в сети Ethernet. Обратите внимание, что они отличаются от IP-адресов. (См. Протокол разрешения адресов (ARP) для определения адресов Ethernet).
Когда компьютер получает пакет, адрес получателя которого соответствует адресу собственной Ethernet-карты, он обрабатывает его. В противном случае он отбрасывает его.
Если у вас есть куча компьютеров, подключенных к хабу, например, тогда, когда один компьютер отправляет пакет на другой компьютер, ВСЕ компьютеры будут видеть его, поскольку концентраторы просто транслируют каждый пакет, который они получают на всех подключенных ссылках , Только один компьютер фактически обработает пакет, и это компьютер, указанный в заголовке Ethernet.
Теперь, на pcap. Вы можете захватывать пакеты в режиме promiscuous или non-promiscuous (не уверен, есть ли лучший термин для этого). Если ваш интерфейс находится в беспорядочном режиме, pcap отобразит ВСЕ пакеты, полученные на вашем интерфейсе, даже если пункт назначения пакет не соответствует назначению этого интерфейса. В непрофессиональном режиме он будет показывать только пакеты, чье поле назначения совпадает с адресом вашего интерфейса.
Теперь, чтобы ответить на ваши вопросы.
Вы всегда увидите пакеты, отправленные с вашего компьютера, и всегда увидите пакеты, предназначенные специально для вашего компьютера. Вы МОЖЕТЕ видеть пакеты, отправленные с других компьютеров в зависимости от вашей сети. Вы МОЖЕТЕ видеть пакеты, отправленные на другие компьютеры в вашей сети, в зависимости от вашей сети. Например, если вы захватываете пакеты на интерфейсе WiFi, вы можете видеть пакеты, предназначенные и отправленные с других компьютеров (потому что они транслируются по воздуху, и любой из них может видеть их). То же самое для концентратора, который передает все пакеты, которые он получает. Если ваш адаптер находится в беспорядочном режиме, pcap покажет их, поэтому вы можете увидеть трафик, отправленный на другие компьютеры. Если, с другой стороны, ваш компьютер подключен к коммутатору или маршрутизатору, вы увидите только свой трафик, потому что коммутатор/маршрутизатор не отправит вам трафик другого компьютера (ознакомьтесь с хабами/коммутаторами/маршрутизаторами, чтобы узнать, почему). Наконец, он НЕ покажет вам пакеты, которые еще не были отправлены, поскольку они должны быть отправлены через интерфейс, прежде чем pcap сможет их увидеть.
Спасибо за ответ! – TheFuzz
, так как мой компьютер подключен к коммутатору, я не увижу никакого другого сетевого трафика, но как насчет удаленного pcap_open (...)? – TheFuzz
Что вы подразумеваете под удаленным pcap_open()? Какой тип сетевого трафика вы пытаетесь захватить? – Neal