logo
Мет по сетям (протоколам)

Стек протоколов tcp/ip

Несмотря на короткое с исторической точки зрения время существования компьютерных сетей и наличие разнообразны стеков, разработанных отдельными фирмами (например, стек IPX/SPX фирмы Novell) или международными организациями (например, Х.25 ITU-T), к настоящему моменту определился доминирующий набор протоколов, используемых как в LAN, так и сети Internet и названных «стек TCP/IP». Это обстоятельство, а также особенности программы обучения заставляют остановиться на рассмотрении только этого стека.

Стек TCP/IP получил своё название от основных протоколов TCP (Transmission Control Protocol) и IP (Internet Protocol), разработанных в 70-е г. в рамках проекта сети ARPANET Министерства обороны США. Основные принципы ТСР сформулированы Винтом Серфом (V. G. Cerf) и Бобом Каном (R. F. Kahn) в работе «A protocol for packet network interconnection» (IEEE Transaction on Communications, Vol. COM-22, № 5, 1974). Стек задумывался и разрабатывался как средство объединения компьютеров с различными характеристиками и операционными системами. Большое значение для популярности имела поддержка стека в операционной системе UNIX FreeBSD (Университет Беркли) .Модель стека была разработана до появления модели OSI и насчитывает меньшее количество уровней.

Уровни OSI

Протоколы стека TCP/IP

Уровни стека TCP/IP

Прикладной (Application)

HTTP, FTP, Telnet, …

Прикладной (Application)

Представительный (Presentation)

Сеансовый (Session)

Транспортный (Transport)

TCP, UDP

Транспортный (Transport)

Сетевой (Network)

IP, ARP, ICMP, RIP, OSPF, …

Сетевой (Network)

Канальный (Data Link)

Технологии (Сетевые интерфейсы) Ethernet, ATM, …

Физический (Physical)

Физический (Physical)

Приведём краткую характеристику основных протоколов стека.

HTTP (Hyper Text Transfer Protocol) – протокол передачи гипертекстовых документов используется для реализации приложений WWW (Word Wide Web) «всемирной паутины». Первый графический интерфейс для доступа к гипертекстовым документам появился в 1993 г. и носил название Mosaic (автор интерфейса Марк Андрессен (Mark Andressen) в 1995 г. основал Netscape Communications Corp.). В 1994 г. Европейский центр ядерных исследований (CERN — Conseil Europeen pour la Recherche Nucleaire) и Массачусетский технологический институт (M. I. T. — Massachusetts Institute of Technologies) основали некоммерческую организацию WWW Consortium для развития Web приложений.

FTP (File Transfer Protocol) – протокол передачи и приёма файлов.

Telnet – протокол эмуляции удалённого терминала.

TCP (Transmission Control Protocol) – протокол передачи данных с установлением соединения и обеспечением целостности доставки.

UDP (User Datagram Protocol) – протокол передачи данных без установления соединения и обеспечения целостности доставки.

IP (Internet Protocol) – базовый протокол доставки пакетов между узлами.

ARP (Address Resolution Protocol) – протокол распознавания адреса, предназначенный для определения МАС-адреса узла с заданным IP адресом. Помимо определения МАС адреса для заданного IP адреса представляет интерес и обратная задача – по МАС адресу определить IP адрес. Для решения этой задачи существует протокол RARP (Reverse ARP). Более подробную информацию о протоколах ARP, Proxy ARP и связанных с этими протоколами вопросах можно найти в [4, с. 93-98].

ICMP (Internet Control Message Protocol) – протокол пересылки диагностических сообщений о нарушениях работы сети.

RIP(RoutingInformationProtocol) – «простой» протокол обмена информацией между маршрутизаторами. Применяется в небольших сетях, т. к. допускает не более 14 маршрутизаторов и использует широковещательные (групповые) запросы о состоянии маршрутизаторов каждые 30 с. Существенным недостатком протокола является возможность движения пакетов по замкнутому маршруту — петле.

OSPF (Open Shortest Path First) – протокол обмена информацией между маршрутизаторами в больших сетях.

Пакет IP

Структура IP пакета.

32 бита (4 байта)

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

Версия

Длина заг.

Тип службы

