Литература

10.1 Адресация в сети Internet.

10.1.1 Типы адресов.

В самом начале развития сети было принято решение раздавать IP-адреса блоками, было создано три вида блока, и зарезервировано под эти блоки адреса:

Типы адресов

  • unicast - уникальный адрес, адрес конкретного хоста.

  • broadcast - широковещательный адрес, адрес для все хостов.

  • multicast - групповой адрес, адрес для группы хостов.

Классы адресов

Класс Длина сетевой части адреса в байтах Первое число Количество IP - адресов в блоке Пример блока
A 1 0-127 16 777 216 122.0.0.0/255.0.0.0
или 122.0.0.0/8
B 2 128-191 65 536 152.126.0.0/255.255.0.0
или 122.126.0.0/16
C 3 192-223 256 83.149.236.0/255.255.255.0
или 122.149.236.0/24
Специальные адреса
D - 224-239 групповые адреса
E - 240-255 для экспериментальных целей

классы

Пояснение, откуда появились именно такие адреса

Как показала практика, такое распределение оказалось не эффективным. Самая большая потребность именно в сетях класса C, а не в B и A. Но классы B и A "съели" большую часть адресов, и их стало не хватать.

Поэтому была принята бесклассовая раздача адресов, которая позволяет, например, дать блок в несколько адресов, либо блок из 256 и еще 64 адресов.

Это пока спасает ситуацию до перехода на IPv6.

Для того, что бы выделить четыре адреса в блок, используют маску подсети, например:

выделим адреса с 83.149.236.0 по 83.149.236.31 в отдельный блок, чтоб задать 32 адреса нужно 5 бит (2^5=32)

256-32=224

83.149.236.0/255.255.255.224 или 83.149.236.0/27 (32-5=27)

Почему называется маска?

01010011 10010101 11101100 00000000 - сеть 83.149.236.0

Наложим маску на адрес (логическое И, 1и1=1, 1и0=0, 0и0=0)

01010011 10010101 11101100 00010000 - проверяемый адрес 83.149.236.16

11111111 11111111 11111111 11100000 - маска 255.255.255.224

01010011 10010101 11101100 00000000 - получаем сеть 83.149.236.0 (в двоичном, см. выше)

Это был адрес принадлежащий сети.

Возьмем адрес не принадлежащий сети - 83.149.236.64

01010011 10010101 11101100 01000000 - проверяемый адрес 83.149.236.64

11111111 11111111 11111111 11100000 - маска 255.255.255.224

01010011 10010101 11101100 01000000 - не получаем сеть 83.149.236.0, значит адрес не принадлежит сети.

Адреса зарезервированные для закрытых локальных сетей (в Интернете их не видно):

10.0.0.0/8

172.16.0.0 - 172.31.255.255

192.168.0.0 - 192.168.255.255

Специальные адреса (зарезервированные).

127.0.0.1 - это адрес обратной связи (loopback) - пакеты по нему реально в сеть не отправляются. Этому адресу по умолчанию назначают имя localhost.

255.255.255.255 - широковещательный адрес, для всех сетей. Используется для DHCP.

Широковещательный (broadcast) адрес сети.

Пакеты посланные на широковещательный адрес, должны принимать все компьютеры этой сети.

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

Например:

для сети 83.149.236.0/24

83.149.236.255 - broadcast адрес сети 83.149.236.0/24.

83.149.236.0 - адрес сети, unicast-адреса с таким номером быть не должно. Т.е. минимальный размер подсети может быть в 4 адреса.

Кроме случая, когда используется маска 32, для указания одного unicast-адреса, например - 83.149.236.36/32

Групповой адрес (multicast).

Предназначен для группы хостов.

Например, адрес 224.0.0.5 - адрес OSPF - маршрутизаторов, т.е. все OSPF - маршрутизаторы обязаны принимать пакеты с адресом назначения 224.0.0.5.

10.2 Протокол IP

10.2.1 Межсетевой уровень и протокол IP.

Первый стандарт IPv4 определен в RFC-760 (DoD standard Internet Protocol J. Postel Jan-01-1980)

Последняя версия IPv4 - RFC-791 (Internet Protocol J. Postel Sep-01-1981).

