Эффективное программирование TCP-IP

       

Активные сокеты


Во-первых, можно получить сведения об активных сокетах. Хотя netstat дает информацию о разных типах сокетов, интерес представляют только сокеты из адресных доменов inet (AF_INET) и UNIX (AF_LOCAL или AF_UNIX). Можно потребовать вывести все типы сокетов или выбрать один тип, указав адресное семейство с помощью опции -f.

По умолчанию серверы, сокеты которых привязаны к адресу INADDR_ANY, не выводятся, но этот режим можно отключить с помощью опции -а. Например, если нужны TCP/UDP-сокеты, то можно вызвать netstat так:

bsd: $ netstat -f inet

Active Internet connections

Proto Recv-Q Send-Q Local Address      Foreign Address (state)

tcp    0         0  localhost.domain   *.*             LISTEN

tcp    0         0  bsd.domain         *.*             LISTEN

udp    0         0  localhost.domain    *.*

udp    0         0  bsd.domain          *.*

bsd: $

Здесь показан только сервер доменных имен (named), работающий на машине bsd. Если  же нужно вывести все серверы, то программа запускается таким образом:

bsd: $ netstat -af inet

Active Internet connections

Proto Recv-Q Send-Q Local Address Foreign Address  (state)

tcp     0    0      *.6000            *.*       LISTEN

tcp     0    0      *.smtp            *.*       LISTEN

tcp     0    0      *.printer         *.*       LISTEN

tcp     0    0      *.rlnum           *.*       LISTEN

tcp     0    0      *.tcpmux          *.*       LISTEN

tcp     0    0      *.chargen         *.*       LISTEN

tcp     0    0      *.discard         *.*       LISTEN

tcp     0    0      *.echo            *.*       LISTEN

tcp     0    0      *.time            *.*       LISTEN

tcp     0    0      *.daytime         *.*       LISTEN

tcp     0    0      *.finger          *.*       LISTEN

tcp     0    0      *.login           *.*       LISTEN

tcp     0    0      *.cmd             *.*       LISTEN

tcp     0    0      *.telnet          *.*       LISTEN

tcp     0    0      *.ftp             *.*       LISTEN

tcp     0    0      *.1022            *.*       LISTEN


tcpяяяя 0яяя 0яяяяя *.2049яяяяяяяяяяя *.*яяяяяя LISTEN

tcpяяяя 0яяя 0яяяяя *.1023яяяяяяяяяяя *.*яяяяяя LISTEN

tcpяяяя 0яяя 0яяяяя localhost.domainя *.*яяяяяя LISTEN

tcpяяяя 0яяя 0яяяяя bsd.domainяяяяяяя *.*яяяяяя LISTEN

udpяяяя 0яяя 0яяяяя *.udpechoяяяяяяяя *.*

udpяяяя 0яяя 0яяяяя *.chargenяяяяяяяя *.*

udpяяяя 0яяя 0яяяяя *.discardяяяяяяяя *.*

udpяяяя 0яяя 0яяяяя *.echoяяяяяяяяяяя *.*

udpяяяя 0яяя 0яяяяя *.timeяяяяяяяяяяя *.*

udpяяяя 0яяя 0яяяяя *.ntalkяяяяяяяяяя *.*

udpяяяя 0яяя 0яяяяя *.biffяяяяяяяяяяя *.*

udpяяяя 0яяя 0яяяяя *.1011яяяяяяяяяяя *.*

udpяяяя 0яяя 0яяяяя *.nfsdяяяяяяяяяяя *.*

udpяяяя 0яяя 0яяяяя *.1023яяяяяяяяяяя *.*

udpяяяя 0яяя 0яяяяя *. sunrpcяяяяяяяя *.*

udpяяяя 0яяя 0яяяяя *.1024яяяяяяяяяяя *.*

udpяяяя 0яяя 0яяяяя localhost. Domain *.*

udpяяяя 0яяя 0яяяяя bsd. domainяяяяяя *.*

udpяяяя 0яяя 0яяяяя *.syslogяяяяяяяяя *.*

bsd:яяя $

…б«Ё Ўл ўл § ЇгбвЁ«Ё Їа®Ја ¬¬г lsof (б®ўҐв 37), в® ®Ў­ аг¦Ё«Ё, зв® Ў®«м-йЁ­бвў® нвЁе <бҐаўҐа®ў> - ў ¤Ґ©б⢨⥫쭮бвЁ inetd (б®ўҐв 17), ®¦Ё¤ ойЁ© ЏаЁе®¤  ᮥ¤Ё­Ґ­Ё© Ё«Ё ¤ в Ја ¬¬ ў Ї®авл бв ­¤ ав­ле бҐаўЁб®ў. ‘«®ў® ў Є®«®­ЄҐ state ¤«п TCP-ᮥ¤Ё­Ґ­Ё© ®§­ з Ґв, зв® бҐаўҐа ¦¤Ґв § Їа®­б  ™ ᮥ¤Ё­Ґ­ЁҐ ®в Є«ЁҐ­в .