Общая длина пакета

Идентификатор пакета

D

M

Смещение фрагмента

Время жизни

Протокол

Контрольная сумма

IP адрес источника

IP адрес получателя

Дополнительные параметры

Данные

……….

Данные

В связи с тем, что стек разрабатывался для операционной системы UNIX, пакет принято разбивать на 4 байтовые (32 битные) слова, содержимое которых приведено ниже.

Версия. Сейчас используется 4-я версия (IPv4) протокола. Наметившийся дефицит IP адресов разрешился принятием 6-й версии (IPv6) с 16 байтовыми (64-х битовыми) полями адресов, штатными мерами защиты и пр. В настоящее время поддержка (IPv6) опциональна.

Длина заголовка. Количество 4-х байтовых слов в заголовке пакета. Минимальное значение – 5 (заголовок минимальной длины – 20 байт). Более длинные заголовки используются, например, при фиксированных маршрутах и перечислении адресов узлов следования пакетов.

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

Общая длина пакета(заголовок + данные) в байтах. Максимальное количество данных в пакете составляет 216-1 — 20=65 535 – 20 ≈ 64 кбайт. Минимальное значение – 21.

Идентификатор– 16-и битовая метка пакета, используемая для идентификации пакета в случае его фрагментации.

D (Do not fragment)– флаг запрета фрагментации (D=1 – флаг установлен и фрагментация запрещена).

M (More fragments)– флаг не последнего фрагмента пакета (M=1 – флаг установлен и пакет не является последним).

Смещение фрагмента задаёт в 8-и байтовых словах положение блока данных текущего пакета от начала не фрагментированного (исходного) пакета. Значение для всех фрагментированных пакетов (кроме последнего) должно быть кратно 8. Максимальное значение поля – 213=8 192 (первый фрагмент имеет смещение 0), что в 8-и байтовых словах обеспечивает максимальную длину пакета 8*8 192= 64 356 байт (на 1 байт больше, чем даёт поле Общая длина пакета).

Время жизни (TTL — Time To Live) – счётчик, ограничивающий время жизни пакета. При прохождении каждого маршрутизатора вычитается 1 + время ожидания в очереди в целых секундах. В современных маршрутизаторах время ожидания в очереди существенно меньше секунды. В маршрутизаторе, где значение поля становится равным 0, пакет уничтожается, а отправителю посылается сообщение об этом. Максимальное значение поля – 255. Поскольку при правильной работе реальных сетей (даже глобальных) количество маршрутизаторов редко превышает 30, в некоторых реализациях стека ограничиваются значением 128 (например, MS Windows).

Протокол определяет вышестоящий протокол, которому предназначены данные пакета.

Контрольная сумма вычисляется в 4-х байтовых словах и только для заголовка. При обнаружении ошибки пакет уничтожается. В каждом маршрутизаторе контрольная сумма пересчитывается.

IP адрес источника – 4-х байтовый адрес узла, из которого пакет был послан.

IP адрес получателя – 4-х байтовый адрес узла, к которому пакет был послан.

Дополнительные параметры – необязательное поле, содержащее дополнительные параметры, например, адреса узлов следования пакета при фиксированном маршруте. Поле дополняется нулями до целого числа 4-х байтовых слов.

Данные – переносимая пакетом информация, полученная от протокола вышележащего уровня. Поле дополняется нулями до целого числа 4-х байтовых слов.

Адресация в IP сети

Адреса в IP сетях состоят из [1, с. 495-507; 2, с. 440-442; 3, с. 326-337; 4, с.67-74]:

физического адреса узла – MAC адреса (физический уровень);

сетевого адреса – IP адрес (сетевой/транспортный уровень);

символьный адрес – DNS (Domain Name System) имя (прикладной уровень) или доменное имя используется для удобства запоминания. Связь между DNS именем и IP адресом устанавливается службой DNS.

Остановимся на полном сетевом IPv4 адресе, который представляет собой три 4-х байтовых числа:

адрес. Например, 192.168.3.11

маска. Например, 255.255.255.0

шлюз. Например, 192.168.3.1

Используется несколько форм записи байтов IP адреса:

