Опубликован: 01.07.2008 | Уровень: специалист | Доступ: платный
Лекция 7:

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

< Лекция 6 || Лекция 7: 123 || Лекция 8 >

4. Конфигурирование 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

  1. командой sysadm установите "nodename". ВНИМАНИЕ: именно nodename (имя узла) а не systemname (имя операционной системы)
  2. В файл /etc/hosts вставьте строчки, привязывающие IP-адреса к имени fedfond и, ВНИМАНИЕ!, fedfond-gate
    198.8.2.1 fedfond
    198.8.3.1 fedfond-gate
  3. Перезагрузитесь.
Конфигурирование 2-го ethernet в Linux

Первый-то ethernet конфигурится с раздачи - сложность появится, когда мы захотим увидеть второй. Например можно в /etc/rc.d/rc.local поставить такие команды:

# подгрузка дравера с дековским чипом 2140
insmod /lib/modules/2.0.18/de4x5.o io=0
# выделение IP # статический роутинг на вторую сетку
ifconfig eth1 10.232.172.1
route add -net 10.232.172.0 gw 10.232.172.1 netmask 255.255.255.0

Если дравер 2-го ethernet'а вкомпилирован в ядро, то активизировать его можно так: в файл /etc/lilo.conf вписать

append="ether=0,0,eth0 ether=0,0,eth1" # если сработает autoprobe
# в случае явного задания параметров карт
append="ether=10,0x300,0xe800,eth0 ether=12,0x280,eth1"

Включить роутинг:

echo 1 > /proc/sys/net/ipv4/ip_forward
Как узнать hardware адрес ethernet'ной карты

Если машины нормально сконфигурированы для TCP/IP, то достаточно попинговать их явно или по броадкасту, затем arp -a

ping [-s] 123.456.789.255
 arp -a

Почти всегда можно разобрать машину, и посмотреть адрес, напечатанный на самой плате.

Linux: Адрес печатается при загрузке ядра. Если карта сконфигурирована, то адрес сообщает команда ifconfig

Sun: Адрес печатается boot-монитором при старте Hardware адрес ethernet'а на Sun можно произвольно менять находясь в boot-мониторе, или командой ifconfig подробности см. в Sun NVRAM & hostid FAQ

HP-UX: Адрес можно узнать командой lanscan. На рабочих станциях адрес можно узнать еще и из boot-монитора PDC.

5. Прикладные интерфейсы

Чтобы писать программы, работающие с сетью, программист должен пользоваться каким-либо набором системных вызовов и функций. От BSD-Unix'а в жизнь вошел получивший большую популярность API Berkеlеy-sockets. AT&T System V породила TLI (Transport Level Interface) - построенный на технологии "потоков" ( streams ).

SVR4 поддерживает и то, и другое. Поддержку сокетов обеспечивает демон inetd (Internet Super Server), поддержку TLI обеспечивает демон listen (Network Listener).

6. Конфигурация TLI

Демон listen управляется специальной базой данных, в которую необходимо вписать IP-адрес нашего host'а. Делается это "один раз в жизни". IP-адрес задается в хитрой шестнадцатеричной записи.

Итак, если наши IP-адреса 198.8.2.1 и 198.8.3.1, их шестнадцатеричная запись C6080201, C6080301 , то мы должны единовременно выполнить три команды:

nlsadmin -i tcp
nlsadmin -l '\x00020acec60802010000000000000000' tcp
nlsadmin -l '\x00020acec60803010000000000000000' tcp
 "волшебное ^^^^^^^^шестнадцать нулей
 слово 0acе" |
 |
 сюда вписывается наш фактический IP-адрес

7. Конфигурация BSD сокетов

Для этого ничего делать не надо. Впрочем, в дальнейшем, возможно, вам придется этим заниматься. Настройки inetd лежат в файлах:

  • /etc/inetd.conf название сетевого --> имя обслуживающей сервиса программы
  • /etc/services номер порта --> название сетевого сервиса

Состояние текущих соединений можно посмотреть командой:

netstat (или netstat -ta - если у вас Linux)

Еще несколько протоколов

ARP - Address Resolution Protocol Протокол низкого уровня. Поддерживается на уровне ядра и/или дравера сетевой платы. Для определения, какой ethernet'ный адрес имеет машина, если известен ее IP-адрес. Работает по принципу broadcаst: "эй, все, все, все: IP-такой_то - отзовись", и он один отзывается.

arp -a # распечатать известные нам IP-адреса и их eth-адреса

RARP - Reverse Address Resolution Protocol. Для оповещения бездисковых клиентов, какой у них IP-адрес. На сервере запускается демон rarpd. У него есть файл-таблица: ether-адрес -> IP-адрес. По запросу-broadcast'у бездискового клиента вида: "эй, все,все,все, мой eth-адрес такой-то. Как меня зовут?" rarpd сообщает ему, какой у него IP (а другой демон bootparamd сообщает ему дополнительную информацию - где ему брать свою корневую файловую систему, например).

Для обмена информацией о роутинге (маршрутизации) используются протоколы RIP, BGP, EGP, ICMP.

RIP - Routing Information Protocol Внутренний протокол роутинга (внутри автономной системы). Его поддерживают демоны routed и/или gated.

BGP - Border Gateway Protocol; EGP - External Gateway Protocol. Роутинг между автономными системами. Их поддерживает демон gated