…б«Ё ®Ўа вЁвмбп Є бҐаўҐаг не®-Є®­ва®«п б Ї®¬®ймо telnet:

bbd: $ telnet bsd echo

в® Ї®пўЁвбп ᮥ¤Ё­Ґ­ЁҐ ў б®бв®п­ЁЁ ESTABLISHED:

Proto Recv-Q Send-Q Local Address Foreign Address (state)

tcpяяяяяяяяяя 0яяяяя 0яяя bsd.echoяяяяя bsd.1035яяяя ESTABLISHED

tcpяяяяяяяяяя 0яяяяя 0яяя bsd.1035яяяяя bsd.echoяяяя ESTABLISHED

tTcpяяяяяяя 0яяяяя 0яяя *.echoяяяяяяя *.*яяяяяяяяя LISTEN

‡¤Ґбм ®Їг饭л бва®ЄЁ, ­Ґ ®в­®бпйЁҐбп Є бҐаўҐаг не®-Є®­ва®«п. ЋЎа вЁвҐ ў­Ё¬ ­ЁҐ, зв®, Ї®бЄ®«мЄг ўл ᮥ¤Ё­Ё«Ёбм б «®Є «м­®© ¬ иЁ­®©, ў ўл¤ зҐ netstat ᮥ¤Ё­Ґ­ЁҐ ЇаЁбгвбвўгҐв ¤ў ¦¤л: ®¤Ё­ а § ¤«п Є«ЁҐ­в ,   ¤агЈ®© - ¤«п бҐаўҐа . ‡ ¬Ґвм⥠⠪¦Ґ, зв® inetd Їа®¤®«¦ Ґв Їа®б«гиЁў вм Ї®ав ў ®¦Ё¤ ­ЁЁ ¤ «м­Ґ©иЁе ᮥ¤Ё­Ґ­Ё©.

ЏаЁ¬Ґз ­ЁҐ: Џ®б«Ґ¤­ҐҐ § ¬Ґз ­ЁҐ вॡгҐв ҐйҐ ­ҐбЄ®«мЄЁе Ї®пб­Ґ­Ё©. •®вп telnet-Є«ЁҐ­в Ї®¤б®Ґ¤Ё­Ё«бп Є Ї®авг 7 (Ї®ав не®) Ё д ЄвЁзҐбЄЁ ЁбЇ®«м§гҐв ҐЈ® ў Є зҐб⢥ Ї®ав  ­ §­ зҐ­Ёп, е®б⠯த®«¦ Ґв Їа®б«гиЁў вм нв®в Ї®ав. ќв® ­®а¬ «м­®, в Є Є Є б в®зЄЁ §аҐ­Ёп TCP ᮥ¤Ё­Ґ­ЁҐ - нв® зҐвўҐаЄ , б®бв®пй п Ё§ «®Є «м­ле IP- ¤аҐб  Ё Ї®ав  Ё г¤ «Ґ­­ле IP- ¤аҐб  Ё Ї®ав  (б®ўҐв 23). Љ Є ўЁ¤ЁвҐ, inetd Їа®б«гиЁў Ґв Ї®ав ­  г­ЁўҐаб «м­®¬ <ЇбҐў¤® ¤аҐбҐ> INADDR_ANY, зв® Ї®Є § ­® §ўҐ§¤®зЄ®© ў Є®«®­ЄҐ LocalAddress, в®Ј¤  Є Є IP- ¤аҐб ¤«п гбв ­®ў«Ґ­­®Ј® ᮥ¤Ё­Ґ­Ёп а ўҐ­ bsd. …б«Ё Ўл, ўл б®§¤ «Ё ®¤­® ¤®Ї®«­ЁвҐ«м­®Ґ ᮥ¤Ё­Ґ­ЁҐ б Ї®¬®ймо telnet, в® Ї®«гзЁ«Ё Ўл ҐйҐ ¤ўҐ бва®ЄЁ,  ­ «®ЈЁз­лҐЇҐаўл¬ ¤ўг¬, в®«мЄ® Ї®ав Є«ЁҐ­в  Ўл« Ўл ®в«ЁзҐ­ ®в 1035.

‡ ўҐаиЁвҐ а Ў®вг Є«ЁҐ­в  Ё б­®ў  § ЇгбвЁвҐ netstat. ‚®в зв® ўл Ї®«гзЁвҐ:

Proto Recv-Q Send-Q Local Address Foreign Address (state)

tcpяяя 0яяяяя 0яяя bsd.1035яяяяя bsd.echoяяяяя TIME_WAIT

Љ Є ўЁ¤­®, Є«ЁҐ­вбЄ п бв®а®­  ᮥ¤Ё­Ґ­Ёп ­ е®¤Ёвбп ў б®бв®п­ЁЁ TIME-WAIT (б®ўҐв 22). ‚ Є®«®­ЄҐ state ¬®Јгв Ї®пў«пвмбп Ё ¤агЈЁҐ б®бв®п­Ёп, Ї®¤а®Ў­ҐҐ 0 ­Ёе а ббЄ §лў Ґвбп ў RFC 793 [Postel 1981b].


Содержание раздела