Книга: UNIX: разработка сетевых приложений

Определение топологии сети

Определение топологии сети

На рис. 1.7 мы показываем топологию сети, состоящей из улов, используемых в качестве примеров в этой книге, но вам нужно знать топологию вашей собственной сети, чтобы запускать в ней примеры и выполнять упражнения. Хотя в настоящее время не существует стандартов Unix в отношении сетевой конфигурации и администрирования, большинство Unix-систем предоставляют две основные команды, которые можно использовать для определения подробностей строения сети: netstat и ifconfig. Мы приводим примеры в различных системах, представленных на рис. 1.7. Изучите руководство, где описаны эти команды для ваших систем, чтобы понять различия в той информации, которую вы получите на выходе. Также имейте в виду, что некоторые производители помещают эти команды в административный каталог, например /sbin или /usr/sbin, вместо обычного /usr/bin, и эти каталоги могут не принадлежать обычному пути поиска (PATH).

1. netstat - i предоставляет информацию об интерфейсах. Мы также задаем флаг -n для печати численных адресов, а не имен сетей. При этом показываются интерфейсы с их именами.

linux % netstat -ni
Kernel Interface table
Iface  MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0  1500   0 49211085      0      0      0 40540958      0      0      0 BMRU
lo   16436   0 98613572      0      0      0 98613572      0      0      0 LRU

Интерфейс закольцовки называется lo, a Ethernet называется eth0. В следующем примере показан узел с поддержкой Ipv6.

freebsd % netstat -ni
Name  Mtu Network      Address              Ipkts Ierrs    Opkts Oerrs Coll
hme0 1500 <Link#1>     08:00:20:a7:68:6b 29100435    35 46561488     0    0
hme0 1500 12.106.32/24 12.106.32.254     28746630     - 46617260     -    -
hme0 1500 fe80:1::a00:20ff:fea7 686b/64
                       fe80:1::a00:20ff:fea7:68b
                                                0      -       0     -    -
hme0 1500 3ffe:b80:1f8d:1::1/64
                       3ffe:b80:1f8d:1::1       0      -        0    –    -
hme1 1500 <Link#2>     08:00:20:a7:68:6b    51092      0    31537    0    0
hme1 1500 fe80:2::a00:20ff:fea7:686b/64
                       fe80:2::a00:20ff:fea7:686b
                                                0      -       90    -    -
hme1 1500 192.168.42   192.168.42.1         43584      -    24173    -    -
hme1 1500 3ffe:b80:1f8d:2::1/64
                       3ffe:b80:1f8d:2::1      78      -        8    -    -
lo0 16384 <Link#6>                          10198      0    10198    0    0
lo0 16384 ::1/128      ::1                     10      -       10    -    -
lo0 16384 fe80:6::1/64 fe80:6::1                0      -        0    -    -
lo0 16384 127          127.0.0.1            10167      -    10167    -    -
gif0 1280 <Link#8>                              6      0        5    0    0
gif0 1280 3ffe:b80:3:9ad1::2/128
                       3ffe:b80:3:9ad1::2       0      -        0    -    -
gif0 1280 fe80:8::a00:20ff:fea7:686b/64
                       fe80:8::a00:20ff:fea7:686b
                                                0      -        0    -    -

Мы разбили некоторые длинные строки на несколько частей, чтобы сохранить ясность представления.

2. netstat -r показывает таблицу маршрутизации, которая тоже позволяет определить интерфейсы. Обычно мы задаем флаг -n для печати численных адресов. При этом также приводится IP-адрес маршрутизатора, заданного по умолчанию:

