Протокол надежной доставки сообщений TCP (Transmission Control Protocol).
Сверху - неструктурированный поток байт, вниз - сегменты (осн. единица TCP). Договор о макс. длине сегмента (не должен превышать поле данных IP дейтаграммы).
Порты и установление TCP-соединений.
Установление логического соединения. Адрес каждой оконечной точки включает IP адрес и номер порта TCP. Одна оконечная точка может участвовать в нескольких соединениях.
2.3 Проблемы классической схемы
В середине 80-х годов Internet впервые столкнулся с проблемой переполнения таблиц магистральных маршрутизаторов. Решение, однако, было быстро найдено -- подсети устранили проблему на несколько лет. Но уже в начале 90-х к проблеме большого количества маршрутов прибавилась нехватка адресного пространства. Ограничение в 4 миллиарда адресов, заложенное в протокол и казавшееся недосягаемой величиной, стало весьма ощутимым. В качестве решения проблемы были одновременно предложены два подхода -- один на ближайшее будущее, другой комплексный и долгосрочный. Первое решение -- это внедрение протокола бесклассовой маршрутизации (CIDR), к которому позже присоединилась система NAT. Долгосрочное решение -- это протокол IP следующей версии. Он обозначается, как IPv6, или IPng (Internet Protocol next generation). В этой реализации протокола длина адреса увеличена до 16-ти байтов (128 бит!), исключены некоторые элементы действующего протокола, которые оказались неиспользуемыми. Новая версия обеспечит, как любят указывать, плотность в 3 911 873 538 269 506 102 IP адресов на квадратный метр поверхности Земли. Однако то, что и в 2000-м году протокол все еще проходил стандартизацию, и то, что протокол CIDR вместе с системой NAT оказались эффективным решением, заставляет думать, что переход с IPv4 на IPng потребует очень много времени. Появление этой технологии было вызвано резким увеличением объема трафика в Internet и, как следствие, увеличением количества маршрутов на магистральных маршрутизаторах. Так, если в 1994 году, до развертывания CIDR, таблицы маршрутизаторов содержали до 70 000 маршрутов, то после внедрения их количество сократилось до 30 000. На сентябрь 2002, количество маршрутов перевалило за отметку 110 000! Можете себе представить, сколько маршрутов нужно было бы держать в таблицах сегодня, если бы не было CIDR! Что же представляет собой эта технология? Она позволяет уйти от классовой схемы адресации, эффективней использовать адресное пространство протокола IP. Кроме того, CIDR позволяет агрегировать маршрутные записи. Одной записью в таблице маршрутизатора описываются пути ко многим сетям. Суть технологии CIDR состоит в том, что каждому поставщику услуг Internet (или, для корпоративных сетей, какому-либо структурно-территориальному подразделению) должен быть назначен неразрывный диапазон IP-адресов. При этом вводится понятие обобщенного сетевого префикса, определяющего общую часть всех назначенных адресов. Соответственно, маршрутизация на магистральных каналах может реализовываться на основе обобщенного сетевого префикса. Результатом является агрегирование маршрутных записей, уменьшение размера таблиц маршрутных записей и увеличение скорости обработки пакетов. Допустим, центральный офис компании выделяет одному своему региональному подразделению сети 172.16.0.0/16 и 172.17.0.0/16, а другому -- 172.18.0.0/16 и 172.19.0.0/16. У каждого регионального подразделения есть свои областные филиалы и из полученного адресного блока им выделяются подсети разных размеров. Использование технологии бесклассовой маршрутизации позволяет при помощи всего одной записи на маршрутизаторе второго подразделения адресовать все сети и подсети первого подразделения. Для этого указывается маршрут к сети 172.16.0.0 с обобщенным сетевым префиксом 15. Он должен указывать на маршрутизатор первого регионального подразделения. По своей сути технология CIDR родственна VLSM. Только если в случае с VLSM есть возможность рекурсивного деления на подсети, невидимые извне, то CIDR позволяет рекурсивно адресовать целые адресные блоки. Использование CIDR позволило разделить Internet на адресные домены, внутри которых передается информация исключительно о внутренних сетях. Вне домена используется только общий префикс сетей. В результате многим сетям соответствует одна маршрутная запись.
2.4 Примеры организации адресации в IP сетях
В конце статьи хотелось бы привести практические примеры по затронутым в статье темам. Проектирование адресной схемы требует от специалиста тщательной проработки многих факторов, учета возможного роста и развития сети. Начнем с примера разбиения сети на подсети. При любом планировании нужно знать, сколько подсетей необходимо сегодня и может понадобиться завтра, сколько узлов находится в самой большой подсети сегодня и сколько может быть в будущем. Кроме того, следует разработать хотя бы схематическую топологию сети с указанием всех маршрутизаторов и шлюзов. Хорошей практикой является резервирование ресурсов на будущее. Так, если в самой большой подсети находится 60 узлов, не следует выделять подсеть размерностью в 26 - 2 (=62) узла! Не скупитесь, стоимость решения возможной проблемы будет больше, нежели стоимость выделения в два раза большего блока адресов. Однако не нужно впадать и в другую крайность.
Пример 1
Организации выделен блок адресов 220.215.14.0/24. Разбить блок на 4 подсети, наибольшая из которых насчитывает 50 узлов. Учесть возможный рост в 10%. На первом этапе необходимое число подсетей мы округляем в большую сторону к ближайшей степени числа 2. Поскольку в данном примере число необходимых подсетей равно 4, округлять не нужно. Определим количество бит, нужных для организации 4 подсетей. Для этого представим 4 в виде степени двойки: 4 = 22 . Степень -- это и есть количество бит отводимых для номера подсети. Так как сетевой префикс блока равен 24, то расширенный сетевой префикс будет равен 24 + 2 = 26.
Сетевой префикс | Подсеть | Узел | ||||
0 | 8 | 16 | 24 25 | 31 | ||
220.215.14.0/26 | 10010000 | 10010000 | 00001110 | 0 0 | 000000 | |
Расширенный сетевой префикс |
Оставшиеся 32 - 26 = 6 бит будут использоваться для номера узла. Проверим, сколько узлов можно адресовать 6-ю битами: 26 - 2 = 62 узла. Достаточно ли это для 10% роста? 10% от 50 узлов -- это 5 узлов, а 55 узлов меньше возможных 62-х. Следовательно, два бита для номера подсети нас устраивают. Следующим этапом будет нахождение подсетей. Для этого двоичное представление номера подсети, начиная с нуля, подставляется в биты, отведенные для номера подсети.
Основная сеть | 11011100 | 11010111 | 00001110 | 00 | 000000 | 220.215.14.0/24 | |
Подсеть 0(00) | 11011100 | 11010111 | 00001110 | 00 | 000000 | 220.215.14.0/26 | |
Подсеть 1(01) | 11011100 | 11010111 | 00001110 | 01 | 000000 | 220.215.14.64/26 | |
Подсеть 2(10) | 11011100 | 11010111 | 00001110 | 10 | 000000 | 220.215.14.128/26 | |
Подсеть 3(11) | 11011100 | 11010111 | 00001110 | 11 | 000000 | 220.215.14.192/26 | |
Расширенный сетевой префикс |
Для проверки правильности наших вычислений, следует помнить простое правило: десятичные номера подсетей должны быть кратными номеру первой подсети. Из этого правила можно вывести и другое, упрощающее расчет подсетей: достаточно вычислить адрес первой подсети, а адреса последующих определяются произведением адреса первой на соответствующий номер подсети. В нашем примере мы легко могли установить адрес третьей подсети, просто умножив 64 * 3 = 192. Как уже упоминалось, кроме адреса подсети, в котором все биты узловой части равны нулю, есть еще один служебный адрес – широковещательный. Особенность широковещательного адреса состоит в том, что все биты узловой части равны единице. Рассчитаем широковещательные адреса наших подсетей:
подсеть |
ШВА подсети 0 (00) | 11011100.11011100.00001110.00 111111 | 220.215.14.63/26
ШВА подсети 0 (01) | 11011100.11011100.00001110.01 111111 | 220.215.14.127/26
ШВА подсети 0 (10) | 11011100.11011100.00001110.10 111111 | 220.215.14.191/26
ШВА подсети 0 (11) | 11011100.11011100.00001110.11 111111 | 220.215.14.255/26
Расширенный сетевой префикс. Узловая часть = все 1
Легко заметить, что широковещательным адресом является наибольший адрес подсети. Теперь, получив адреса подсетей и их широковещательные адреса, мы можем построить таблицу используемых адресов:
№ подсети | Наименьший адрес подсети | Наибольший адрес подсети |
0 | 220.215.14.1 | - 220.215.14.62 |
1 | 220.215.14.65 | - 220.215.14.126 |
2 | 220.215.14.129 | - 220.215.14.190 |
3 | 220.215.14.193 | - 220.215.14.254 |
Это и есть разбиение, удовлетворяющее условию.
Пример 2
В первом примере все подсети были одинакового размера -- по 6 разрядов. Часто удобнее иметь подсети разного размера. Допустим, одна подсеть нужна для задания адресов двух маршрутизаторов, связанных по схеме "точка-точка". В этом случае используется всего лишь два адреса. Рассмотрим теперь случай, когда компании выделен блок адресов 144.144.0.0/16. Нужно разбить адресное пространство на три части, выделить адреса для двух пар маршрутизаторов и оставить некоторый резерв. Разделим сеть 144.144.0.0/16 на четыре равных части, выделив два бита для номера подсети:
Октет | W | X | Y | Z | ||
Подсеть 0(00) | 10010000 | 10010000 | 0 | 000000 | 00000000 | 144.144.0.0/18 |
Подсеть 1(01) | 10010000 | 10010000 | 1 | 000000 | 00000000 | 144.144.64.0/18 |
Подсеть 2(10) | 10010000 | 10010000 | 0 | 000000 | 00000000 | 144.144.128.0/18 |
Подсеть 3(11) | 10010000 | 10010000 | 1 | 000000 | 00000000 | 144.144.192.0/18 |
Внутри третьей подсети выделим две подсети размером в четыре адреса:
Подсеть № 3 | № узла | ||||||
Подсеть 0(0) | 10010000 | 10010000 | 1 | 00000 | 00000 | 0 | 144.144.192.0/30 |
Подсеть 1(1) | 10010000 | 10010000 | 1 | 000000 | 00001 | 0 | 144.144.192.4/30 |
Номер подсети |
Полученные две сети будем использовать для адресации интерфейсов маршрутизаторов. Оставшееся адресное пространство будет резервом, из которого можно будет выделять адресные блоки по потребности. Из оставшихся адресов можно, например, образовать 62 сети размерности класса С и еще несколько, размером поменьше.