Десятичная нотация (наиболее употребительная) – значения чисел в каждом байте записываются как десятичные числа от 0 до 255=28-1 включительно.

Двоичная нотация — значения чисел в каждом байте записываются как двоичные числа от 0000 0000 до 1111 1111 включительно.

Шестнадцатиричная нотация — значения чисел в каждом байте записываются как шестнадцатиричные числа от 00 до FF включительно.

Маска служит для отделения в IP адресе номера сети от номера узла.

Смысл маски IP адреса можно понять, рассмотрев представленные на рисунке действия узла при приёме пакета.

На адрес назначения накладывается маска и определяется номер сети узла назначения. Термин «накладывается» означает побитовое логическое умножение (операция «И») 4-х байтового IP адреса на 4-е байта маски. Например,

IP адрес 192.168.3.187 (1100 0000.1010 1000.0000 0011.1011 1011)

маска 255.255.255.240 (1111 1111.1111 1111.1111 1111.1111 0000)

результат наложения (номер сети)

192.168.3.176 (1100 0000.1010 1000.0000 0011.1011 0000)

Если номер сети не «наш», пакет игнорируется. Если сеть «наша», то выполняется следующий шаг.

Проверяется:

совпадение своего номера узла и номера узла назначения или

наличие признака широковещательной рассылки. Адрес широковещательной рассылки имеет значения 1 в битах, относящихся к номеру узла (хоста). Для примера из предыдущей ссылки это 192.168.3.191 (1100 0000.1010 1000.0000 0011.1011 1111)

Если ни одно из условий не выполняется, то пакет игнорируется. Если хотя бы одно из условий выполняется, то выполняется следующий шаг.

Пакет обрабатывается согласно IP протоколу.

Шлюз – это адрес узла, которому посылается пакет при невозможности определения МАС адреса узла назначения.

Иногда используют более экономичную объединённую запись адреса и маски, указывая через знак «/» количество единичных старших разрядов маски. Для рассмотренного примера объединение адреса 192.168.3.11 и маски 255.255.255.0 это приводит к записи вида 192.168.3.11/24.

Иногда используют классовую систему деления адресов. По этой классификации сети делятся на 5 классов.

Класс А.Первый бит – 0. Маска 255.0.0.0. Диапазон от 1.0.0.0 до 126.255.255.254. Диапазон от 0.0.0.0 до 0.255.255.255 зарезервирован для специальных целей. Например, адрес 0.0.0.0 – внутренний адрес любого узла. Диапазон от 127.0.0.0 до 127.255.255.255 – для интерфейсов обратной связи. Например, адрес 127.0.0.1 – традиционная «заглушка» для тестирования стека. Всего различных номеров сетей – 125, в каждой сети может быть до (28*28*28-2)=16 777 214 узлов Номер х.0.0.0 используется для обозначения всей сети, а номер х.255.255.255 – для широковещательной рассылки. Для локальных сетей отведён диапазон от 10.0.0.0 до 10.255.255.255.

Класс B.Первые биты – 10. Маска 255.255.0.0. Диапазон от 128.0.0.0 до 191.255.255.254. Общее количество номеров сетей – 26*28=16 384, в каждой сети может быть (28*28-2) = 65 534 узла. Для локальных сетей отведён диапазон от 172.16.0.0 до 172.31.255.255 (172.16.0.0/12).

Класс С.Первые биты – 110. Маска 255.255.255.0. Диапазон от 192.0.0.0 до 223.255.255.254. Номеров сетей – 25*28*28= 2 097 152, в каждой сети может быть (28-2) = 254 узла. Для локальных сетей отведён диапазон от 192.168.0.0 до 192.168.255.255.

Класс D. Первые биты – 1110. Групповые/широковещательные адреса. Диапазон от 224.0.0.0 до 239.255.255.255. Для локальных сетей отведён диапазон от 239.0.0.0 до 239.255.255.255.

Класс Е.Первые биты – 11110. Зарезервированные адреса. Диапазон от 240.0.0.0 до 247.255.255.255.

В сетях с большим (свыше 100 компьютеров) количеством узлов целесообразным является использование протокола DHCP (Dynamic Host Configuration Protocol) автоматической раздачи IP адресов и одноимённой службы.