Первый стандарт IPv6 определен в RFC-1883 (Internet Protocol, Version 6 (IPv6) Specification S. Deering, R. Hinden December 1995)

Последняя версия IPv6 - RFC-2460 (Internet Protocol, Version 6 (IPv6) Specification S. Deering, R. Hinden December 1998).

IP

Структура дейтограммы IP. Слова по 32 бита.

Версия - версия протокола IP (например, 4 или 6)

Длина заг. - длина заголовка IP-пакета.

Тип сервиса (TOS - type of service) - это поле делится на шесть подполей.

tos

Подробно поле "Тип сервиса"

Приоритет - присваивает код приоритета каждой дейтограмме.

Значения приоритетов:

111 - Network Control - Сетевое управление

110 - Internetwork Control - Межсетевое управление

101 - CRITIC/ECP - critic/ecp

100 - Flash Override - Экстренный

011 - Flash - Срочный

010 - Immediate - Немедленный

001 - Priority - Приоритетный

000 - Routine - Обычный уровень

Формат поля TOS определен в документе RFC-1349.

Коды типа сервиса (TOS)

TOS-код Значения (RFC-1349) Значения (перевод)
0000 normal service Обычный сервис
0001 minimize monetary cost Минимальная денежная стоимости
0010 maximize reliability Максимальная надежность
0100 maximize throughput Максимальная пропускная способность
1000 minimize delay Минимальная задержка

TOS играет важную роль в маршрутизации пакетов. Интернет не гарантирует запрашиваемый TOS, но многие маршрутизаторы учитывают эти запросы при выборе маршрута (протоколы OSPF и IGRP).

Идентификатор дейтаграммы, флаги (3 бита) и указатель фрагмента - используются для распознавания пакетов, образовавшихся путем фрагментации исходного пакета.

Поле флаги состоит из 3-х бит:

Bit 0: reserved, must be zero - зарезервирован, равен нулю.

Bit 1: 0 = May Fragment, 1 = Don't Fragment. - разрешена/запрещена фрагментация.

Bit 2: 0 = Last Fragment, 1 = More Fragments - является ли данный фрагмент последним, последний/будут еще.

Время жизни (TTL - time to live) - каждый маршрутизатор уменьшает его на 1, что бы пакеты не блуждали вечно.

Протокол - Идентификатор протокола верхнего уровня указывает, какому протоколу верхнего уровня принадлежит пакет (например: TCP, UDP).

10.3 Статическая маршрутизация.

Для маршрутизации нужна маршрутная информация, куда (на какой интерфейс) пакет отправлять, зная адрес назначения.

Статическая маршрутизация - это когда таблица маршрутизации формируется "вручную".

10.3.1 Таблицы маршрутизации.

Для получения таблицы маршрутизации используется команда route.

Рассмотрим таблицы маршрутизации самой простой сети.

net

Схема сети

Столбцы таблицы маршрутизации:

  • Destination - адрес сети назначения

  • Gateway - адрес шлюза

  • Genmask - маска сети назначения

  • Flags - флаги
    U - показывает, что маршрут активен.
    G - показывает, что маршрут проходит через промежуточный маршрутизатор (Gateway).
    H - специфический маршрут, маршрут к этому хосту отличается от маршрута ко всей этой сети.

  • Metric - метрика, если для отправки можно использовать несколько маршрутов, позволяет делать выбор.
    Метрика =0 обозначает, что эта сеть непосредственно подключена к данному интерфейсу.

  • Ref - сколько раз ссылались на данный маршрут при обработке пакетов

  • Use - количество пакетов, переданное по данному маршруту.

  • Iface - интерфейс для отправки пакетов.

# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
#

Таблица (linux) маршрутизации на 192.168.0.6

В таблице прописаны два правила:

  1. Пакеты для сети 192.168.0.0/255.255.255.0 посылать напрямую, т.е. не через маршрутизатор.

  2. Пакеты для всех остальных сетей посылать на default-маршрутизатор с адресом 192.168.0.1.

# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 eth1
83.149.236.64 * 255.255.255.224 U 0 0 0 eth0
default 83.149.236.92 0.0.0.0 UG 0 0 0 eth0
#

