Захватывает больше кадров WLAN, чем отправляет / получает кадры Ethernet
Я пытаюсь определить, правильно ли это делает компьютер, фиксирующий кадры WLAN в сети 802.11n.
Я делаю это, позволяя одному компьютеру (1) генерировать трафик, загружая некоторые файлы, и захватывая этот генерируемый трафик. Другой компьютер (2) захватывает трафик WLAN, генерируемый компьютером (1). По-видимому, я могу сохранять трафик только в формате Ethernet на компьютере (1) (хотя он отправляется через мой беспроводной интерфейс). Компьютер (2) получает трафик через интерфейс беспроводного монитора с типом связи IEEE802_11_RADIO.
Это работает в некоторой степени. Через некоторое время компьютер (1) видит следующее (произвольные числа):
tshark -r /tmp/testcap -Y "eth.dst==[mac NIC] or eth.src==[mac NIC]" | wc -l
дает 3757 пакетов.
Компьютер (2) видит следующее:
tshark -r /tmp/ctrlcap -Y "wlan.sa==[mac NIC] or wlan.da==[mac NIC] or wlan.ra==[mac NIC] or wlan.ta==[mac NIC]" | wc -l
дает 7234 пакета.
Можно было бы предположить, что количество пакетов будет одинаковым, но, очевидно, количество пакетов сильно отличается.
Я искал объяснение этому и наткнулся на то, что называется агрегацией MSDU ( http://en.wikipedia.org/wiki/Frame_aggregation). Однако, если я правильно понимаю, это будет означать, что количество пакетов 802.11 на компьютере (2) будет меньше, чем количество пакетов Ethernet на компьютере (1), что совсем не так.
Может ли кто-нибудь объяснить это поведение? Можно ли проверить, правильно ли я собираю правильное количество пакетов другим способом?
1 ответ
Я делаю это, позволяя одному компьютеру (1) генерировать трафик, загружая некоторые файлы, и захватывая этот генерируемый трафик. Другой компьютер (2) захватывает трафик WLAN, генерируемый компьютером (1). По-видимому, я могу сохранять трафик только в формате Ethernet на компьютере (1) (хотя он отправляется через мой беспроводной интерфейс).
Чтобы процитировать страницу вики Wireshark о захвате трафика WLAN :
Когда не в режиме мониторинга, адаптер может захватывать только пакеты данных; вам может потребоваться перевести адаптер в режим мониторинга для захвата пакетов управления и контроля. Кроме того, когда адаптер не находится в режиме мониторинга, адаптер может предоставлять пакеты с поддельными заголовками Ethernet, а не с заголовками 802.11, и может не предоставлять дополнительную информацию радиослоя, такую как скорости передачи данных и уровень сигнала. Вам может потребоваться выполнить операции, зависящие от операционной системы и типа адаптера, чтобы включить режим мониторинга; информация о том, как это сделать, приведена ниже.
Ключевая часть цитаты здесь такова: "Кроме того, когда адаптер не находится в режиме мониторинга, адаптер может предоставлять пакеты с поддельными заголовками Ethernet, а не с заголовками 802.11".
На компьютере (1) вы, вероятно, не снимаете в режиме монитора. Это может быть или не быть возможным для захвата в режиме монитора на этом компьютере; WinPcap и, следовательно, Wireshark, не поддерживают режим мониторинга, поэтому, если вы работаете в Windows, вы увидите заголовки 802.11, только если у вас есть адаптер AirPcap (отдельно от адаптера 802.11, по которому передаются пакеты).
Компьютер (2) получает трафик через интерфейс беспроводного монитора с типом связи IEEE802_11_RADIO.
На этом адаптере вы, вероятно, снимаете в режиме монитора.
Ключевая часть цитируемой вики Wireshark здесь: "Когда адаптер не находится в режиме мониторинга, адаптер может захватывать только пакеты данных; вам может потребоваться перевести адаптер в режим мониторинга для захвата пакетов управления и контроля". Это означает, что при захвате на компьютере (2) могут отображаться пакеты, не относящиеся к данным, но при захвате на компьютере (1), вероятно, нет, поэтому при захвате на компьютере (2) может быть больше пакетов.
Попробуйте, например:
tshark -r /tmp/ctrlcap -Y "wlan.fc.type == 2 and (wlan.sa==[mac NIC] or wlan.da==[mac NIC] or wlan.ra==[mac NIC] or wlan.ta==[mac NIC])" | wc -l
чтобы исключить пакеты, не относящиеся к данным, например кадры маяка , при подсчете пакетов на компьютере (2).