freebsd % netstat -nr
Routing tables
Internet:
Destination   Gateway           Flags Refs   Use Netif Expire
default       12.106.32.1       UGSc    10  6877 hme0
12.106.32/24  link#1            UC       3     0 hme0
12.106.32.1   00:b0:8e:92:2c:00 UHLW     9     7 hme0  1187
12.106.32.253 08:00:20:b8:f7:e0 UHLW     0     1 hme0   140
12.106.32.254 08:00:20:a7:68:b6 UHLW     0     2 lo0
127.0.0.1     127.0.0.1         UH       1 10167 lo0
192.168.42    link#2            UC       2     0 hme1
192.168.42.1  08:00:20:a7:68:6b UHLW     0    11 lo0
192.168.42.2  00:04:ac:17:bf:38 UHLW     2 24108 hme1   210
Internet6:
Destination                        Gateway            Flags Netif Expire
::/96                              ::1                UGRSc lo0   =>
default                            3ffe:b80:3:9ad1::1 UGSc  gif0
::1                                ::1                UH    lo0
::ffff:0.0.0.0/96                  ::1                UGRSc lo0
3ffe:b80:3:9ad1::1                 3ffe:b80:3:9ad1::2 UH    gif0
3ffe:b80:3:9ad1::2                 link#8             UHL   lo0
3ffe:b80:1f8d::/48                 lo0                USc   lo0
3ffe:b80:1f8d:1::/64               link#1             UC    hme0
3ffe:b80:1f8d:1::1                 08:00:20:a7:68:6b  UHL   lo0
3ffe:b80:1f8d:2::/64               link#2             UC    hme1
3ffe:b80:1f8d:2::1                 08:00:20:a7:68:6b  UHL   lo0
3ffe:b80:1f8d:2:204:acff:fe17:bf38 00:04.ac:17:bf:38  UHLW  hme1
fe80::/10                          ::1                UGRSc lo0
fe80::%hme0/64                     link#1             UC    hme0
fe80::a00:20ff:fea7:686b%hme0      08:00:20:a7:68:6b  UHL   lo0
fe80::%hme1/64                     link#2             UC    hme1
fe80::a00:20ff:fea7:686b%hme1      08:00:20:a7:68:6b  UHL   lo0
fe80::%lo0/64                      fe80::1%lo0        Uc    lo0
fe80::1%lo0                        link#6             UHL   lo0
fe80::%gif0/64                     link#8             UC    gif0
fe80::a00:20ff:fea7:686b%gif0      link#8             UHL   lo0
ff01::/32                          ::1                U     lo0
ff02::/16                          ::1                UGRS  lo0
ff02::%hme0/32                     link#1             UC    hme0
ff02::%hem1/32                     link#2             UC    hme1
ff02::%lo0/32                      ::1                UC    lo0
ff02::%gif0/32                     link#8             UC    gif0

3. Имея имена интерфейсов, мы выполняем команду ifconfig, чтобы получить подробную информацию для каждого интерфейса:

linux % ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:C0:9F:06:B0:E1
     inet addr:206.168.112.96 Bcast:206.168.112.127 Mask:255.255.255.128
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
     RX packets:49214397 errors:0 dropped:0 overruns:0 frame:0
     TX packets:40543799 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:100
     RX bytes:1098069974 (1047.2 Mb) TX bytes:3360546472 (3204.8 Mb)
     Interrupt:11 Base address:0x6000

При этом мы получаем IP-адрес, маску подсети и широковещательный адрес. Флаг MULTICAST указывает на то, что узел поддерживает широковещательную передачу. В некоторых реализациях поддерживается флаг -a, при указании которого печатается информация обо всех сконфигурированных интерфейсах.

4. Одним из способов определить IP-адрес нескольких узлов локальной сети является проверка широковещательного адреса (найденного нами на предыдущем шаге) с помощью утилиты ping.

linux % ping -b 206.168.112.127
WARNING: pinging broadcast address
PING 206.168.112.127 (206.168.112.127) from 206.168.112.96 : 56 (84) bytes of data.
64 bytes from 206.168.112.96: icmp_seq=0 ttl=255 time=241 usec
64 bytes from 206.168.112.40: icmp_seq=0 ttl=255 time=2 566 msec (DUP!)
64 bytes from 206.168.112.118: icmp_seq=0 ttl=255 time=2.973 msec (DUP!)
64 bytes from 206.168.112.14: icmp_seq=0 ttl=255 time=3.089 msec (DUP!)
64 bytes from 206.168.112.126: icmp_seq=0 ttl=255 time=3.200 msec (DUP!)
64 bytes from 206.168.112.71: icmp_seq=0 ttl=255 time=3.311 msec (DUP!)
64 bytes from 206.168.112.31: icmp_seq=0 ttl=255 time=3.541 msec (DUP!)
64 bytes from 206.168.112.7: icmp_seq=0 ttl=255 time=3.636 msec (DUP!)
...

Оглавление книги

Оглавление статьи/книги

Генерация: 1.295. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз