1632
правки
Изменения
IP
,rollbackEdits.php mass rollback
[[Файл:ip_in.jpg|right|IP в модели OSI и стеке TCP/IP.]]
'''IP''' (''Internet Protocol'') - протокол сетевого уровня стека TCP/IP. Протокол был создан в 1981 году и описан в RFC 791. Основной задачей протокола является доставка датаграмм между хостами сетей TCP/IP через произвольное число промежуточных узлов (маршрутизаторов).
Функции, реализуемые IP:
* Основа передачи данных.
* Адресация.
* Маршрутизация.
* Фрагментация датаграмм.
Протокол IP не гарантирует надежной доставки пакета: пакеты могут прийти в неправильном порядке, пакет может быть утерян, пакет может продублироваться или оказаться поврежденным. За надежность доставки пакетов отвечают протоколы транспортного уровня.
{| class="wikitable" style="margin: 0 auto; text-align: center;"
|+Структура заголовка IPv4 Header Format
|-
* Остаток (Padding): переменная длина
** Часть из нулей, гарантирующая, что длина заголовка заканчивается на 32 бите.
===Пример===
IPv4 и его расположение внутри кадра.
[[Файл:ipv4_example.png|IPv4 example.]]
==IPv6==
* Широковещательный адрес IP сети (адрес для 'разговора' со всеми устройствами в IP сети). Широковещательные адреса для сети всегда имеют интерфейсные (хостовые) биты адресного пространства установленными в 1 (если сеть не разбита на подсети).
* Адрес интерфейса (например Ethernet-адаптер или PPP интерфейс хоста, маршрутизатора, сервера печать итд). Эти адреса могут иметь любые значения хостовых битов, исключая все нули или все единицы - чтобы не путать с адресами сетей и широковещательными адресами.
=== IPv6-адрес ===
Адрес в IPv6 представляется как восемь групп из четырех шестнадцатеричных чисел, разделенных двоеточиями.
При записи адреса используются следующие правила:
* Если одна и более групп, идущих подряд, равны 0000, то они опускаются и заменяются на двойное двоеточие.
* Незначащие старшие нули в группах опускаются.
* Для записи встроенного или отображенного IPv4 адреса последние две группы цифр заменяются на IPv4 адрес.
* При использовании IPv6 адреса в [[URL]] он помещается в квадратные скобки.
* Порт в [[URL]] пишется после закрывающей квадратной скобки.
===Типы IPv6 адресов===
* Одноадресный (''Unicast'') - для отправки пакет на конкретный адрес устройства.
** ''Global unicast'' - глобальные адреса. Могут находиться в любом не занятом диапазоне.
** ''Link loсal'' - локальный адрес канала. Позволяет обменивать данными по одному и тому же каналу (подсети). Пакеты с локальным адресом канала не могут быть отправлены за пределы этого канала.
** ''Unique local'' - уникальный локальные адреса. Используются для локальной адресации в пределах узла или между ограниченным количеством узлов.
* Многоадресный (''Multicast'') - для отправки пакетов на группу адресов.
** ''Assigned'' - назначенные адреса. Зарезервированные для определённых групп устройств Multicast адреса.
** ''Solicited'' - запрошенные адреса. Остальные адреса, которые устройства могут использовать для прикладных задач.
* Групповой (''Anycast'') - для отправки пакета на "любой" индивидуальный адрес. Такой адрес может быть назначен нескольким устройствам. Пакет будет доставлен ближайшему устройству с этим адресом.
===Фрагментация===
Большинство каналов передачи данных устанавливают максимальную длину пакета (''MTU''). В случае, когда длина пакета превышает это значение, происходит фрагментация.
{{Определение
|definition=IP-фрагментация - разбиение пакета на множество частей, которые могут быть повторно собраны позже.
}}
==Маршрутизация==
Протокол IP требует, чтобы в маршрутизации участвовали все узлы (компьютеры). Длина маршрута, по которому будет передан пакет, может меняться в зависимости от того, какие узлы будут участвовать в доставке пакета. Каждый узел принимает решение о том, куда ему отправлять пакет на основании таблицы маршрутизации (''routing tables'').
{{Определение
|definition=Подсеть - логическое разбиение сети IP.
}}
=== Маска подсети ===
Длина префикса не выводится из IP-адреса, поэтому протоколу маршрутизации вынуждены передавать префиксы на маршрутизаторы. Иногда префиксы задаются с помощью указания длины.
Таблицы маршрутизации со временем сильно растут, и с этим нужно что-то делать. Маршрутизатор может узнавать о расположении IP-адресов по префиксам различной длины. Но вместо того чтобы разделять сеть на подсети, мы объединим несколько коротких префиксов в один длинный. Этот процесс называется '''агрегацией маршрута (route aggregation)'''. Длинный префикс, полученный в результате, иногда называют '''суперсетью (supernet)''', в противоположность подсетям с разделением блоков адресов.
[[Файл:Cidr_aggregation.png|right|Пример агрегации маршрута.]]
При агрегации IP-адреса содержатся в префиксах различной длины. Один и тот же IP-адрес может рассматриваться одним маршрутизатором как часть блока /22 (содержащего 2<sup>10</sup> адресов), а другим — как часть более крупного блока /20 (содержащего 2<sup>12</sup> адресов). Это зависит от того, какой информацией обладает маршрутизатор. Такой метод называется '''CIDR (Classless InterDomain Routing — бесклассовая междоменная маршрутизация)'''.
Также префиксы могут пересекаться. Согласно правилу, пакеты передаются в направлении самого специализированного блока, или '''самого длинного совпадающего префикса (longest matching prefix)''', в котором находится меньше всего IP-адресов.
=== Классы IP-сетей ===
[[Файл:Ip-classes.jpg|right|Классы IP.]]
Раньше использовали классовую адресацию.
Существует также специальные адреса, которые зарезервированы для 'несвязанных' сетей - это сети, которые используют IP, но не подключены к Internet. Вот эти адреса:
* C класс - маска подсети: 255.255.255.0