Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_UNIX_15_19_окт2004.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
477.7 Кб
Скачать

2.3 Програма ttcp

Програма ttcp може надсилати довільний обсяг даних власному або іншому комп’ютерові за протоколом UDP або ТСР та збирати статистичну інформацію про здобуті результати. Така програма може використовуватись для тестування власного додатка або для збирання інформації про продуктивність конкретного стека TCP/IP чи мережі. У програми є кілька опцій, які дозволяють керувати: обсягом передаваних даних довжиною окремих операцій записування та читання, розмірами буферів приймання та передавання сокета тощо.

На рис. 2.5 подано порядок викликання ttcp.

Порядок викликання: ttcp-t [-опції] хост [in]

ttcp-r [-опції >out]

Часто використовувані опції:

-l ## довжина у байтах буферів, до яких зчитуються дані з мережі та записування до мережі (за умовчанням 8192)

-u використовувати UDP, a не TCP

-p ## номер порту, до якого треба надсилати дані або прослуховувати (за умовчанням 5001)

-s -t: відправити дані до мережі

-r: прочитати та відкинути всі дані з мережі

-А вирівнювати початок кожного буферу за цією межею (за умовчанням 16384)

-О вважати, що буфер розпочинається з цього зміщення відносно межі (за умовчанням)

-v друкувати більш детальну статистику

-d встановити опцію сокета SO_DEBUG

-b ## встановити розмір буферу сокета

-f X формат для обчислення швидкості обміну: k, K=кіло; m, M=мега; g, G=гіга

Опції, використовувані разом з - t:

-n ## кількість буферів, передаваних до мережі (за умовчанням 2048)

-D не буферизувати запис за протоколом TCP (встановити опцію сокета TCP_NODELAY)

Опції, використовувані разом з -r:

-B для -s, виводити лише повні блоки відповідно до опції -1

-T “touch”: звертатись до кожного прочитаного байта

Рисунок 2.5 — Порядок викликання ttcp

2.4 Програма tcpdump

Програма tcpdump використовується як сніфер – мережний аналізатор, який може використовуватись для налагодження мережних додатків та пошуку несправностей у мережі. Традиційно мережний аналізатор — це дорогий спеціалізований пристрій, але сучасні комп’ютери у змозі виконувати їхні функції в межах окремого процесу. Сніфери відіграють також роль засобів дослідження в мережі — динаміки та взаємодії в мережі. Програма tcpdump працює на канальному рівні і складається з двох компонент: перша працює в ядрі, перехоплює та фільтрує пакети, а друга — діє в адресному просторі користувача й визначає інтерфейс користувача, а також форматує й фільтрує пакети, якщо це не робить ядро.

Користувацька компонента tcpdump взаємодіє з компонентою в ядрі за допомогою бібліотеки libcap (бібліотека для перехоплення пакетів). У системах BSD libcap взаємодіє з пакетним фільтром BPF-BSD packet filter, який аналізує кожний пакет, який проходить повз канальний рівень, і зіставляє його параметри з опціями, заданими користувачем для цього фільтру. Якщо пакет задовольняє критерієві фільтрування, його копія розміщується у виокремленому ядром буфері, який асоціюється з даним фільтром. Коли буфер заповнюється або закінчується заданий користувачем тайм-аут, вміст буфера передається додаткові за допомогою libcap. На рис. 2.6 зазначено, як tсpdump читає неопрацьовані пакети за допомогою BPF, а праворуч, для порівняння, подано ще один додаток, який читає дані із стека TCP/IP, як за звичай. BPF перехоплює пакети на рівні драйверу пристрою, тобто відразу після їхнього зчитування з хосту, на відміну від читання з простого сокету, де можна отримати лише IP-дейтаграми, вже опрацьовані рівнем IP та передані безпосередньо додаткові, оминаючи транспортний рівень (TCP або UDP).

