4.2. Транспортный уровень модели OSI

На транспортном уровне организуется транспортная система между прикладными процессами.
  • Мультиплексирование нескольких соединений между прикладными протоколами.
  • Обеспечение надежности доставки сообщений.
  • Управление загрузкой сети.
Прикладной
Представительный
Сеансовый
Транспортный
Сетевой
Канальный
Физический
Единица данных: сегмент (segment), дейтаграмма (datagram)
Тип адресов: порт (port)
Протоколы: TCP, UDP, SPX и др.
Передача данных между уровнями:

4.2.1 Порты

IP-адрес отражает одно сетевое соединение.

Как же взаимодействовать отдельным приложениям друг с другом?

Для идентификации приложений ввели порты.
Порт (port) — двухбайтное число, используемое на транспортном уровне для идентификации прикладного процесса.
0

.

.

1023

Стандартизированные – зарегистрированы для общеизвестных приложений.

1024

 

.

.

5000

Временные – для использования в различных приложениях.

5001

 

.

.

65535

Пользовательские – для использования в различных приложениях.

 

Порты некоторых служб:

0 – Зарезервировано

20 – FTP (data)

21 – FTP (command)

22 – SSH

23 – Telnet

25 – SMTP

67, 68 – DHCP

80 – WWW

53 – DNS

110 – POP3

137-139 – NetBIOS

443 – SSL

1433 – MS SQL

3389 – RDP

5190 – ICQ

5500 – VNC

4.2.2 Протокол TCP

  • Протокол TCP (Transmission Control Protocol) – протокол транспортного уровня
  • Стек TCP/IP
  • Протокол с предварительным установлением соединения.
  • Протокол реализует механизм надежности доставки данных
  • Единицей данных является сегмент (segment)
  • Сегмент имеет порт отправителя и порт получателя
  • Порт отправителя идентифицирует приложение на клиентском узле, аналогично порт получателя — приложение на узле сервера.

Формат TCP-сегмента:

TCP-флаги:

URG — Поле «Указатель важности задействовано»

ACK — Поле «Номер подтверждения задействовано»

PSH —инструктирует получателя протолкнуть данные, накопившиеся в приемном буфере, в приложение пользователя

RST — Оборвать соединения, сбросить буфер (очистка буфера)

SYN — Синхронизация последовательности номеров сегментов

FIN — указывает на завершение соединения

4.2.3 Протокол UDP

  • Протокол UDP (User Datagram Protocol) – протокол транспортного уровня
  • Стек TCP/IP
  • Протокол без предварительного установления соединения
  • Протокол без механизма надежной доставки сообщений
  • Единицей данных является дейтаграмма (datagram)
  • Дейтаграмма имеет порт отправителя и порт получателя
  • Обмен данными по одному TCP-порту не мешают обмену по тому же UDP-порту.

Формат UDP-сегмента:

Недостаточная надежность протокола при потере пакетов влечет их:
дублирование
UDP используется…

При передаче больших данных:

  • потоковое видео,
  • игры реального времени,
  • в случае передачи больших объемов данных нескольким клиентам.

При передаче коротких сообщений:

  • Когда подтверждение получения не требуется
  • Когда устанавливать соединение слишком накладно

4.2.4 Установка TCP-соединения

TCP-соединение происходит по схеме «трехкратного рукопожатия» (three-way handshake).
1. Запрашивающая сторона отправляет SYN сегмент, указывая номер порта сервера и исходный номер последовательности клиента (ISNклиента).
2. Сервер отвечает своим сегментом SYN, содержащим исходный номер последовательности сервера (ISNсервера). Сервер подтверждает приход SYN клиента с использованием ACK (ISNклиента+1).
3. Клиент должен подтвердить приход SYN от сервера с использованием ACK (ISNсервера+1).
Уже установившееся соединение называется «наполовину открытым», если одна из программ TCP закрыла соединение, или отказалась от него. Причем сделала это на своем конце, не предупредив своего партнера.

4.2.5 Разрыв TCP-соединения

TCP соединение полнодуплексное, т.е. данные могут перемещаться в каждом направлении независимо от другого направления. Поэтому каждое направление должно быть закрыто независимо от другого.
1. Если, клиент завершает соединение, то он отправляет FIN-сегмент.
2. Сервер подтверждает приход FIN клиента с использованием ACK (SEQ_NUMклиента+1).
3. Сервер также завершает соединение и отправляет FIN-сегмент.
4. Клиент подтверждает приход FIN сервера с использованием ACK (SEQ_NUMклиента+1).
Клиенты должны сохранять уже закрытые ими для чтения информации соединения до тех пор, пока программа протокола TCP не сообщит им, что такой информации больше нет.

