Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Расчетное задание / КМ2 / Ответы КМ2

.pdf
Скачиваний:
4
Добавлен:
16.05.2024
Размер:
17.54 Mб
Скачать

этих документах даются технические спецификации и точные объяснения по многим вопросам. Определенные документы RFC переводятся в статус стандартов Интернета. Официальную документацию по Internet, можно найти в [10,11].

ICANN возникла в 1998 году и ее задачей является управлением пространством IP адресов, назначения адресных блоков региональным Интернет регистраторам, назначение портов транспортных протоколов, управление верхним уровнем имен системы DNS, что включает работу основных корневых серверов DNS и другие похожие задачи. Несмотря на то, что ICANN управляется международным советом директоров, правительство США продолжает играть главенствующую роль в одобрении любых изменений корневой системы DNS, которая является ее основой.

5.2.Стек протоколов TCP/IP

Протоколом называется стандартизированный язык для обмена компьютерами данными по сети. Для соединения компьютеров необходимо использовать на них один и тот же протокол(ы). Набор протоколов используемых в Интернете для выполнения его основных функций называют стеком протоколов TCP/IP. В данном стеке обычно выделяют 4-е уровня.

1 Прикладной. Используется протоколы различных пользовательских приложений Интернета. Например: http, ftp, DNS и т.д.

2Транспортный. Протоколы транспортного уровня обеспечивают прозрачную доставку данных между двумя прикладными процессами. На транспортном уровне работают два основных протокола: UDP и TCP.

3Сетевой. Основу этого уровня составляет IP-протокол, который отвечает за правильную доставку через Интернет пакетов от одного компьютера к другому.

4Физический или канальный уровень. Обеспечивает доступ к конкретной физической среде передачи данных. При наиболее частом использовании физической среды на основе Ethernet (перевод с английского – эфирная сеть) для преобразования IP адресов в физические (MAC) адреса используется протокол ARP. IP адреса более подробно будут описаны ниже в рассмотрении IP протокола. Они часто называются логическими и назначаются пользователем. MAC адреса жестко связаны с сетевым адаптером, являются уникальными и назначаются производителем адаптера при изготовлении и

71

являются 6-байтовым числом. При наличии другой физической среды данных возможно применение иных протоколов кроме ARP.

Иногда выделяют большее количество уровней в стеке TCP/IP, однако принципиально это не меняет общую картину.

При обработке передаваемой через Интернет информации по представленным выше уровням выполняются следующие основные операции. Все данные передаются в виде пакетов. Пакеты формируются соответствующими протоколами. Причем каждый протокол может проводить дополнительное разбиение данных на фрагменты (пакеты). Каждый пакет имеет заголовок и может иметь окончание. В них содержится необходимая информация для обработки пакета в рамках соответствующего протокола. Данные, формируемые более верхними или ранними в иерархии обработки протоколами, вставляются в пакеты, формируемые на нижнем уровне.

В процессе обработки при посылке данных от некого приложения с одного компьютера на другой выполняются следующие действия – рис 16.

заголовок

прикладного

уровня

прикладной уровень - данные приложения (браузера)

заголовок

TCP или UDP

транспортный уровень (TCP/UDP) - данные с прикладного уровня

заголовок сетевой уровень (IP) - данные с транспортного уровня

IP

заголовок

физический уровень (Ethernet и т.п.) - данные с сетевого уровня

окончание

Ethernet

 

Ethernet

 

 

 

Рис. 16. Работе протоколов стека TCP/IP при посылке и приеме данных.

В процессе формирования окончательного пакета данных происходит последовательная обработка изначальных данных некого приложения соответствующими

72

протоколами стека TCP/IP. Каждый протокол соответствующего уровня добавляет свой заголовок и, если необходимо, окончание. В результате получается увеличенный пакет данных на величину добавленных заголовков и окончаний. Заголовки содержат служебную информацию каждого протокола, определяемую на основе типа данных, адресов источника и куда надо доставить и т.п.

В процессе доставки и при приходе информации на компьютер назначения происходит обратный процесс. Каждый протокол, начиная с физического уровня, анализирует свои заголовки и производит соответствующую обработку пакета данных. После чего текущий заголовок отбрасывается и данные передаются следующему уровню стека TCP/IP. В конце концов, данные передаются тому приложению, с которым устанавливается связь через Интернет.

Далее рассмотрим более подробно основные моменты функционирования протоколов стека TCP/IP.

5.2.1.Протоколы TCP и UDP

5.2.1.1.Порты

Втранспортных протоколах UDP и TCP используется понятие – порты. Они идентифицируют номер системного ресурса, выделяемого приложению, выполняемому на одном компьютере, для связи с приложением, выполняемом на другом компьютере. Другими словами на транспортном уровне номер порта служит адресом для идентификации конкретного приложения.

Анализируя заголовок пакета данных, полученного от сетевого уровня, транспортный протокол определяет по номеру порта получателя, какому из прикладных процессов направлены данные, и передает эти данные соответствующему прикладному процессу. Номера портов получателя и отправителя записываются в заголовок модулем транспортного протокола при отправке данных.

Порты могут принимать значение от 0-65535 – т.е. занимают размер 2 байта. Номера портов назначаются следующим образом. Часть портов является стандартными, в первую очередь для того, чтобы при подсоединении к компьютеру по сети внешние приложения знали бы, где соответствующие общеизвестные службы в сетевых ресурсах присутствуют. Например, номер 21 закреплен за сервисом FTP, 23 - за службой telnet, 80 -

73

за http сервером. Эти номера иногда называются привилегированными и резервируются обычно до 1024. Менее известным службам могут быть выбраны порты выше 1024, хотя некоторые номера там также являются зарезервированными. Оба транспортных протокола

UDP и TCP используют порты, нумерация которых независима.

Спонятием порта тесно связан другой термин – сокет. Этот термин появился в исходной спецификации TCP (RFC 793). Название это было дано по аналогии с гнёздами на аппаратуре, теми самыми, куда подключают штепсели. Соответственно этой аналогии, можно связать два "гнезда", и передавать между ними данные. Каждое гнездо принадлежит определённому хосту – компьютеру, который имеет уникальный IP (Internet Packet) адрес (см. ниже). Гнезда (сокет) базируются на IP адресе и том или ином порте. Если порт на компьютере уже занят каким-то сокетом, то ещё один сокет там образовать уже не получится. Таким образом, после того, как сокет установлен, он имеет вполне определённый адрес, символически записывающийся так [IP адрес]:[port], к примеру — 127.0.0.1:8888 (означает, что сокет занимает порт 8888 по адресу (хосту) 127.0.0.1). При образовании Интернетсоединения пара [IP адрес]:[port] на каждом компьютере соединения однозначно его определяет.

Сокет существует в двух состояниях – пассивном и активном. Изначально при запуске некой Интернет-службы на компьютере по определенному порту образуется пассивный сокет – рис 17. При подсоединении внешнего компьютера по данному порту пассивный сокет образует новый активный. Таким образом, по конкретному порту может быть множество активных сокетов и только один пассивный.

5.2.1.2. UDP

Протокол UDP расшифровывается как User Datagram Protocol — протокол пользовательских датаграмм. Это является протоколом транспортного уровня. Он является одним из самых простых и не обеспечивает гарантированную доставку данных. Т.е. при посылке данных по этому протоколу мы не получаем подтверждения об их доставке, как в протоколе TCP. Хотя это является с одной стороны недостатком UDP, однако, данный протокол гораздо быстрее и эффективнее доставляет данные для приложений, которым требуется большая пропускная способность линий связи, либо требуется малое время доставки данных.

Основываясь на этих соображениях , можно легко выделить основные направления использования UDP. В первую очередь это те приложения, где потеря небольшого

74

количества данных не вызывает их существенный сбой. Например, это могут быть приложения IP-телефонии, передачи данных мультимедиа и т.п. Другой вариант использования UDP может быть основан на обеспечении гарантированной доставки данных иным способом. Например, использование протокола в рамках локальной сети с малой загрузкой и надежной физической средой. Во всех других случаях необходимо использовать протокол TCP.

 

 

 

 

 