Таблица (linux) маршрутизации на 192.168.0.1

В таблице прописаны три правила:

  1. Пакеты для сети 192.168.0.0/255.255.255.0 посылать напрямую, через интерфейс eth1.

  2. Пакеты для сети 83.149.236.64/255.255.255.224 посылать напрямую, через интерфейс eth0.

  3. Пакеты для всех остальных сетей посылать на default-маршрутизатор с адресом 83.149.236.92, через интерфейс eth0.

В разных системах таблицы немного отличаются, но в целом очень похожи.

>route PRINT

===========================================================================
Активные маршруты:
Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика
 0.0.0.0 0.0.0.0 10.85.241.18 10.85.241.63 1
 10.85.240.0 255.255.254.0 10.85.241.63 10.85.241.63 20
 10.85.241.63 255.255.255.255 127.0.0.1 127.0.0.1 20
 10.255.255.255 255.255.255.255 10.85.241.63 10.85.241.63 20
 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
 224.0.0.0 240.0.0.0 10.85.241.63 10.85.241.63 20
 255.255.255.255 255.255.255.255 10.85.241.63 10.85.241.63 1
Основной шлюз: 10.85.241.18
===========================================================================

Пример таблицы маршрутизации в Windows

Источники информации для таблицы маршрутизации:

  • Ручная настройка сетевых интерфейсов.

  • Ручная настройка default маршрутизатора.

  • Ручная настройка настройка маршрутов.

  • Динамические протоколы - RIP, OSPF и т.д.

Рассмотрим intranet сеть (без выхода в Интернет) из четырех сегментов.

net

Схема сети.

# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
192.168.2.0 * 255.255.255.0 U 0 0 0 eth0
192.168.3.0 * 255.255.255.0 U 0 0 0 eth0
#

Таблица (linux) маршрутизации на маршрутизаторе.

# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
#

Таблица (linux) маршрутизации на 192.168.0.6.

# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
#

Таблица (linux) маршрутизации на 192.168.1.128.

# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.2.0 * 255.255.255.0 U 0 0 0 eth0
default 192.168.2.1 0.0.0.0 UG 0 0 0 eth0
#

Таблица (linux) маршрутизации на 192.168.2.32.

# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.3.0 * 255.255.255.0 U 0 0 0 eth0
default 192.168.3.1 0.0.0.0 UG 0 0 0 eth0
#

Таблица (linux) маршрутизации на 192.168.3.64.

10.3.1 Маршрутизация без маски (на классах).

# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
192.168.2.0 * 255.255.255.0 U 0 0 0 eth0
192.168.3.0 * 255.255.255.0 U 0 0 0 eth0
192.168.4.0 * 255.255.255.0 U 0 0 0 eth0
192.168.5.0 * 255.255.255.0 U 0 0 0 eth0
192.168.6.0 * 255.255.255.0 U 0 0 0 eth0
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
#

Таблица (linux) маршрутизации без использования маски

10.3.1 Маршрутизация с маской (CIDR).

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

# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.248.0 U 0 0 0 eth0
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
#

Таже таблица (linux) маршрутизации, но с использованием маски.

10.4 Протокол надежной доставки сообщений TCP

TCP (Transfer Control Protocol) – протокол контроля передачи, протокол TCP применяется в тех случаях, когда требуется гарантированная доставка сообщений.

Первая и последняя версия TCP - RFC-793 (Transmission Control Protocol J. Postel Sep-01-1981).

Основные особенности:

  • Устанавливается соединение.

  • Данные передаются сегментами. Модуль TCP нарезает большие сообщения (файлы) на пакеты, каждый из которых передается отдельно, на приемнике наоборот файлы собираются. Для этого нужен порядковый номер (Sequence Number - SN) пакета.

  • Посылает запрос на следующий пакет, указывая его номер в поле "Номер подтверждения" (AS). Тем самым, подтверждая получение предыдущего пакета.

  • Делает проверку целостности данных, если пакет битый посылает повторный запрос.

TCP

Структура дейтограммы TCP. Слова по 32 бита.