Для використання tсpdump треба отримати дозвіл, за умовчанням tсpdump конфігурується з повноваженнями суперкористувача root. Можна також зробити tсpdump setuid-програмою. Можна викликати tсpdump взагалі без параметрів, тоді вона перехоплюватиме всі мережні пакети та виводитиме інформацію про них. Але краще зазначити певні потрібні атрибути фільтра:

  • протокол;

  • хост відправляння та/або призначення;

  • мережа відправляння та/або призначення;

  • Ethernet-адресу відправляння та/або призначення;

  • порти призначення та/або відправляння;

  • розмір пакета;

  • пакети, передавані на всю локальну мережу чи то на групу (у Ethernet та у IP);

  • пакет, використовуваний як шлюз по зазначеним хостом.

Можна також перевірити конкретні біти чи байти у заголовках протоколів. Наприклад, аби добирати лише TCP-сегменти, в яких встановлено біт терміновості, слід використовувати фільтр: tcp [13] & 16, тому що четвертий біт чотирнадцятого байта заголовка TCP — біт терміновості. Фільтр

icmp and not src net localnet

відфільтровує ICMP-пакети, що вони надходять із зовнішньої мережі.

Рисунок 2.6 — Перехоплювання пакетів за допомогою BPF

Інформація, надавана tcpdump, залежить від протоколу. На рис. 2.7 подано трасування сеансу за протоколом SMTP (простий протокол електронної пошти). У першому терміналі (bsd) надсилається електронний лист користувачеві з адресою в домені gte.net, тобто user@gte.net.

Рядки 1...4 описують пошук адреси SMTP-серверу, який обслуговує домен gte.net. У рядку 1 клієнт bsd запитує у серверу імен свого сервіс-провайдера (ns1.ix.netcom.com) ім’я чи імена поштового серверу gte.net. У першому полі знаходиться перший штамп пакета (12:54:32.920881). Оскільки таймер на машині bsd має дозвіл 1мкс, то зазначено шість десяткових знаків. Пакет вийшов з порту 1067 на bsd до порту 53 (domain) на машині nsl. Далі виводиться інформація щодо даних в пакеті. Перше поле (45801) — номер запиту, використовуваний функціями дозволу імен на bsd для зіставляння відповідей та запитів. Знак “+”означає, що функція дозволу задає опитування DNS-сервером інших серверів, якщо в нього не має інформації. Рядок “MX?” показує, що це запит про запис поштового обміну для мережі, ім’я якої стоїть у наступному полі (gte.net) а (25) — це довжина запиту — 25 байтів. Рядок 2 — це відповідь на запит у рядку 1. Число 45801 — номер запиту, до якого належить відповідь. Наступні три поля — кількість записів у відповіді, записів від серверу імен тощо. “371”вказує на кількість байтів у відповіді. “DF” означає, що в IP-заголовку було встановлено біт “Don’t fragment” (не фрагментувати). Перші два рядки ілюструють використання системи DNS для пошуку опрацьовувачів пошти.

  1. 12:54:32.920881 bsd.1067 > nsl.ix.netcom.com.domain:

45801+ MX? gte.net

  1. 12:54:33.254981 nsl.ix.netcom.com.domain > bsd.1067:

45801 5/4/9 (371) (DF)

  1. 12:54:33.256127 bsd.1068 > nsl.ix.netcom.com.domain:

45802+ A? mtapop2.gte.net (33)

  1. 12:54:33.534962 nsl.ix.netcom.com.domain > bsd.1068:

45802 1/4/4 (202) (DF)

  1. 12:54:33.535737 bsd.1059 > mtapop2.gte.net.smtp:

S 585494507:585494507 (0) win 16384

<mss 1460,nop,wscale 0,nop,nop,

timestamp 6112 0> (DF)

  1. 12:54:33.784963 mtapop2.gte.net.smtp > bsd.1059

S 1257159392:1257159392 (0) ack 585494509 win 49152

<mss 1460,nop,wscale 0,nop,nop,

timestamp 7853753 6112> (DF)

  1. 12:54:33.785012 bsd.1059 > mtapop2.gte.net.smtp:

. ack 1 win 17376 <nop,nop,

timestamp 6112 > 7853753 (DF)

  1. 12:54:33.235066 mtapop2.gte.net.smtp > bsd.1059