хост

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

пассивный

 

 

 

 

 

 

 

 

 

 

 

 

 

порт 23

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

активный

 

 

 

 

 

активный

 

 

 

 

 

 

 

 

 

 

 

активный

 

 

 

 

 

активный

 

 

 

 

 

 

 

 

 

 

 

активный

 

 

 

 

 

активный

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 17. Образование пассивного и активных сокетов по 23-му порту

Конкретная реализация, а именно заголовок пакета UDP, достаточно простая. Наиболее важная информация касается портов источника данных и приемника. Также отправитель может рассчитать контрольную сумму данных. Однако, в отличие от протокола TCP это значение носит только вспомогательный характер. Если отправитель все же рассчитал контрольную сумму, а получатель определил наличие ошибки, UDP пакет данных молча уничтожается и сообщение об ошибке для отправителя не генерируется.

5.2.1.3. TCP

TCP является более сложным протоколом по сравнению с UDP и позволяет обеспечить больше функций для транспортного уровня. Поэтому он наиболее часто используется в Интернете да и просто в сетевых приложениях на транспортном уровне. Основная спецификация TCP находится в RFC 793.

75

TCP позволяет установить поток данных между компьютерами, гарантируя целостность доставки данных. Он уведомляет отправителя о результате передачи данных, что очень выгодно отличает его от UDP. Так же иногда говорят, что TCP является протоколом "основанным на соединении" (connection-oriented). Это означает, что два приложения, использующие TCP (как правило, это клиент и сервер), должны установить TCP соединение друг с другом, после чего у них появляется возможность обмениваться данными.

TCP обеспечивает свою надежность благодаря следующему:

1Данные от приложения разбиваются на блоки определенного размера, которые будут отправлены. Блок информации, который передается от TCP в IP, называется сегментом.

2Когда TCP посылает сегмент, он устанавливает таймер, ожидая, что с удаленного конца придет подтверждение на этот сегмент. Если подтверждение не получено по истечении времени, сегмент передается повторно.

3Когда TCP принимает данные от удаленной стороны соединения, он отправляет подтверждение.

4TCP осуществляет расчет контрольной суммы для своего заголовка и данных. Это контрольная сумма, рассчитываемая на концах соединения, целью которой является выявить любое изменение данных в процессе передачи. Если сегмент прибывает с неверной контрольной суммой, TCP отбрасывает его и подтверждение не генерируется. (Ожидается, что отправитель отработает таймаут и осуществит повторную передачу.)

5Так как TCP сегменты передаются в виде IP пакетов, а они могут прибывать беспорядочно, также беспорядочно могут прибывать и TCP сегменты. После получения данных TCP может по необходимости изменить их последовательность, в результате приложение получает данные в правильном порядке.

6Так как IP пакет может быть продублирован, то принимающий TCP должен отбрасывать продублированные данные.

7TCP осуществляет контроль потока данных. Каждая сторона TCP соединения имеет определенное пространство буфера. TCP на принимающей стороне позволяет удаленной стороне посылать данные только в том случае, если получатель может поместить их в буфер. Это предотвращает от переполнения

буферов медленных компьютеров быстрыми. 76

Заголовок сформированного пакета данных по протоколу TCP имеет более сложную структуру. Его стандартный размер 20 байт, однако, с опциями может быть увеличен до 60 байт. Каждый TCP сегмент содержит номер порта (port number) источника и назначения, с помощью которых идентифицируются отправляющее и принимающее приложения. Эти два значения вместе с IP адресом источника и назначения в IP заголовке уникально идентифицируют каждое соединение.

Поток передаваемых данных между компьютерами в рамках TCP протокола рассматривается как последовательность байтов. Номер каждого байта последовательности идентифицирует его в потоке данных от отправляющего конца TCP соединения к принимающему. Т.е. TCP нумерует каждый байт номером последовательности. Номер последовательности представляет собой 32-битное число, которое переходит через 0, по достижению значения 232 - 1.