4.2.6 Скользящее окно (Sliding window)

Скользящее окно (Sliding window) – это алгоритм, определяющий количество байт, которые будут отправляется в сеть за один раз.
1. Модуль TCP в рамках окна нарезает поток байт на сегменты. Отправляет сегменты в сеть и ждет тайм-аут.
2. Получатель, получив сегменты, отправляет квитанцию об успешном приеме
3. Отправитель смещает окно и отправляет новые сегменты и повторяет непринятые.

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

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

Скользящее окно несет функцию управления загрузкой сети!

4.2.7 Механизм квитирования

Квитирование – механизм обеспечения надёжности доставки сообщений, который обязывает получателя посылать отправителю короткое сообщение (квитанцию) об успешном получении сообщения.

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

ACK_NUM = SEQ_NUM+1

Если квитанция НЕ получена:

сегмент искажен

тогда сегмент дублируется.

сегмент не получен

квитанция утеряна

4.2.8 Межсетевой экран (firewall)

Противоречие. При увеличении количества сетей, служб и пользователей, возникает проблема появления вредоносного трафика.
Межсетевой экран (firewall, межсетевой фильтр, файервол, брандмауэр) — это аппаратное или программное обеспечение, осуществляющее контроль и фильтрацию проходящих через него сетевых пакетов в соответствии с заданными правилами.

Файервол устанавливается:

  • На внешний порт шлюза в другие сети.
  • На порты клиентов сети.

Файервол фильтрует трафик по критериям:

  • По направлению (входящий/исходящий)
  • По протоколу (TCP/UDP)
  • По IP адресам отправителя и получателя
  • По портам отправителя и получателя
  • По любому полю заголовков TCP/IP и др.
Схема сети с сетевым экраном

Настройки файервола описываются в виде правил трех видов:

Allow – разрешить

Deny – запретить

Diver – перенаправить

Пример правил:

N

(Allow, Deny, Diver) <пакеты> from IP1:port1 to IP2:port2

1

Allow TCP from any to IP1:80 setup

2

Allow TCP from any to any

3

Divert IP2:80 TCP from any to IP1:80

4

Deny all from any to any

Файервол для: фильтрации доступа к заведомо незащищенным службам; контроля доступа к узлам сети; регистрации доступа как извне, так и изнутри; регламентирования порядка доступа к сети; уведомления о подозрительной деятельности.

4.2.9 Сетевая трансляция адресов (NAT)

Пусть есть две LAN-сети, подключенных к Интернет:

Иногда предприятию не удается получить нужное количество IP-адресов (дефицит, стоимость).
Противоречие. Как обеспечивать связь между узлами сетей с «серыми» IP-адресами, используя только один внешний IP-адрес?
Скомпенсировать неуникальность IP-адреса — уникальным портом.

Сетевая трансляция адресов (Network Address Translation, Network Masquerading) — механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса транзитных пакетов.

NAT –реализуют аппаратно или программно на маршрутизаторе или сервере.

Local IP Local Port Glob. IP Glob. Port
10.0.0.3 8089 85.32.1.8 80
10.0.0.3 80 2165
10.0.0.7 3786 1354
10.0.0.7 6875 8726

4.2.10 SNAT и DNAT

NAT
  • прозрачен для клиента и для сервера
  • не устанавливает разрыва соединения
  • скрывает информацию о частной сети
  • увеличивает адресное пространство частной сети
NAT
Source NAT (SNAT) – преобразование IP-адреса источника (отправителя). Позволяет клиентам частной сети выходить в Интернет.
Destination NAT (DNAT) – преобразование IP-адреса назначения (получателя). Позволяет клиентам получать данные из Интернета, а также публиковать внутренние службы сети.

Схема преобразования адресов NAT

4.2.11 IP-спуфинг (IP-spoofing)

В IP-пакете присутствует адрес отправителя и адрес получателя.
Злоумышленник может создать пакет, в котором адрес получателя будет изменен с некоторой целью.
IP-spoofing — вид атаки, заключающийся в использовании чужого IP-адреса с целью обмана системы безопасности.

Сравнительно легко атака осуществима через UDP протокол

В некоторых случаях возможна в TCP-соединениях.

На сетевом уровне атака частично предотвращается с помощью фильтра пакетов.

Он не должен пропускать пакеты, пришедшие через те сетевые интерфейсы, откуда они прийти не могли.

Например, с внешнего интерфейса с «серым» адресом отправителя.

IP-спуфинг через TCP

Основан на подборе SeqNum. Возможно лишь в старых ОС. Современные ОС пытаются предотвращать угадывание.

(424 views)