Чи можливо якось виявити втрату пакету без використання протоколу ICMP (ping; fping тощо), щоб уникнути генерації додаткового мережевого трафіку за допомогою утилітів за замовчуванням, таких як netstat тощо?
Чи можливо якось виявити втрату пакету без використання протоколу ICMP (ping; fping тощо), щоб уникнути генерації додаткового мережевого трафіку за допомогою утилітів за замовчуванням, таких як netstat тощо?
Відповіді:
Не впевнений, чи це справедливо для FreeBSD, але в Linux, ви можете перевірити наявність ретрансляцій TCP, потенційно у відсотках від загальних пакетів, що відображаються в заданий часовий період.
У Linux це виглядає приблизно так:
> cat /proc/net/tcp
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
0: 00000000:0014 00000000:0000 09 00000000:00000000 00:00000000 00000000 0 0 30111 1 0000000000000000 100 0 0 10 0
Дивіться також це питання щодо інших ідей та відповіді на основі netstat: https://serverfault.com/questions/318909/how-passively-monitor-for-tcp-packet-loss-linux .
Вам потрібна відповідь від JoelK :
netstat -s | grep retransmitted
netstat -s
не існує цієї ОС, а також "дружньо" відкрито нікому процессне дерево Linux в/proc/*
netstat -s
працює рішення для FreeBSD, але відсутня директорія - /proc
це 100% вірно (якщо не ввімкнули режим сумісності Linux, який не є за замовчуванням). +1 від мене
Відповідь iwaseatenbyagrue - це хороша відповідь (я її схвалив), але вона страждає від простого дефекту, тобто повертає глобальну статистику втрат пакетів, тоді як ping (і mtr , комбінований інструмент traceroute / ping ) є локальними для спілкування: в інших Слова, вони детально описують втрати пакетів на конкретній комунікації, а не в середньому на всі комунікації, які ви розважали в минулому.
Wireshark , поширений інструмент для аналізу пакетів, доступний для всіх ОС, може допомогти вам встановити втрати пакетів на основі кожного з'єднання. В основі цього лежить той факт, що пакети TCP (але не пакети UDP) несуть послідовний номер послідовності (хоча номер першого пакета визначається в оборотному порядку для обходу певного класу атак), що дає можливість запитати для повторного надсилання кожного разу, коли пакет відкидається до досягнення призначеного пункту призначення.
Щоб зробити цю роботу у Wireshark, Statistics -> Статистика розмови та виберіть розмову (= віддалений хост), для якої потрібно встановити швидкість втрати пакетів, на вкладці TCP. Тоді ви отримаєте пропускну здатність (пакети в секунду від віддаленого до локального та віверса) негайно. Якщо замість цього ви хочете швидкість втрати пакетів, вибираючи розмову, додайте наступний фільтр і tcp.analysis.lost_segment , і подивіться, скільки пакетів випадає, перевіряючи, на панелі стану, скільки пакетів відповідає фільтру.
Потрібно мати мільйони джерел в Інтернеті про те, як це зробити. Я знайшов це відео на Youtube простим і зрозумілим, але дійсно гугла втрата пакету проводів призведе до багатьох сторінок з гарними порадами.
tcpdump -i INTERFACE -w $HOSTNAME.INTERFACE.pcap
netstat
"в середньому за всіма комунікаціями, які ви розважали в минулому"?
Ви можете використовувати програму MTR з -u
опцією, що використовує дейтаграми замість ICMP ECHO або опцію, -T
що використовує пакети TCP SYN.
Якщо ви не хочете генерувати зайвого трафіку та просто хочете отримати накопичену статистику про втрачені пакети за минулі, то ви можете отримати статистику з ОС FreeBSD із стовпців, позначених як err
запуск:
netstat -idb -I <interface_name>
У вас вийде щось подібне:
# netstat -idb -I em0
Name Mtu Network Address Ipkts Ierrs Ibytes Opkts Oerrs Obytes Coll Drop
em0 1500 <Link#1> 00:11:22:33:44:55 110031161 0 2708056139 176396459 0 366893484 0 0
em0 1500 192.168.24.0 mxmail 107582221 - 1545164761 177078111 - 2870208791 - -
netstat
рішення відповісти саме на те, що запитував ОП - отримайте статистика втрат пакетів без генерації зайвого трафіку та без будь-яких сторонніх програм, особливо з використанням netstat
.