ICMP - Internet Control Message Protocol передает сообщения об ошибках в TCP/IP (например "port unreachable"), используется программами ping, traceroute, может передавать сообщение о нерациональном роутинге типа "redirect": "вообще-то можно направлять пакеты через меня, однако есть и более короткий путь".

Для обмена информацией о символических именах host'ов, пользователей, групах пользователей и пр. используются протоколы DNS и NIS/YP

DNS - Domain Name System. Позволяет использовать символические имена хостов помимо цифровых IP-номеров, и организовывать "деревянную" структуру наименования доменов (типа pc101.fedfond.msk.su , ftp.sco.com и т.п.) Сервер DNS - хост, на котором запущен демон bind, и хранятся имена хостов в зоне(домене). На остальных хостах для определения IP-адреса по имени используются библиотечные функции библиотеки "resolver" - gethostbyname, gethostbyaddr, которые обращаются по сети к ближайшему серверу DNS, и выясняют у него IP-адрес машины по ее имени (domain-name).

NIS/YP - Network Information System (используется так же название, пришедшее от фирмы Sun - Yellow Pages). Позволяет хранить на одном NIS-сервере (с демоном ypserv) информацию, единую для всей локальной сети: имена хостов, имена и права пользователей, групп пользователей, название их домашних каталогов, символические имена портов и т.д. и т.п.

Еще раз об отличиях DNS от NIS/YP: DNS - система "глобальная" - действует в рамках всего Интернета, но содержит ТОЛЬКО имена хостов. NIS/YP - содержит помимо имен хостов несколько других информационных баз, но зато поддерживается только в рамках сети одной организации.

Конфигурирование TCP/IP на скорую руку

В большинстве unix-ов имеется простая менюшная утилита позволяющая сконфигурировать основные параметры компьютера: Имя хоста, IP адрес и параметры сети, DNS сервера

HP/UX: /etc/set_parms initial
 Linux Slackware: net_config
 Solaris: /etc/???

Redhat

В redhat-оподобных Linux

/sbin/ifup-pre-local
 /sbin/ifdown-pre-local
 /sbin/ifup-local
 /sbin/ifdown-local

Если они есть и исполняемы, то до/после поднятия/опускания интерфейсов они будут вызываться с параметром ${DEVICE} Организация TCP/IP по последовательным линиям

Протокол TCP/IP не обязательно требует наличия ethernet'ной сети. Вполне допустимы и другие физические носители, например:

  • Последовательные линии с подключением через порты RS-232,
  • Скоростные линии с подключением через параллельные порты, или скоростные синхронные порты (например 485, V.435).

Эти возможности обеспечиваются специализированными реализациями протокола IP:

  • для подключения через RS-232
    • SLIP - Serial Line IP - самая первая реализация TCP/IP "для бедных", широко используется до сих пор.
    • CSLIP - Compressed SLIP - модификация протокола SLIP. Сжатию подвергаются заголовки IP-пакетов. ВНИМАНИЕ: но не сами данные! В стандартном IP-пакете IP-заголовки со служебной информацией занимают порядка 40 байт. В CSLIP'е эти заголовки ужимаются до 3 байт. При пересылке большого числа мелких пакетов получается существенный выигрыш в скорости. Если пакеты крупные, то выигрыша не будет никакого.
    • PPP - Point-to-Point Protocol. Еще одна, современная реализация TCP "для бедных". Является стандартным для SVR4. Более универсален. Позволяет также организовать передачу по последовательной линии протокола IPX. Поддерживает режимы эмуляции slip и cslip - для совместимости.
  • для подключения через Centronix-параллельный порт
    • PLIP - Parallel Line IP - некоторые скажут - экзотика. Ничуть не бывало. Весьма распространенная вещь. Вот когда TCP/IP по SCSI-шине - это да, это - экзотика.

Кстати, RFC 1149 описывает передачу пакетов IP голубиной почтой.

TCP/IP по спутниковой связи

Теоретических трудностей организация связи TCP/IP через спутниковую антенну нет - все выглядит также, как при модемной связи по телефону. Технология примерно следующая: с антенны выходит высокочастотный сигнал, сигнал прогоняется сквозь спутниковый модем, из модема выходит поток данных по формату High Speed Interface - завести в компьютер его можно через скоростной порт, например V.435 (логически он ведет себя приблизительно как обычный последовательный порт), и со стороны хоста - поднимается протокол PPP. Естественно, на "том конце" предполагается та же схема подключения.

+-------------------+	 +-----------------+ (
| протокол порт| данные |порт спутниковый| сигнал ( ><
|Host PPP V.435|========|V.435 модем | ~~~~~~ (
| -TCP/IP-> | | | ~~~~~~ /\
+-------------------+ +-----------------+ Антенна

Вместо Хоста со скоростным портом, модем можно подключить к специализированному устройству - "Роутеру", внутри которого "зашит" протокол TCP/IP (PPP, Ether), и имеются порты Ethernet, и High Speed Interface. Достаточно популярны для таких целей роутеры "Cisco router", "NetBlaser".

+-------------------+	 +-----------------+ (
| протокол порт| данные |порт спутниковый| сигнал ( ><
|Router PPP V.435|========|V.435 модем | ~~~~~~ (
| -TCP/IP-> | | | ~~~~~~ /\
+-------+-----------+ +-----------------+ Антенна
	|
 ... -Ethernet------ ...
< Лекция 6 || Лекция 7: 123 || Лекция 8 >
Дмитрий Ярцев
Дмитрий Ярцев
Россия
Игорь Зарубин
Игорь Зарубин
Россия