Так как каждый байт, который участвует в обмене, пронумерован, номер подтверждения получения отправленного пакета - ACK - это следующий номер последовательности, который ожидает получить отправитель подтверждения. Это номер последнего успешно принятого байта данных плюс 1. В TCP нет возможности селективного подтверждения принятых данных.

TCP предоставляет для прикладного уровня полнодуплексный режим связи. Это означает, что данные могут передаваться в каждом направлении независимо от другого направления. Однако на каждом конце соединения необходимо отслеживать номер последовательности данных, передаваемых в каждом направлении.

Контроль потока данных TCP осуществляется на каждом конце линии связи с использованием размера скользящего окна (window size) . Это количество байт, начинающиеся с указанного в поле номера подтверждения, которое приложение собирается принять. Размер поля 16-бит, что ограничивает максимальный размер окна в 65535 байт. Скользящее окно используется для повышения пропускной способности протокола, которая основывается на следующих соображениях. Для того, чтобы можно было организовать повторную передачу искаженных данных, отправитель нумерует отправляемые единицы передаваемых данных (пакеты). Для каждого пакета отправитель ожидает от приемника так называемую положительную квитанцию - служебное сообщение, извещающее о том, что исходный пакет был получен и данные в нем оказались корректными. Время этого ожидания ограничено - при отправке каждого пакета передатчик запускает таймер, и если по его истечению положительная квитанция не

77

получена, то пакет считается утерянным. Если мы потребуем, что после посылки каждого пакета источник ожидал квитанции о его доставке, то нетрудно видеть, что производительность протокола будет сильно занижена и особенно это заметно на низкоскоростных каналах связи.

Для того чтобы этого избежать в некоторых протоколах и в том числе в TCP источнику разрешается передать некоторое количество пакетов в непрерывном режиме, то есть в максимально возможном для источника темпе, без получения на них ответных квитанций (подтверждений). Количество пакетов, которые разрешается передавать таким способом, соответствует выше указанному размеру скользящего окна. Пусть он устанавливается размером R. Таким образом, источник может передать с пакета номером 1 еще R-1 пакетов до получения подтверждения на пакет 1. Если же за это время квитанция на пакет 1 так и не пришла, то процесс передачи приостанавливается, и по истечению некоторого тайм-аута пакет 1 считается утерянным (или квитанция на него утеряна) и он передается снова. Этот алгоритм называют алгоритмом скользящего окна.

Выбор времени ожидания (тайм-аута) очередного подтверждения является важной задачей, результат решения которой влияет на производительность протокола TCP. Таймаут не должен быть слишком коротким, чтобы по возможности исключить избыточные повторные передачи, которые снижают полезную пропускную способность системы. Но он не должен быть и слишком большим, чтобы избежать длительных простоев, связанных с ожиданием несуществующего или "заблудившегося" подтверждения.

При выборе величины тайм-аута должны учитываться скорость и надежность физических линий связи, их протяженность и многие другие подобные факторы. В протоколе TCP тайм-аут определяется с помощью достаточно сложного адаптивного алгоритма.

Варьируя величину окна, можно повлиять на загрузку сети. Чем больше окно, тем большую порцию неподтвержденных данных можно послать в сеть. Если сеть не справляется с нагрузкой, то возникают очереди в промежуточных узлах-маршрутизаторах и в конечных узлах-компьютерах.

При переполнении приемного буфера конечного узла "перегруженный" протокол TCP, отправляя подтверждение, помещает в него новый, уменьшенный размер окна. Если он совсем отказывается от приема пришедших данных, то в нем указывается окно

78

нулевого размера. После приема подтверждения с нулевым значением окна протоколотправитель время от времени делает контрольные попытки продолжить обмен данными. Если протокол-приемник уже готов принимать информацию, то в ответ на контрольный запрос он посылает подтверждение с указанием ненулевого размера окна.

Контрольная сумма, упомянутая ранее, охватывает собой весь TCP сегмент: TCP заголовок и TCP данные. Это обязательное поле, которое должно быть рассчитано и сохранено отправителем, а затем проверено получателем.

5.2.2. Протокол IP

