Протокол ARP (Address Resolution Protocol) Этот протокол используется для преобразования известных IP-адресов в адреса физические (или MAC-адреса) и допускает соединения с множественным доступом, такие как в Ethernet. Это выполняется с помощью посылки ARP-запроса, а также кэширования используемых адресов. IP-пакеты содержат как IP-адрес отправителя, так и IP-адрес получателя. Но необходимо также знать физический адрес узла-приемника. Протокол IP получает физический адрес станции назначения в ответ на посылку специального широковещательного пакетазапроса - так называемого запросного ARP-пакета. Этот пакет содержит IP-адрес хоста, с которым отправитель пытается соединиться. Все хосты в локальной сети, поддерживающие ARP, получают эти широковещательные сообщения. Хост, чей адрес содержится в полученном ARP-запросе, отвечает отправителю запроса посылкой ARPответа со своим физическим адресом. Таким образом, протокол ARP преобразует IP-адреса в физические (или аппаратные) адреса. Каждый раз, посылая ARP-запрос и получая на него ответ, узел сохраняет IP-адрес и соответствующий ему физический адрес в специальный кэш преобразования адресов. Термин «локальный ARP» используется при описании преобразования адресов, когда и запрашивающий узел, и узел назначения используют совместно один и тот же провод (или среду) для передачи сообщений. Прежде чем перейти к объяснению локального ARP, скажем пару слов о так называемых масках подсети. Эта маска определяет, находятся ли узлы в одной подсети1. Т.к. отправляющие и получающие узлы находятся в одной подсети, они должны использовать физический адрес для установления соединения друг с другом. Таким образом отправитель использует ARP для определения физического адреса станции-получателя. Протокол RARP (Reverse Address Resolution Protocol) Этот протокол в стеке TCP/IP выполняет функции, противоположные функциям протокола ARP, т.е. преобразует физические (или MAC-адреса) в соответствующие им IPадреса. Протокол RARP, как и протокол ARP, использует широковещательные сообщения для получения адресов. Но, как предполагает слово «обратный» (reverse), ответ на RARPзапрос содержит не MAC-адрес отправителя, а его IP-адрес. RARP-запросы используются бездисковыми компьютерами, которые во время загрузки не знают своего IP-адреса. Таким компьютерам необходим RARP-сервер с таблицей преобразования адресов или что-нибудь аналогичное, отвечающее на RARP-запросы. Протокол IP (Internet Protocol) Протокол Internet (Internet Protocol - IP) - основной протокол стека. IP не обеспечивает проверку возникновения ошибок или какую-либо надёжность, он просто передает данные по сети в форме пакетов. Надежность обеспечивается протоколом более высокого уровня, так называемым протоколом управления передачей (Transmission Control Protocol - TCP). IP обеспечивает наилучший маршрут доставки датаграмм без прямого соединения2. Другими словами, нет никакой гарантии, что пакеты прибудут по назначению. Также не гарантируется прием пакетов в той последовательности, в какой они были отправлены. Целостность и правильная последовательность данных, содержащихся в IP-пакетах может быть обеспечена только протоколом более высокого уровня. Это происходит потому, что контрольная сумма IP-пакета рассчитывается только для заголовка пакета и не рассчитывается для поля данных. Служба доставки "без прямого соединения" означает, что между адресами отправителя и получателя нет реальных проводов или путей соединения. Служба доставки, опирающаяся на связь, требует установления маршрута из реальных проводов, соединяющих отправителя и получателя , перед отправкой данных. TCP обеспечивает основанную на связи (и потому надежную) службу доставки. 2 1 IP определяет форму пакетов и способы управления ими при отправлении и приеме. Формат пакета называется IP-датаграммой. IP-датаграмма похожа на кадр, передаваемый по сети. Формат IP-пакета 32 бита Версия IH Тип сервиса L Идентификаци Флаги я Время жизни Протокол Длина пакета Смещение фрагмента Контрольная сумма заголовка Адрес отправителя Адрес получателя Опции (+ заполнение) Данные (переменная длина) Датаграмма имеет заголовок, содержащий различные поля, в том числе и IP-адреса получателя и отправителя, а также секцию данных. Датаграмма содержит поле версии (VERS), в которое помещается номер используемой версии протокола. Поле IHL содержит длину заголовка датаграммы в 32-разрядных словах (т.е. их число). Поле типа сервиса определяет какой протокол более высокого уровня будет обрабатывать эту датаграмму. Поле длины пакета определяет полную длину IP-пакета в байтах, включая данные и заголовок. Поле идентификации содержит целое число, определяющее порядковый номер датаграммы в последовательности. Это поле используется принимающим узлом для соединения в единое целое фрагментов датаграммы. Поле флагов - это трех битное поле. Младшие два бита из этих трех используются для контроля фрагментации3. Средний бит определяет, может ли пакет фрагментироваться. Самый младший бит показывает, является ли пакет последним в серии фрагментированных пакетов. Поле времени жизни (Time to Live - TTL) содержит счетчик, который уменьшается до нуля. После этого датаграмма уничтожается. Это предотвращает бесконечное зацикливание пакетов. Поле протокола показывает, какой протокол более высокого уровня получит входящий пакет после его IP-обработки. Каждому протоколу стека TCP/IP присвоен свой номер (например, протокол TCP имеет номер 6, а протокол UDP - номер 17). Этот номер и записывается поле протокола. Поле контрольной суммы заголовка содержит CRC для проверки целостности заголовка. Эта контрольная сумма рассчитывается только для обеспечения целостности заголовка IP-пакета. Она не используется для проверки целостности поля данных. Если данные потеряны или повреждены во время передачи, протокол IP не имеет средств сообщить от этом. Адрес отправителя определяет узел-источник пакета. Адрес получателя определяет узел, которому этот пакет отправлен. Поле опций позволяют протоколу IP выполнять такие функции, как обеспечение безопасности, тестирование сети, отладка и т.п. Фрагментация возникает когда данные слишком велики для обработки нижним уровнем физической сети. IP-протокол разделяет данные между несколькими IPпакетами. Эти пакеты последовательно пронумерованы, так что они могут быть соединены в правильном порядке при поступление по адресу назначения. 3 2 И наконец поле данных содержит информацию, поступившую с более высокого уровня (транспортного). Протокол ICMP (Internet Control Message Protocol) Этот протокол используется всеми хостами, работающими по TCP/IP. Сообщения ICMP преобразуются в IP-датаграммы и используются для посылки управляющих сообщений и сообщений об ошибках между хостами и маршрутизаторами (роутерами). ICMP выполняет в сетях IP определенные задачи. Причиной создания этого протокола была необходимость сообщать отправителю о сбоях в маршрутизации. ICMP используется, если хост пытается: узнать, к какой сети он подключен; узнать, доступен ли другой хост; узнать адрес маршрутизатора подсети; сообщить внешним сетям о перегрузках или обрывах связи. Например, если маршрутизатор получил пакет, который он не в состоянии доставить узлу назначения, то он отправляет отправителю ICMP-сообщение «Хост недоступен» (Host Unreachable). Причина здесь в том, что роутеру не известен маршрут к получателю. Информация ICMP-сообщений может использоваться протоколами более высокого уровня (транспортного уровня или уровня приложений) для устранения проблем при передаче. Эта же информация может быть использована сетевыми администраторами для выявления проблем в сети. Например, утилита ping использует ответные пакеты на ICMP-сообщение «Echo» для определения доступности хоста. Таким образом, эта утилита пригодна для диагностики IP-сетей и определения сбоев маршрутизаторов. ICMP предоставляет 11 сообщений, включая сообщения изменения маршрута, которые позволяют увеличить эффективность маршрутизации. Сообщение «Время истекло» (Time Exceeded) уведомляет отправителя, что датаграмма исчерпала время, отведенное ей для существования в сети (вспомните поле времени жизни - Time to Live - заголовка IPпакета). Сообщения «Router Solicitation» (поиск маршрутизатора) и «Router Advertisement» (ответ маршрутизатора) определяют адреса роутеров, непосредственно подключенных к подсети. Они позволяют новым узлам определить маску подсети, используемую в настоящий момент в межсетевых соединениях. Протоколы транспортного уровня Два протокола стека TCP/IP обеспечивают транспортный уровень: TCP UDP Протокол TCP (Transmission Control Protocol) TCP это протокол транспортного уровня, ориентированный на связь, который обеспечивает надежную передачу и прием данных. В то время, как протокол IP просто пересылает датаграммы из одной части сети в другую, протокол TCP обеспечивает установление соединения, контролирует последовательность пакетов, обрабатывает ошибки. Протокол TCP контролирует установку соединения с компьютером-приемником и гарантирует прием пакетов. Он выстраивает пакеты в правильную последовательность при получении их в пункте назначения. TCP контролирует потоки пакетов так, чтобы буфер компьютера-получателя смог принимать данные. Он поддерживает поле контрольной суммы, которая рассчитывается на основании как заголовка, так и поля данных (в отличие от протокола IP). 3 TCP не подтверждает получение поврежденных или потерянных данных и это является сигналом отправителю повторить передачу. Таким образом, TCP/IP - протокол, подходящий для поэтапной (session-based) передачи данных, клиент/серверных приложений, а также таких критических служб, как FTP (File Transmission Protocol протокол передачи файлов). Надежность TCP обеспечивается за счет уменьшения производительности при передаче данных. Дополнительные разряды резервируются заголовком TCP для обеспечения правильной последовательности информации. Поле контрольной суммы содержит дополнительные разряды для контроля целостности как заголовка, так и данных. Подтверждения приема создают дополнительный сетевой трафик. Формат TCP-пакета Порт-источник Порт-приемник Номер в последовательности Номер подтверждения Смещен Резерв Флаги Окно ие данных Контрольная сумма Указатель необходимых данных Опции (+ заполнение) Данные (переменная длина) Заголовок пакета TCP содержит поля порта-источника и порта-приемника, определяющие точки, в которых процессы высшего уровня источника и приемника получают услуги TCP. Поле порта-источника определяет протокол-источник более высокого уровня. Большинство широко используемых приложений высшего уровня имеют специфические номера портов, закрепленные за ними (например, FTP использует порт 21). Поле портаприемника также содержит номер порта, но на этот раз это высокоуровневый протокол назначения. Порт номера в последовательности определяет первый байт данных в текущем сообщении. В определенных обстоятельствах он может использоваться для определения исходного порядка пришедших данных. Поле контрольной суммы служит для контроля целостности как заголовка пакета, так и пришедших данных. Номер подтверждения содержит порядковый номер следующего байта данных, которые хочет получить приемник. Поле смещения данных показывает количество 32-разрядных слов в TCP-заголовке. Поле флагов содержит управляющую информацию, такую как установка и окончание соединения. Поле окна определяет размер буфера для входящих данных. Поле опций определяет различные опции TCP. Например, можно указать максимальный размер TCP-сегмента. Пересылка данных с помощью TCP Для пересылки данных с использованием TCP компьютер-отправитель устанавливает соединение с компьютером назначения. Компьютер назначения должен быть готов к получению данных. Чтобы упростить процесс установки соединения, TCP использует трехэтапную последовательность действий. Трехэтапный процесс установки TCPсоединения Хост A Хост B 4 Посылка SYN [seq Прием SYN [seq = = x] x] Прием SYN [seq = Посылка SYN [seq y, = y, ack = ack = x+1] x+1] Посылка ACK [ack Прием ACK [ack = = y+1] y+1] Обмен номером в последовательности и номером подтверждения в течение всего соединения дает возможность восстановления потерянных или поврежденных данных. Пусть хост А хочет установить соединение с хостом В. Сначала хост А посылает первый номер в последовательности x из А в B. Хост B получает первый номер, увеличивает его на единицу и отсылает его назад как подтверждение, а также посылает свой собственный номер последовательности y. Хост А получает пакет с опознавательным числом , которое соответствует посланному им x, увеличенным на 1. После этого хост отправляет обратно к хосту В присланный им номер последовательности, предварительно увеличив его на 1. Соединение считается открытым и хосты могут обмениваться данными. Размер окна определяет, какое количество сообщений может быть послано до получения подтверждения. После того, как хост отправил количество сообщений, равное размеру окна станции-приемника, он должен получить подтверждение приема, прежде чем отправлять следующие сообщения. Размер окна может динамически изменятся в течение TCP-сессии. Это известно как скользящее окно, позволяющее повысить эффективность пропускных каналов. Размер окна, равный 1, означает, что прием каждого пакета должен быть подтвержден перед посылкой следующего. Это приводит к неэффективному использованию пропускной способности канала и увеличению сетевого трафика. Большее окно позволяет передать больше данных перед ожиданием подтверждения, что влечет и увеличение производительности. Плавающее окно TCP Источник Посылка 1 Приемник Посылка 2 Прием 1 Посылка 3 Прием 2 Прием 3 Посылка подтверждения 4 Прием подтверждения 4 Посылка 4 Посылка 5 Прием 4 Посылка 6 Прием 5 Прием 6 Посылка подтверждения 7 Прием подтверждения 7 Размер окна = 3 TCP «предсказывает» подтверждения, т.е. подтверждающий номер соответствует пакету, который ожидается следующим. Как видно на рисунке, передающий компьютер имеет размер окна, равный 3. Т.е. он может посылать три пакета без получения подтверждения 5 перед посылкой четвертого. Если источник не получает подтверждения на посылку четвертого пакета определенное время, он автоматически повторяет передачу первых трех. Т.е. не получившие определенное время подтверждения пакеты посылаются заново. Протокол UDP (User Datagram Protocol) Этот протокол не требует соединения и «ненадёжный», т.е. это простой протокол передает пакеты без подтверждений и гарантированной доставки. Здесь совершенно отсутствует проверка правильности доставки датаграмм по назначению. Т.е. контроль ошибок и повторная передача выполняются протоколами более высокого уровня. UDP используется тогда, когда надежностные механизмы TCP не нужны. Например, для передачи данных через высоконадежную сеть. UPD, так же как и TCP, использует номера портов (или сокетов) для передачи информации протоколам более высокого уровня - уровня приложений. Номера портов Уровень приложений F T P T E L N E T S M T P D N S T F T P S N M P 21 23 25 53 69 161 Номера портов Транспортн TCP UDP ый уровень UDP определяет множество приложений-приемников как порты протокола. Каждому приложению на компьютере, которое хочет принимать и посылать информацию, присвоен 16-разрядный номер, называемый портом этой программы. Есть два типа портов: обычный порт; порт с динамическими границами. Номера обычных портов присваиваются широко используемым приложениям. Например, протокол передачи файлов (FTP) использует номер порта назначения 21. Порты с динамическими границами не имеют фиксированных номеров. Поэтому при обработке запроса приложения необходимо определить порт, который оно использует. Например, клиентский компьютер, запрашивающий FTP-сессию может первый раз получить номер порта 1026, а в следующий раз - 1252. UDP разрешает клиентским приложениям, стоящим на машинах с разными IP-адресами использовать один и тот же номер порта. Пакеты UDP доставляются приложениям с соответствующим как IP-адресом, так и номером порта. Датаграммы UDP заключаются в один или несколько IP-пакетов. IP-адрес позволяет отправить IP-пакеты нужному узлу. IP-программы из IP-пакета извлекают пакет UDP и передает его программе уровня UDP. А уже программы уровня UDP передают полученные данные в нужный порт. Число бит 16 Портисточник Формат UDP-сегмента 16 16 16 Портприемни Длина Контрол ьная Данные 6 к сумма Нет полей номера в последовательности и номера подтверждения Заголовок UDP имеет только четыре поля - номер порта-источника, номер портаприемника, длины и контрольной суммы. Поле длины содержит длину заголовка UDP и данных. Поле контрольной суммы может не заполняться. Оно предназначено для проверки целостности пакета. Когда, все же, оно используется, контрольная сумма рассчитывается на основе как заголовка, так и данных. UDP не посылает подтверждений. Это оставлено более высокоуровневым протоколам. UDP поддерживает широковещательные сообщения. Таким образом один хост может общаться со многими. Протокол FTP (File Transmission Protocol) Протокол передачи файлов (File Transmission Protocol - FTP) предоставляет возможности по пересылке файлов между компьютерными системами. FTP позволяет выполнять удаленно следующие действия: подключиться к системе; просмотреть каталоги; выполнять команды; выполнять операции с файлами. Однако FTP не предоставляет прозрачного сервиса. Когда вы подключитесь по FTP к удаленной системе, вы увидите файлы и каталоги, организованные по unix-подобной древовидной структуре. Вы можете перемещаться из одного каталога в другой с помощью команды cd. Простейший протокол передачи файлов (Trivial File Transmission Protocol - TFTP) является упрощенной версией протокола FTP, позволяющей передавать файлы между компьютерами. Маршрутизаторы производства компании Cisco могут загружать операционные системы и информацию о конфигурации с серверов TFTP. Например, если операционная система маршрутизатора, находящаяся во flash-памяти, повредится, то маршрутизатор загрузит копию с сервера TFTP. Протокол ICMP (Internet Control Message Protocol) Этот протокол используется всеми хостами, работающими по TCP/IP. Сообщения ICMP преобразуются в IP-датаграммы и используются для посылки управляющих сообщений и сообщений об ошибках между хостами и маршрутизаторами (роутерами). ICMP выполняет в сетях IP определенные задачи. Причиной создания этого протокола была необходимость сообщать отправителю о сбоях в маршрутизации. ICMP используется, если хост пытается: узнать, к какой сети он подключен; узнать, доступен ли другой хост; узнать адрес маршрутизатора подсети; сообщить внешним сетям о перегрузках или обрывах связи. Например, если маршрутизатор получил пакет, который он не в состоянии доставить узлу назначения, то он отправляет отправителю ICMP-сообщение «Хост недоступен» (Host Unreachable). Причина здесь в том, что роутеру не известен маршрут к получателю. Информация ICMP-сообщений может использоваться протоколами более высокого уровня (транспортного уровня или уровня приложений) для устранения проблем при передаче. Эта же информация может быть использована сетевыми администраторами для выявления проблем в сети. 7 Например, утилита ping использует ответные пакеты на ICMP-сообщение «Echo» для определения доступности хоста. Таким образом, эта утилита пригодна для диагностики IP-сетей и определения сбоев маршрутизаторов. ICMP предоставляет 11 сообщений, включая сообщения изменения маршрута, которые позволяют увеличить эффективность маршрутизации. Сообщение «Время истекло» (Time Exceeded) уведомляет отправителя, что датаграмма исчерпала время, отведенное ей для существования в сети (вспомните поле времени жизни - Time to Live - заголовка IPпакета). Сообщения «Router Solicitation» (поиск маршрутизатора) и «Router Advertisement» (ответ маршрутизатора) определяют адреса роутеров, непосредственно подключенных к подсети. Они позволяют новым узлам определить маску подсети, используемую в настоящий момент в межсетевых соединениях. 8