P 1:109(108) ack 1 win 49152

<nop,nop,timestamp 7853754 6112> (DF)

  1. 12:54:33.235277 bsd.1059 > mtapop2.gte.net.smtp:

P 1:19(18) ack 109 win 17376

<nop,nop,timestamp 6113 7853754> (DF)

14 строк опущено

  1. 12:54:33.675105 bsd.1059 > mtapop2.gte.net.smtp:

P 663:663(0) ack 486 win 17376

<nop,nop,timestamp 6118 7853758> (DF)

  1. 12:54:33.685080 mtapop2.gte.net.smtp > bsd.1059

F 486:486(0) ack 663 win 49152

<nop,nop,timestamp 7853758 6117> (DF)

  1. 12:54:33.685126 bsd.1059 > mtapop2.gte.net.smtp:

. ack 487 win 17376

<nop,nop,timestamp 6118 7853758> (DF)

  1. 12:54:33.934985 mtapop2.gte.net.smtp > bsd.1059

F 486:486(0) ack 664 win 49152

<nop,nop,timestamp 7853759 6118> (DF)

  1. 12:54:33.935020 bsd.1059 > mtapop2.gte.net.smtp:

. ack 487 win 17376

<nop,nop,timestamp 6118 7853759> (DF)

Рисунок 2.7 — Трасування SMTP-сеансу з вмиканням обміну

за протоколами DNS та TСP

У двох наступних рядках йде пошук IP-адреси опрацьовувача пошти мережі gte.net. “A” у рядку 3 зазначає, що це запит IP-адреси хосту mtapop2.gte.net. — одного з відомих поштових серверів у США. Рядки 5…28 вміщують деталі обміну за протоколом SMTP. Процедура трибічного квітування розпочинається в рядку 5 і завершується в рядку 7. Перше поле після часового штампу та імен хостів — це поле flags. “S” у рядку 5 зазначає, що у сегменті встановлено прапорця SYN. Інші можливі значення прапорця: “F” (FIN),”U” (URG), “P” (PUSH), “R” (RST) та “.” (немає прапорців). Далі йдуть порядкові номери першого та останнього байтів, а за ними в дужках — кількість байтів даних. Перше число — порядковий номер першого байта в сегменті (SYN або інформаційному), а друге — порядковий номер першого байту плюс кількість байтів у сегменті. За умовчанням подані реальні порядкові номери для SYN-сегментів та зміщення — для наступних сегментів.

У всіх сегментах, окрім першого SYN, є поле АСК, яке зазначає, на який наступний порядковий номер очікує відправляч. Це поле (у вигляді ack nnn) за умовчанням вміщує зміщення відносно порядкового номера, зазначеного в сегменті SYN.

За полем АСК йде поле Window — кількість байтів даних, які готовий прийняти віддалений хост. Зазвичай воно відбиває обсяг вільної пам’яті в буферах з’єднання.

У кутових дужках зазначено опції ТСР. У рядках 8...23 подано діалог поміж програмою senmail на клієнтському боці bsd та SMTP-сервером на машині mtapop2. Рядки 24...28 відбивають процедуру розривання з’єднання. Спочатку bsd надсилає FIN у рядку 24, потім надходить FIN від mtapop2 (рядок 25). У рядку 27 mtapop2 вдруге надсилає FIN, тому що не отримав від bsd підтвердження АСК на свій перший FIN.

Один з недоліків tсpdump — неповна підтримка виведення даних. Часто під час налаштовування мережних додатків треба знати, які дані надсилаються. Цю інформацію можна отримати, задавши опції -s та -x. Опція -s зазначає, скільки даних з пакета треба виводити, а –x — вказує на шістнадцяткову форму виведення даних. За умовчанням tcpdump виводить лише перші 68 байтів, що є достатнім для заголовків більшості протоколів.

Програма tсpdump — це незамінний інструмент для аналізування того, що відбувається у мережі. Якщо знати, що насправді надсилається чи то приймається, значно легше вдається віднайти й виправити помилки у додатках.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]