LINUX.ORG.RU

tcpdump -[n[n]]


0

0

Уже неоднократно встречаю вот такой вот вариант запуска tcpdump с ключом nn (или nnn):

# tcpdump -nnn -i eth0 [прочие опции]
В man tcpdump(1) про ключ -n написано следующее:
       -n     Don't  convert  addresses  (i.e.,  host addresses, port numbers,
              etc.) to names.
И ни про какие -nn и -nnn речи не идет.

Собственно вопрос: это ошибка тех кто это пишет, или это такая засекреченная фича tcpdump, причем непонятно что делающая — ведь одного -n достаточно чтобы tcpdump ничего не резолвил.

★★★★★

Ответ на: комментарий от Insomnium

Ну так если использовать -n — названия протоколов не отображаются, вместо них номера портов.

$ sudo tcpdump -n -i eth1 port 21
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
05:16:05.545053 IP 192.168.0.3.35687 > 192.168.0.1.21: S 3330356618:3330356618(0) win 5840 <mss 1460,sackOK,timestamp 39982978 0,nop,wscale 6>
05:16:05.547714 IP 192.168.0.1.21 > 192.168.0.3.35687: R 0:0(0) ack 3330356619 win 0
$ sudo tcpdump -i eth1 port 21
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
05:16:51.669483 IP 192.168.0.3.35700 > 192.168.0.1.ftp: S 4051239980:4051239980(0) win 5840 <mss 1460,sackOK,timestamp 40029102 0,nop,wscale 6>
05:16:51.672155 IP 192.168.0.1.ftp > 192.168.0.3.35700: R 0:0(0) ack 4051239981 win 0

edigaryev ★★★★★
() автор топика
Ответ на: комментарий от Insomnium

Заглянул в исходники: там при указании ключа n инкрементируется переменная nnflag. Т.е.:

-n    nflag==1
-nn   nflag==2
А потом, когда вопрос заходит о том, резолвить IP-адрес или нет (показывать номер порта или название протокола, за ним закрепленного), происходит проверка:

Равен ли nflag нулю или нет? Если равен — резолвим IP, пишем названия протоколов. Если нет то нет.

edigaryev ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.