The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Документация для Solaris" / Оглавление документа

Сеть TCP/IP

Протокол TCP/IP (Transmission Control Protocol/Internet Protocol) является базовым транспортным сетевым протоколом в UNIX'е. В заголовке TCP/IP пакета указывается:

TCP/IP-ишные пакеты имеют интересную особенность: они способны "добраться" до адресата, пройдя сквозь разнородные локальные сети, используя разнообразные физические носители. "Маршрутизацию" IP-пакета (переброску его в требуемую сеть) осуществляют "на добровольных началах" компьютеры, входящие в TCP/IP сеть.

Всемирная сеть Internet.

Все компьютеры мира, поддерживающие протокол TCP/IP и каким-либо образом подключенные друг к другу, образуют глобальную всемирную сеть TCP/IP "Internet". Темпы роста "Internet": 100000 IP-адресов в месяц. В настоящий момент (конец 1994 года) к Internet'у подключено около: 20.000 сетей, 4.000.000 компьютеров, 35.000.000 пользователей

IP-адрес.

Каждая машина в мире имеет свой уникальный IP-адрес.

IP-адрес - 32-битное число, которое принято записывать в смешанном 16-рично-десятичном формате, в виде 4 чисел, разделенных точками. Например:

Каждое десятичное число здесь представляет на самом деле два шестнадцатеричных разряда. Может принимать значения от 0 до 255. Допустима также шестнадцатеричная запись:

В условиях корректно сконфигуренной локальной сети, и при условии подключения ее к всемирной сети Internet, протокол TCP/IP позволяет вашей сетевой программе работать с ЛЮБЫМ компьютером в мире, как если бы он находился в вашей локальной сети.

Уникальность IP-адресов поддерживается просто. Они выдаются централизованно. Контора, которая этим занимается, называется NIC - Network Informational Center. Европейское отделение NIC расположено в Амстердаме. Она ВЫДАЕТ IP-адреса. В адрес NIC нужно послать форму-запрос установленного образца, и через некоторое время вам пришлют "пачку" IP-адресов, выделенных для вашей сети. E-mail адрес, по которому нужно послать запрос: [email protected]

Московский узел, раздающий IP-адреса, а так же домены *.ru доступен по адресу

IP-сеть, подсеть.

IP-сеть - "пачка" из 2**n IP-адресов, ИДУЩИХ ПОДРЯД. Самый младший - резервируется. Этот адрес называется адресом IP-сети. Например 128.8.0.0, или 193.125.149.64 . Адрес сети используется, когда требуется указать всю сеть целиком, например, когда задается маршрутизация до этой сети.

Маска сети - фактически размер сети, задает число адресов в се- ти. Задается либо количеством битов в маске сети (например 8бит - 256 адресов, 6 бит - 64 адреса), либо битовой маской вида

   b'111...11100...00'
         число^^   ^^ битов
которую тоже принято записывать в десятично-побайтной записи, например:

Broadcast адрес сети - самый старший адрес в сети. Резервируется для передачи сообщений типа "все-всем-всем" (в сети).

128.8.255.255

Сети делятся на классы:

Класс A."Огромные" сети.
Адреса этих сетей лежат в промежутке: 1 - 126.
Маска сети: 255.0.0.0
Содержит до 16777216 адресов (256*256*256).
Адреса хостов в этих сетях вида: 125.*.*.*
Класс B."Средние" сети.
Адреса этих сетей лежат в промежутке: 128.0 - 191.255
Маска сети: 255.255.0.0
Содержит до 65536 адресов (256*256).
Адреса хостов в этих сетях вида: 136.12.*.*
Класс C. "Маленькие" сети.
Адреса сетей лежат в интервале: 192.0.0 - 255.254.255
Маска сети: 255.255.255.0
Содержит 254 адреса.
Адреса хостов в этих сетях вида: 195.136.12.*

Объявляем IP-адрес на наш ethernet'ный контроллер.

Конфигурация сети на UNIX-машине обычно делается автоматически при начальной загрузке. Вкратце ее можно описать так:

Объявляем, что наш IP-адрес 198.8.2.1 и он поднят на ethernet'ную карту по имени elx70 . В случае Motorol'ы так называется ethernet, торчащий из главной системной платы - платы с процессором.

   ifconfig  e1x70  198.8.2.1  up
Объявляем, что наш второй контроллер с именем m3760 (нижняя плата) имеет IP-адрес 198.8.3.1
   ifconfig  m3760  198.8.3.1  up

Маршрутизация локальной сети.

Объявляем, что машины с адресами вида 198.8.2.* *=1,...,254 сидят на нашем верхнем локальном сегменте ethernet, и разговаривать с ними надо напрямую, через верхний ethernet, соответствующий нашему адресу 198.8.2.1 - т.е. - elx70. А с машинами, имеющими адреса вида 198.8.3.* - через нижний ethernet - с адресом 198.8.3.1

   route add  net  198.8.2.0  198.8.2.1 netmask 255.255.255.0 0
   route add  net  198.8.3.0  198.8.3.1 netmask 255.255.255.0 0

Сетевые пакеты для IP-адресов, которые не лежат в нашей локальной сети, переправлять на машину с сетевым адресом 198.8.2.107 - а уж она сама будет разбираться, что с ними делать, и как доставить их до конкретных адресатов.

   route add default      198.8.2.107  1

Последний аргумент команды route - метрика. Ее можно интерпретировать как "расстояние" до "того" gateway'я, или "сколько пересадок между gateway'ями придется сделать IP-пакету по дороге туда. Поскольку IP-адреса 198.8.2.1 и 198.8.3.1 соответствуют нашим собственный платам ethernet, то и метрика (расстояние) до них 0. 198.8.2.107 - другая машина - "расстояние до нее" 1.

Смотрим, что у нас получилось

  netstat -rn             # распечатать таблицу маршрутизации
  ping -s fedfond         # "прозвонить" узлы сети
  ping -s fedfond-gate
  ping -s 198.8.2.107
  netstat  -i        # статистика о работе сетевых интерфейсов

Настала пора объяснить, что такое lo0 и localhost. Это так называемый Loop-back интерфейс. Он имитирует сетевой интерфейс локально, не выходя за границы нашего компьютера. Loop-back интерфейсу соответствует зарезервированный за ним IP-адрес 127.0.0.1

Конфигурирование TCP/IP на Мотороле 922.

Придумайте сетевое имя вашего компьютера. Пусть вы решили, что ваш компьютер должен называться fedfond, и иметь IP-adres 198.8.2.1 . Однако не забывайте, что у Моторолы ДВА ethernet-контроллера, и КАЖДЫЙ из них ДОЛЖЕН иметь свой УНИКАЛЬНЫЙ IP-адрес. Мы решаем, что второй наш ethernet будет иметь IP-адрес 198.8.3.1, ну и этому адресу можно назначить вполне человеческое имя, например "fedfond-gate".

ВНИМАНИЕ: если вы внимательно рассмотрите содержание файла /etc/inet/rc.inet, особенно строку вида

    /usr/sbin/ifconfig e1x70 `uname -n`-gate $net_mask up
то поймете, что второй ethernet должен называться именно fedfond-gate , и никак иначе.

Итак, чтобы установить сетевое имя и IP-адреса нашего host'а