Протокол IP является основой стека протоколов TCP/IP, да и всего Интернет. В то же время по сравнению с протоколом TCP это не надежный протокол. Т.е. не существует гарантии того, что IP пакет успешно достигнет пункта назначения. Однако IP позволяет обработать некоторые нежелательные события. Когда что-нибудь идет не так, как хотелось бы, как например, временное переполнение буфера у маршрутизатора, IP применяет простой алгоритм обработки ошибок - он отбрасывает пакет и старается послать ICMP сообщение отправителю. Любая требуемая надежность должна быть обеспечена протоколами верхних уровней (например TCP).

Протокол IP не содержит никакой информации о продвижении пакетов. Каждый пакет обрабатывается независимо от других. Это также означает, что может быть доставлен испорченный пакет. Если источник отправляет два последовательных пакета A и B в один и то же пункт назначения, то каждый из них путешествует независимо и может пройти по разным маршрутам. Может случиться, что пакет B прибудет раньше, чем A.

Стандартный размер IP заголовка составляет 20 байт, если не присутствуют опции. В настоящее время наиболее часто используется версия протокола - 4, который поэтому иногда называется IPv4. Наибольший интерес представляют собой следующие поля.

Поле времени жизни заголовка IP (TTL - time-to-live) содержит максимальное количество пересылок (маршутизаторов), через которые может пройти пакет. Это поле ограничивает время жизни пакета. Значение устанавливается отправителем (как правило, 32 или 64) и уменьшается на единицу каждым маршрутизатором, который обрабатывает пакет. Когда значение в поле достигает 0, пакет удаляется, а отправитель уведомляется об этом с помощью ICMP сообщения. Подобный алгоритм предотвращает зацикливание пакетов в петлях маршрутизации.

79

Контрольная сумма заголовка рассчитывается только для IPзаголовка. Она не включает в себя данные, которые следуют за заголовком. Если в результате проверки на компьютере назначения получилась ошибка контрольной суммы, то IP отбрасывает принятый пакет. Сообщение об ошибке не генерируется. Теперь задача протоколов верхних уровней каким-либо образом определить, что пакет отсутствует, и обеспечить повторную передачу.

Наиболее важными в IP заголовке являются поля, указывающие IP адреса источника и назначения. IPv4 использует 32-х битные (четырёхбайтные) адреса, ограничивающие адресное пространство 4 294 967 296 возможными уникальными адресами. Для удобства адреса записываются в виде четырех десятичных чисел, разделенных точками: 134.230.71.1.

IPадрес является уникальным 32-битным идентификатором IP-интерфейса компьютера в Интернете. В принципе компьютер может иметь несколько IPадресов, например, когда он выполняет функцию маршрутизатора и имеет несколько сетевых интерфейсов. IPадрес состоит из номера IP-сети, который занимает старшую область адреса, и номера конкретного компьютера в этой сети, который занимает младшую часть. Он назначается администратором во время конфигурирования компьютеров или динамически при подключении к сети. Номер сети может быть выбран администратором произвольно, либо назначен по рекомендации специального подразделения Интернета, если сеть должна работать как его составная часть. Обычно провайдеры услуг получают диапазоны адресов, а затем распределяют их между своими абонентами.

Т.к. адреса основываются на байтовом представлении, то на каждое из десятичных чисел накладываются соответствующие ограничения. Также в адресах имеются специальные зарезервированные числа. Так адрес компьютера с числами равными 255 используется для многоадресного вещания в данной сети. Например: 10.255.255.255 есть широковещательный адрес сети класса А; 172.17.255.255 является широковещательным адресом сети класса В.

Также 0 используется для обозначения данного компьютера и данной сети. Т.е. если IР адрес состоит только из двоичных нулей, то он обозначает адрес того узла, который сгенерировал этот пакет. Если номер компьютера в IP адресе равен 0, то данный адрес используется для обозначения данной сети. Например: 10.0.0.0 является адресом сети класса A, потому что все биты адреса узла равны 0; 172.17.0.0 есть адрес сети класса

B.

80

Соседние файлы в папке КМ2