Сеть TCP/IP

Сеть TCP/IP

 
  • Сеть TCP/IP
  • Всемирная сеть Internet.
  • 1. IP-адрес.
  • IP-сеть, подсеть.
  • 2.1. Private Address Space
  • 2. Объявляем IP-адрес на наш ethernet'ный контроллер.
  • 3. Маршрутизация локальной сети.
  • 4. Конфигурирование TCP/IP на Мотороле 922.
  • Конфигурирование 2-го ethernet в Linux
  • Как узнать hardware адрес ethernet'ной карты
  • 5. Прикладные интерфейсы.
  • 6. Конфигурация TLI
  • 7. Конфигурация BSD сокетов.
  • Еще несколько протоколов
  • Конфигурирование TCP/IP на скорую руку
  • Redhat

  • Протокол TCP/IP (Transmission Control Protocol/Internet Proto- col) является базовым транспортным сетевым протоколом в 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 пользователей

    1. IP-адрес.


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

          193.124.148.73
          128.8.2.1
    Каждое десятичное число здесь представляет на самом деле два шестнадцатеричных разряда. Может принимать значения от 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 доступен по адресу

          РосНИИРОС xSU/RU NetworkInformationalCenter
          ncc@ripn.net или ncc@ussr.eu.net
          www.ripn.net/nic/ripn-docs/

    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
          Содержит до 16387064 адресов (256*256*256).
          Адреса хостов в этих сетях вида: 125.*.*.*
    Класс B. "Средние" сети.

          Адреса этих сетей лежат в промежутке: 128.0 - 191.255
          Маска сети: 255.255.0.0
          Содержит до 64516 адресов (256*256).
          Адреса хостов в этих сетях вида: 136.12.*.*
    Класс C. "Маленькие" сети.

          Адреса сетей лежат в интервале: 192.0.0 - 255.254.255
          Маска сети: 255.255.255.0
          Содержит 254 адреса.
          Адреса хостов в этих сетях вида: 195.136.12.*
    Класс D. "Multicast-сети" (групповая адресация) (в стадии разработки)
          Адреса сетей лежат в интервале: 224-239
    Класс E. "Экспериментальные" 240-250
    Адреса 0, 127, 255 - специальные и для обычных IP не используется

    2.1. Private Address Space



          Если ваша сеть будет использоваться только внутри организации, и машины не будут иметь непосредственного выхода в интернет, то адреса для нее можно брать "с потолка".
    В документе RFC 1597 "Address Allocation for Private Internets" March 1994:
    The Internet Assigned Numbers Authority (IANA) зарезервировал три блока IP адресов для использования во внутренних сетях:

          10.0.0.0 - 10.255.255.255 Класс A
          172.16.0.0 - 172.31.255.255 Класс B
          192.168.0.0 - 192.168.255.255 Класс C
    Роутеры большинства ISP эти адреса не маршрутизируют, что добавляет им(адресам) безопасности.

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


    Конфигурация сети на UNIX-машине обычно делается автоматически при начальной загрузке. Вкратце ее можно описать так:
    Определение трех однотипных карт в Linux (1*ISA, 2*PnP):
    /etc/conf.modules alias eth0 ne alias eth1 ne alias eth2 ne
    options ne io=0x220,irq=5
    Объявляем, что наш 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

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


    Объявляем, что машины с адресами вида 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

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


    Придумайте сетевое имя вашего компьютера. Пусть вы решили, что ваш компьютер должен называться fedfond, и иметь IP-adres 198.8.2.1 . Однако не забывайте, что у Моторолы ДВА etherґ net-контроллера, и КАЖДЫЙ из них ДОЛЖЕН иметь свой УНИКАЛЬНЫЙ 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}


    Home | UK Shop Center |Contact | Buy Domain | Directory | Web Hosting | Resell Domains


    Copyleft 2005 ruslib.us