- •7. Управление внешними коммуникациями в ос
- •7.1. Протоколы тср/ip
- •7.1.1. Определение и достоинства протокола tcp/ip
- •7.1.2. Архитектура tcp/ip
- •7.1.3. Соответствие между моделями tcp/ip и iso osi
- •7.2. Протокол ip
- •7.2.1. Структура заголовка ip-пакета
- •7.3. Протокол udp
- •7.4. Протокол tcp
- •7.4.1. Структура tcp-сегмента
- •7.4.2. Этапы tcp-сеанса
- •7.5. Программные средства поддержки сетей
- •7.5.1. Состав программных средств поддержки сетей
- •1. Почтовые ящики Windows
- •2. Именованные каналы Windows
- •3. Удаленные вызовы процедур - rpc
- •7.5.2. Программные средства работы с сокетами
- •7.6. Сетевое программное обеспечение уровня приложений
- •7.6.1. Протокол ftp
- •7.6.2. Протокол smtp
- •Раздел 7
7.1.3. Соответствие между моделями tcp/ip и iso osi
TCP/IP |
ISO OSI |
Уровень приложения |
Уровень приложений |
Уровень представления |
|
Уровень сеанса |
|
Транспортный уровень |
Транспортный уровень |
Уровень Интернет |
Сетевой уровень |
Уровень сетевого интерфейса |
Уровень канала |
Физический уровень |
7.2. Протокол ip
7.2.1. Структура заголовка ip-пакета
Протокол IP обеспечивает доставку фрагмента данных от источника к получателю.
Протокол IP выполняет три основных функции:
Адресацию;
Фрагментацию;
Маршрутизацию.
Данные, формат которых понятен протоколу IP, называются дейтаграммой.
Дейтаграмма состоит из заголовка и данных, полученных от протоколов верхних уровней.
Протокол обрабатывает каждую дейтаграмму как самостоятельный объект, не зависящий от других передаваемых дейтаграмм.
Модули IP производят передачу дейтаграммы по направлению к получателю на основании адреса, расположенного в заголовке IP-дейтаграммы. Выбор пути называется маршрутизацией.
В процессе обработки дейтаграммы протокол иногда вынужден выполнять ее фрагментацию. Это необходимо делать, когда сети, через которые вынуждена проходить дейтаграмма, используют разные размеры кадра.
0 - 3 |
4 - 7 |
8 - 11 |
12 - 15 |
16 - 19 |
20 - 23 |
24 - 27 |
28 – 31 |
Version |
IHL |
Type of service |
Total length |
||||
Identification |
Flags |
Fragment Offset |
|||||
TTL |
Protocol |
Header Checksum |
|||||
Source address |
|||||||
Destination address |
|||||||
Options |
Padding |
||||||
Data |
Структура заголовка IP-датаграммы
Заголовок занимает минимум 20 байтов и содержит следующие поля:
Version – определяет версию протокола. Обычно, 4.
IHL – internet header length – длина заголовка в 32-битных словах. При 20 байтах IHL = 5.
Type of service - битовое поле:
0 – 2 - Precedence – относительная значимость дейтаграммы. Большее значение соответствует большему приоритету;
3 – Delay – 0 – нормальная задержка при обработке, 1 – низкое значение задержки;
4 – Throughput. Скорость передачи. 0 – нормальная, 1 – высокая скорость;
5 – Reliability. Надежность. 0 – нормальная, 1 – высокая надежность;
6 – 7 – резерв.
Это поле определяет правила обработки дейтаграммы при передаче через сети. Иногда правила противоречат друг другу. Например, низкая задержка противоречит высокой надежности. Стандарты разрешают эти противоречия.
Total length – размер дейтаграммы. Размер ограничен 65535 байтами.
Identification – поле, используемое при фрагментации. Это поле одинаково для всех фрагментов одной дейтаграммы.
Flags – битовое поле, тоже используется при фрагментации:
0 – резерв;
1 – DF – 0 – можно фрагментировать, 1 – нельзя фрагментировать;
2 – MF – 0 – последний фрагмент, 1 – не последний фрагмент.
Fragment offset – номер фрагмента.
Объединяются дейтаграммы с одинаковыми полями Identification, Source address, Destination address, protocol.
TTL – time to live – время жизни дейтаграммы. Если 0, то дейтаграмма уничтожается. Каждый модуль протокола уменьшает значение этого поля на число секунд, затраченных на обработку. Цель этого поля – уничтожать «заблудившиеся» дейтаграммы.
Protocol – номер протокола верхнего уровня. Для TCP – 6, для UDP – 17.
Header checksum – контрольная сумма.
Source address и destination address – IP-адреса источника и получателя.
Options – содержит дополнительные параметры протокола.
Padding – выравнивает заголовок до границы 32-битного слова.
7.2.2. IP-адресация
Каждый IP-адрес состоит из двух частей: адреса сети и адреса хоста в этой сети. Существует 5 форматов адреса, отличающихся по числу битов, отводимых для адреса сети и хоста. Эти форматы определяют классы адресов отA до D.
Класс определяют первые три бита.
0 |
7 - сеть |
24 – хост |
Класс A |
||||||
1 |
0 |
14 – сеть |
16 - хост |
Класс B |
|||||
1 |
1 |
0 |
21 – сеть |
8 – хост |
Класс С |
||||
1 |
1 |
1 |
0 |
28 – групповой адрес |
Класс D |
||||
1 |
1 |
1 |
1 |
0 |
Зарезервировано |
Класс Е |
Уникальность адресов обеспечивается их централизованным назначением.
В классе А число сетей ограничено126 (0 и 127 – зарезервированы). Это устаревшая структура.
В классе В число сетей 16 382. Адреса сетей такого класса также сейчас не предоставляются.
В классе С число сетей равно 2 097 150. При этом число хостов может быть не более 254. Самый распространенный в настоящее время класс сетей. Но и он истощается.
Поэтому введена дополнительная иерархия – адрес хоста может быть разделен на адрес подсети и адрес хоста в подсети.
Для определения фактической границы между адресом подсети и хоста используется маска подсети, маскирующая единицами номера сети и подсети и содержащая нули в позициях номера хоста.
Посмотрим, как используется маска подсети.
Предположим, что есть сеть класса В с адресом 190.50.0.0 и маска подсети равна 255.255.255.0.
190.50.0.0
190.50.1.4
Н1
190.50.1.1
Н2
190.50.1.2
Н3
190.50.2.1
Н4
190.50.2.2
190.50.2.3
Пусть, например, хосту Н1 надо обратиться к хосту Н3. Н1 берет адрес Н3 190.50.2.1 и накладывает на него маску подсети 255.255.255.0, получая результат 190.50.2.0. Поскольку Н1 находится в подсети 190.50.1.0, то Н3 напрямую недоступен. Сверившись со своей маршрутной таблицей Н1 обнаруживает, что следующий адрес на пути к Н3 – это R1.
Н1 отображает IP-адрес R1 на его физический адрес и посылает R1 дейтаграмму. R1 ищет адрес назначения в своей маршрутной таблице, пользуясь той же маской подсети, и определяет местонахождение Н3 в подсети, соединенной с его интерфейсом 190.50.2.3.
R1 доставляет дейтаграмму хосту Н3, получив предварительно его физический адрес по IP-адресу.
Пусть теперь хост Е из внешней сети хочет отправить дейтаграмму Н3. Поскольку 190.50.2.1 – адрес класса В, то маршрутизатору сети, где находится этот хост Е, известно, что Н3 находится в сети 190.50.0.0. Т. к. шлюзом в эту сеть является R2, то дейтаграмма от Е в конце концов дойдет до R2.
R2 получив дейтаграмму, накладывает маску, выделяет адрес подсети 190.50.2.0, определяет R1 в качестве следующего узла на пути к Н3 и посылает R1 дейтаграмму, которую R1 отправляет Н3.
Хосту Е неизвестна внутренняя топология сети 190.50.0.0. Он просто отсылает дейтаграмму шлюзу R2. Только R2 и другие хосты внутри сети определяют существование подсетей и маршруты доступа к ним.