Протокол 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'а
198.8.2.1 fedfond 198.8.3.1 fedfond-gate
Прикладные интерфейсы.
Чтобы писать программы, работающие с сетью, программист должен пользоваться каким-либо набором системных вызовов и функций. От 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).
Конфигурация 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-адрес
Конфигурация BSD сокетов.
Для этого ничего делать не надо. Впрочем, в дальнейшем, возможно, вам придется этим заниматься. Настройки inetd лежат в файлах:
/etc/inetd.conf |
название сетевого сервиса | --> | имя обслуживающей программы |
/etc/services |
номер порта | --> | название сетевого сервиса |
Состояние текущих соединений можно посмотреть командой:
netstat
(или netstat -ta
- если у вас Linux)
Еще несколько протоколов
1ARP - 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 - содержит помимо имен хостов несколько других информационных баз, но зато поддерживается только в рамках сети одной организации.
[Назад] [Содержание] [Вперед]