Длина заголовка - задается словами по 32бита.

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

Контрольная сумма - включает псевдо заголовок, заголовок и данные.

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

URG - флаг срочности, включает поле "Указатель срочности", если =0 то поле игнорируется.

ACK - флаг подтверждение, включает поле "Номер подтверждения, если =0 то поле игнорируется.

PSH - флаг требует выполнения операции push, модуль TCP должен срочно передать пакет программе.

RST - флаг прерывания соединения, используется для отказа в соединении

SYN - флаг синхронизация порядковых номеров, используется при установлении соединения.

FIN - флаг окончание передачи со стороны отправителя

В дополнительных параметрах, может быть:

MSS (maximum segment size) - максимальный размер сегмента. Если MSS не задан, то устанавливается, по умолчанию, 536 байт. С помощью этого параметра можно увеличить скорость передачи, подбирая оптимальные MSS и MTU (размер пакета канального уровня).

10.4.1 Понятие сокета:

Чтобы идентифицировать отдельные потоки данных введено понятие сокет(socket) - это уникальное число для каждого процесса, для получения числа используется IP-адрес хоста и порт приложения (вы видели сокет в примере для FTP соединения - 194,87,5,52,9,75).

TCP

Схема мультиплексирования информационных потоков

10.4.2 Соединения TCP:

Соединение TCP является полнодуплексным, т.е. существуют два потока, прямой и обратный.

Поэтому каждое соединение определяется двумя сокетами. Локальный сокет может принимать участие во многих соединениях с различными чужими сокетами.

dd

Полнодуплексное соединение, используется 2 сокета.

Все необходимые переменные для соединения хранятся в блоке управления передачей TCB (Transmission Control Block).

В TCB могут содержаться:

  • сокеты

  • номера очередей

  • флаги безопасности и приоритета

  • и т.д.

Состояния TCP соединения:

LISTEN - ожидает запроса на соединение от удаленного TCP-модуля, чужой сокет равен нулям.

SYN-SENT - ожидание ответа на соединение, после посылки запроса на соединение.

SYN-RECEIVED - ожидание подтверждения на соединение, после посылки обоих предыдущих запросов.

ESTABLISHED - состояние установленного соединения, стадия передачи данных.

FIN-WAIT-1 - ожидание запроса завершения соединения от удаленного TCP-модуля, или подтверждения запроса завершения соединения, предварительно посланного.

FIN-WAIT-2 - ожидание запроса завершения соединения от удаленного TCP-модуля.

CLOSE-WAIT - ожидание запроса завершения соединения от локального пользователя..

CLOSING - ожидание подтверждения запроса завершения соединения от удаленного TCP-модуля.

LAST-ACK - ожидание подтверждения запроса завершения соединения, предварительно посланного удаленному TCP-модулю (который включает подтверждение его запроса завершения соединения).

TIME-WAIT - время ожидания, что удаленный TCP-модуль получил подтверждение его запроса завершения соединения.

CLOSED - TCP-модуль закрыт для любого подключения.

rr

Алгоритм установки TCP-соединения

Алгоритм установки соединения:

  • Клиент посылает SYN-сегмент (SYN=1), и порядковый номер ISN=J (initial sequence number - первоначальный порядковый номер). Раньше ISN просто приравнивали 0, но сейчас, как правило, это случайное число, это сделано, что бы усложнить атаки с помощью подмены IP-адреса и исключить попадания пакетов с одинаковыми номерами.

  • Сервер откликается, посылая свой SYN-сегмент (SYN=1), содержащий свой ISN=K. И AS=ISN +1=J+1.

  • Клиент отправляет подтверждение получения SYN-сегмента от сервера с AS=ISN +1=K+1 и SN=J+1.

  • Начинается передача данных. При передачи данных в серийном номере .

Это один из вариантов соединения остальные можно посмотреть в RFC-793.

10.4.3 Диаграмма состояний TCP:

Для более простого восприятия сделана диаграмма состояний TCP, но ею нельзя пользоваться как спецификацией.

ss

Диаграмма состояний TCP (упрощенная, полная в RFC-793)

Последнее изменение: среда, 13 июля 2011, 16:23