- •2. Основы межсетевого обмена в сетях tcp/ip
- •2.1. Структура стека протоколов tcp/ip
- •2.2. Основные протоколы стека tcp/ip
- •2.2.1. Протоколы slip и ppp
- •2.2.2. Протокол arp. Отображение канального уровня на уровень межсетевого обмена
- •2.2.3. Протокол ip
- •2.8. Формат пакета Ipv4
- •2.2.4. IPing - новое поколение протоколов ip
- •2.2.6. User Datagram Protocol - udp
- •2.2.7. Transfer Control Protocol - tcp
- •2.3. Принципы построения ip-адресов
- •2.4. Подсети
- •2.5. Порты и сокеты
- •2.6. Основные принципы ip-маршрутизации
- •2.7. Настройка операционной системы и сетевые интерфейсы
- •2.8. Настройка сетевых интерфейсов
- •2.8.1. Настройка Ethernet-интерфейса
- •2.8.2. Настройка slip
- •2.8.3. Настройка интерфейса ppp
- •2.9. Маршрутизация, протоколы динамической маршрутизации, средства управления маршрутами
- •2.9.1. Статическая маршрутизация
- •2.9.2. Динамическая маршрутизация
- •2.9.3. Программа routed
- •2.9.4. Программа gated
- •2.10 Анализ и фильтрация tcp/ip пакетов
- •3. Информационные сервисы Internet
- •3.1. Система Доменных Имен
- •3.1.1. Принципы организации dns
- •3.1.2. Bind (Berkeley Internet Name Domain)
- •3.1.3. Регистрация доменных имен
- •3.1.4. Серверы доменных имен и механизм поиска ip-адреса
- •3.1.5. Настройка resolver
- •3.1.6. Программа named
- •3.1.6.1. Файлы настройки named
- •3.1.6.2. Запись "Start Of Authority"
- •3.1.6.3. Запись "Name Server"
- •3.1.6.4. Адресная запись "Address"
- •3.1.6.5. Запись Mail eXchanger
- •3.1.6.6. Запись назначения синонима каноническому имени "Canonical Name"
- •3.1.6.7. Записи типа "Pointer"
- •3.1.6.8. Запись типа hinfo
- •3.1.6.9. Запись определения информационных сервисов "Well Known Services"
- •3.1.6.10. Команды описания зоны
- •3.1.6.11. Файлы описания зоны
- •3.1.7. Примеры настроек программы named и описания зон
- •3.1.7.1. Небольшой поддомен в домене ru
- •3.1.7.2. Описание "прямой" и "обратной" зон для поддомена определенного на двух подсетях
- •3.1.7.3. Делегирование поддомена внутри домена
- •3.1.8. Программа nslookup
- •3.1.9. Dns и безопасность
- •3.2. Электронная почта в Internet
- •3.2.1. Принципы организации
- •3.2.2. Формат почтового сообщения (rfc-822)
- •3.2.3. Формат представления почтовых сообщений mime и его влияние на информационные технологии Internet
- •3.2.3.1. Поле версии mime (mime-Version)
- •3.2.3.2. Поле типа содержания тела почтового сообщения (Content-Type)
- •3.2.3.3. Поле типа кодирования почтового сообщения (Content-Transfer-Encoding)
- •3.2.3.4. Дополнительные необязательные поля
- •3.2.4. Протокол обмена почтой smtp (Simple Mail Transfer Protocol)
- •3.2.5. Интерфейс Eudora
- •3.2.6. Системы почтовой рассылки (программа sendmail)
- •3.2.6.1. Принцип работы программы sendmail
- •3.2.7. Настройка программы sendmail
- •3.2.7.1. Тестирование Sendmail и способы запуска
- •3.3. Эмуляция удаленного терминала. Удаленный доступ к ресурсам сети
- •3.3.1. Протокол Telnet
- •3.3.2. Интерфейс пользователя (telnet) и демон (telnetd)
- •3.3.2.1. Программа-сервер (telnetd)
- •3.3.2.2. Программа-клиент (telnet)
- •3.3.3. Организация модемных пулов, настройка оборудования. Квоты пользователей
- •3.4. Обмен файлами. Служба архивов ftp
- •3.4.1. Типы информационных ресурсов
- •3.4.2. Протокол ftp
- •3.4.3. Сервер протокола - программа ftpd
2.2.4. IPing - новое поколение протоколов ip
До сих пор, при обсуждении IP-технологии, основное внимание уделялось проблемам межсетевого обмена и путям их решения в рамках существующей технологии. Однако, все эти задачи, вызванные необходимостью приспособления IP к новым физическим средам передачи данных меркнут перед действительно серьезной проблемой - ростом числа пользователей Сети. Казалось бы, что тут страшного? Число пользователей увеличивается, следовательно растет популярность сети. Такое положение дел должно только радовать. Но проблема заключается в том, что Internet стал слишком большой, он перерос заложенные в него возможности. К 1994 году ISOC опубликовало данные, из которых стало ясно, что номера сетей класса B практически все уже выбраны, а остались только сети класса A и класса C. Класс A - это слишком большие сети. Реальные пользователи сети, такие как университеты или предприятия, не используют сети этого класса. Класс С хорош для очень небольших организаций. При современной насыщенности вычислительной техникой только мелкие конторы будут удовлетворены возможностями этого класса. Но если дело пойдет и дальше такими темпами, то класс C тоже быстро иссякнет. Самое парадоксальное заключается в том, что реально не все адреса, из выделенных пользователям сетей, реально используются. Большое число адресов пропадает из-за различного рода просчетов при организации подсетей, например, слишком широкая маска, или наоборот слишком "дальновидного планирования, когда в сеть закладывают большой запас "на вырост". Не следует думать, что эти адреса так и останутся невостребованными. Современное "железо" позволяет их утилизировать достаточно эффективно, но это стоит значительно дороже, чем простые способы, описанные выше. Одним словом, Internet, став действительно глобальной сетью, оказался зажатым в тисках своих собственных стандартов. Нужно было что-то срочно предпринимать, чтобы во время пика своей популярности не потерпеть сокрушительное фиаско.
В начале 1995 года IETF, после 3-x лет консультаций и дискуссий, выпустило предложения по новому стандарту протокола IP - IPv6, который еще называют IPing. К слову, следует заметить, что сейчас Internet-сообщество живет по стандарту IPv4. IPv6 призван не только решить адресную проблему, но и попутно помочь решению других задач, стоящих в настоящее время перед Internet.
Нельзя сказать, что до появления IPv6 не делались попытки обойти адресные ограничения IPv4. Например, в протоколах BOOTP (BOOTstrap Protocol) и DHCP (Dynamic Host Configuration Protocol) предлагается достаточно простой и естественный способ решения проблемы для ситуации, когда число физических подключений ограничено, или реально все пользователи не работают в сети одновременно. Типичной ситуацией такого сорта является доступ к Internet по коммутируемом каналу, например телефону. Ясно, что одновременно несколько пользователей физически не могут разговаривать по одному телефону, поэтому каждый из них при установке соединения запрашивает свою конфигурацию, в том числе и IP-адрес. Адреса выдаются из ограниченного набора адресов, который закреплен за телефонным пулом. IP-адрес пользователя может варьироваться от сессии. Фактически, DHCP - это расширение BOOTP в сторону увеличения числа протоколов, для которых возможна динамическая настройка удаленных машин. Следует заметить, что DHCP используют и для облегчения администрирования больших сетей, т.к. достаточно иметь только базу данных машин на одном компьютере локальной сети, и из нее загружать настройки удаленных компьютеров при их включении (под включением понимается, в данном случае не подключение к локальной компьютерной сети, а включение питания у компьютера, подсоединенного к сети).
Совершенно очевидно, что приведенный выше пример - это достаточно специфическое решение, ориентированное на специальный вид подключения к сети. Однако, не только адресная проблема определила появление нового протокола. Разработчики позаботились и о масштабируемой адресации IP-пакетов, ввели новые типы адресов, упростили заголовок пакета, ввели идентификацию типа информационных потоков для увеличения эффективности обмена данными, ввели поля идентификации и конфиденциальности информации.
Новый заголовок IP-пакета показан на рисунке 2.9.
Рис. 2.9. Заголовок IPv6
В этом заголовке поле "версия" - номер версии IP, равное 6. Поле "приоритет" может принимать значения от 0 до 15. Первые 8 значений закреплены за пакетами, требующими контроля переполнения, например, 0 - несимвольная информация; 1 - информация заполнения (news), 2 - не критичная ко времени передача данных (e-mail); 4 - передача данных режима on-line (FTP, HTTP, NFS и т.п.); 6 - интерактивный обмен данными (telnet, X); 7 - системные данные или данные управления сетью (SNMP, RIP и т.п.). Поле "метка потока" предполагается использовать для оптимизации маршрутизации пакетов. В IPv6 вводится понятие потока, который состоит из пакетов. Пакеты потока имеют одинаковый адрес отправителя и одинаковый адрес получателя и ряд других одинаковых опций. Подразумевается, что маршрутизаторы будут способны обрабатывать это поле и оптимизировать процедуру пересылки пакетов, принадлежащих одному потоку. В настоящее время алгоритмы и способы использования поля "метка потока" находятся на стадии обсуждения. Поле длины пакета определяет длину следующей за заголовком части пакета в байтах. Поле "следующий заголовок" определяет тип следующего за заголовком IP-заголовка. Заголовок IPv6 имеет меньшее количество полей, чем заголовок IPv4. Многие необязательные поля могут быть указаны в дополнительных заголовках, если это необходимо. Поле "ограничение переходов" определяет число промежуточных шлюзов, которые ретранслируют пакет в сети. При прохождении шлюза это число уменьшается на единицу. При достижении значения "0" пакет уничтожается. После первых 8 байтов в заголовке указываются адрес отправителя пакета и адрес получателя пакета. Каждый из этих адресов имеет длину 16 байт. Таким образом, длина заголовка IPv6 составляет 48 байтов.
После 4 байтов IP-адреса стандарта IPv4, шестнадцать байт IP-адреса для IPv6 выглядят достаточными для удовлетворения любых потребностей Internet. Не все 2128 адресов можно использовать в качестве адреса сетевого интерфейса в сети. Предполагается выделение отдельных групп адресов, согласно специальным префиксам внутри IP-адреса, подобно тому, как это делалось при определении типов сетей в IPv4. Так, двоичный префикс "0000 010" предполагается закрепить за отображением IPX-адресов в IP-адреса. В новом стандарте выделяются несколько типов адресов: unicast addresses - адреса сетевых интерфейсов, anycast addresses - адреса не связанные с конкретным сетевым интерфейсом, но и не связанные с группой интерфейсов и multicast addresses - групповые адреса. Разница между последними двумя группами адресов в том, что anycast address это адрес конкретного получателя, но определяется адрес сетевого интерфейса только в локальной сети, где этот интерфейс подключен, а multicast-сообщение предназначено группе интерфейсов, которые имеют один multicast-адрес. Пока IPv6 не стал злобой дня, нет смысла углубляться в форматы новых IP-адресов. Отметим только, что существующие узлы Internet будут функционировать в сети без каких-либо изменений в их настройках и программном обеспечении. IPv6 предполагает две схемы включения "старых" адресов в новые. Предполагается расширять 4-х байтовый адрес за счет лидирующих байтов до 16-и байтового. При этом, для систем, которые не поддерживают IPv6, первые 10 байтов заполняются нулями, следующие два байта состоят из двоичных единиц, а за ними следует "старый" IP-адрес. Если система в состоянии поддерживать новый стандарт, то единицы в 11 и 12 байтах заменяются нулями.
Маршрутизировать IPv6-пакеты предполагается также, как и IPv4-пакеты. Однако, в стандарт были добавлены три новых возможности маршрутизации: маршрутизация поставщика IP-услуг, маршрутизация мобильных узлов и автоматическая переадресация. Эти функции реализуются путем прямого указания промежуточных адресов шлюзов при маршрутизации пакета. Эти списки помещаются в дополнительных заголовках, которые можно вставлять вслед за заголовком IP-пакета.
Кроме перечисленных возможностей, новый протокол позволяет улучшить защиту IP-трафика. Для этой цели в протоколе предусмотрены специальные опции. Первая опция предназначена для защиты от подмены IP-адресов машин. При ее использовании нужно кроме адреса подменять и содержимое поля идентификации, что усложняет задачу злоумышленника, который маскируется под другую машину. Вторая опция связана с шифрацией трафика. Пока IPv6 не стал реально действующим стандартом, говорить о конкретных механизмах шифрации трудно.
Завершая описание нового стандарта, следует отметить, что он скорее отражает современные проблемы IP-технологии и является достаточно проработанной попыткой их решения. Будет принят новый стандарт или нет покажет ближайшее будущее. Во всяком случае первые образцы программного обеспечения и "железа" уже существуют.
2.2.5. ICMP (Internet Control Message Protocol)
Данный протокол на ряду с IP и ARP относят к межсетевому уровню. Протокол используется для рассылки информационных и управляющих сообщений. При этом используются следующие виды сообщений:
Flow control - если принимающая машина (шлюз или реальный получатель информации) не успевает перерабатывать информацию, то данное сообщение приостанавливает отправку пакетов по сети.
Detecting unreachаble destination - если пакет не может достичь места назначения, то шлюз, который не может доставить пакет, сообщает об этом отправителю пакета. Информировать о невозможности доставки сообщения может и машина, чей IP-адрес указан в пакете. Только в этом случае речь будет идти о портах TCP и UDP, о чем будет сказано чуть позже.
Redirect routing - это сообщение посылается в том случае, если шлюз не может доставить пакет, но у него есть на этот счет некоторые соображения, а именно адрес другого шлюза.
Checking remote host - в этом случае используется так называемое ICMP Echo Message. Если необходимо проверить наличие стека TCP/IP на удаленной машине, то на нее посылается сообщение этого типа. Как только система получит это сообщение, она немедленно подтвердит его получение.
Последняя возможность широко используется в Internet. На ее основе работает команда ping.
Ix: {2} ping apollo.polyn.kiae.su
PING apollo.polyn.kiae.su (144.206.160.40): 56 data bytes
64 bytes from 144.206.160.40: icmp_seq=0 ttl=255 time=1.401 ms
64 bytes from 144.206.160.40: icmp_seq=1 ttl=255 time=0.844 ms
64 bytes from 144.206.160.40: icmp_seq=2 ttl=255 time=0.807 ms
64 bytes from 144.206.160.40: icmp_seq=3 ttl=255 time=0.912 ms
64 bytes from 144.206.160.40: icmp_seq=4 ttl=255 time=0.797 ms
64 bytes from 144.206.160.40: icmp_seq=5 ttl=255 ti^C
--- apollo.polyn.kiae.su ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max = 0.797/0.930/1.401 ms
Ix: {3}
В приведенном выше примере сообщения посылаются на машину apollo.polyn.kiae.su, которая подтверждает их получение.
Другое использование ICMP - это получение сообщения о "кончине" пакета на шлюзе. При этом используется время жизни пакета, которое определяет число шлюзов, через которые пакет может пройти. Программа, которая использует этот прием, называется traceroute. К более подробному обсуждению ее возможностей мы вернемся в разделе 2.5. Здесь же только укажем, что она использует сообщение TIME EXECEED протокола ICMP.
quest:/usr/paul:\[1\]%traceroute www.netscape.com
traceroute to www3.netscape.com (205.218.156.44), 30 hops max, 40 byte packets
1 Moscow-KIAE-4.Relcom.EU.net (144.206.136.12) 7 ms 4 ms 4 ms
2 Moscow-KIAE-3.Relcom.EU.net (193.125.152.14) 5 ms 4 ms 4 ms
3 Moscow-M9-2.Relcom.EU.net (193.124.254.37) 10 ms 8 ms 10 ms
4 StPetersburg-LE-1.Relcom.EU.net (193.124.254.33) 53 ms 24 ms 29 ms
5 Helsinki2.FI.EU.net (134.222.4.1) 33 ms 31 ms 39 ms
6 Pennsauken1.NJ.US.EU.net (134.222.228.30) 159 ms 292 ms 125 ms
7 mcinet-2.sprintnap.net (192.157.69.48) 528 ms 419 ms 400 ms
8 core2-hssi2-0.WestOrange.mci.net (204.70.1.49) 411 ms 495 ms 397 ms
9 borderx1-fddi-1.SanFrancisco.mci.net (204.70.158.52) 387 ms 342 ms 231 ms
10 borderx1-fddi-1.SanFrancisco.mci.net (204.70.158.52) 264 ms 265 ms 261 ms
11 netscape.SanFrancisco.mci.net (204.70.158.110) 250 ms 262 ms 252 ms
12 205.218.156.44 (205.218.156.44) 279 ms 295 ms 299 ms
quest:/usr/paul:\[2\]%
При посылке пакета через Internet traceroute устанавливает значение TTL (Time To Live) последовательно от 1 до 30 (значение по умолчанию). TTL определяет число шлюзов, через которые может пройти IP-пакет. Если это число превышено, то шлюз, на котором происходит обнуление TTL, высылает ICMP-пакет. Traceroute сначала устанавливает значение TTL равное единице - отвечает ближайший шлюз, затем значение TTL равно 2 - отвечает следующий шлюз и т. д. Если пакет достиг получателя, то в этом случае возвращается сообщение другого типа - Detecting unreachаble destination, т.к. IP-пакет передается на транспортный уровень, а на нем нет обслуживания запросов traceroute (см. раздел 2.5).
После протоколов межсетевого уровня перейдем к протоколам транспортного уровня и первым из них рассмотрим протокол UDP.