Сеть TCP/IP
Сеть TCP/IP
Протокол TCP/IP (Transmission Control
Protocol/Internet Protocol) является базовым
транспортным сетевым протоколом в
UNIX'е. В заголовке TCP/IP пакета
указывается:
- IP-адрес отправителя
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.
Допустима также шестнадцатеричная
запись:
- c1.7c.94.49 или 0xC17C9449
80.08.02.01 или 0x80080201
В условиях корректно
сконфигуренной локальной сети, и
при условии подключения ее к
всемирной сети Internet, протокол TCP/IP
позволяет вашей сетевой программе
работать с ЛЮБЫМ компьютером в
мире, как если бы он находился в
вашей локальной сети.
Уникальность IP-адресов
поддерживается просто. Они
выдаются централизованно. Контора,
которая этим занимается,
называется NIC - Network Informational Center.
Европейское отделение NIC
расположено в Амстердаме. Она
ВЫДАЕТ IP-адреса. В адрес NIC нужно
послать форму-запрос
установленного образца, и через
некоторое время вам пришлют
"пачку" IP-адресов, выделенных
для вашей сети. E-mail адрес, по
которому нужно послать запрос:
hostmaster@sri-nic.net
Московский узел, раздающий
IP-адреса, а так же домены *.ru
доступен по адресу
IP-сеть, подсеть.
IP-сеть - "пачка" из 2**n
IP-адресов, ИДУЩИХ ПОДРЯД. Самый
младший - резервируется. Этот адрес
называется адресом IP-сети. Например
128.8.0.0, или 193.125.149.64 . Адрес сети
используется, когда требуется
указать всю сеть целиком, например,
когда задается маршрутизация до
этой сети.
Маска сети - фактически размер
сети, задает число адресов в се- ти.
Задается либо количеством битов в
маске сети (например 8бит - 256
адресов, 6 бит - 64 адреса), либо
битовой маской вида
b'111...11100...00'
число^^ ^^ битов
которую тоже принято записывать в
десятично-побайтной записи,
например:
- 255.255.255.192 - маска на 64 адреса
255.255.255.0 - маска на 256 адресов
255.255.0.0 - маска на 64Kb адресов
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'а
- командой sysadm установите
"nodename" . ВНИМАНИЕ:
именно nodename (имя узла), а не
systemname (имя операционной
системы)
- В файл /etc/hosts вставьте строчки,
привязывающие IP-адреса к имени
fedfond и, ВНИМАНИЕ!, fedfond-gate
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 - содержит
помимо имен хостов несколько
других информационных баз, но
зато поддерживается только в
рамках сети одной организации.
[Назад] [Содержание] [Вперед]
|