Различия между версиями 10 и 11
Версия 10 от 2008-07-03 01:12:53
Размер: 5768
Редактор: Allena
Комментарий:
Версия 11 от 2008-07-03 01:16:07
Размер: 5769
Редактор: Allena
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 44: Строка 44:
|| 0 || 1 || 1 || 1 || || 1 || PavelSutyrin || 03.06.2008 || || 20 || 1 || 1 || 1 || || 1 || PavelSutyrin || 03.06.2008 ||

Транспортный уровень

Поднимаемся на уровень TCP.

Итак, проблема заключается в том, что есть возможность отправить пакет абоненту, но не гарантировать доставку. На данном уровне возникает 5 задач:

  • Нужно обеспечить подтверждение получения данных.
  • Если сообщение большое, нужно разбить его на пакеты так, чтобы абонент затем мог восстановить исходные данные.
  • Если отправленное сообщение было разбито на несколько пакетов, то на стороне абонента должен быть механизм проверки все ли пакеты пришли и механизм сборки сообщения из пакетов.
  • Перед тем как отправлять данные нужно удостовериться, что абонент существует и может их принять.
  • Обеспечить возможность манипулирования потоками данных.

Возникает вопрос -- всегда ли необходимо решение всех 5 задач? Если вся информация, которую надо передать, помещается в один пакет(датаграмму), то можно выбрать более простой путь. Поэтому на уровне TCP существуют два протокола: надёжный, TCP и ненадежный, UDP.

Протокол TCP начинается с подключения. Процедура подключения двухсторонняя.

TCP устроен по принципу подтверждений. После получения TCP-пакета отсылается подтверждение получения. Если подтверждения не получено в течении определенного времени(таймаута), происходит извещение об ошибке. Этот процесс симметричен. Подтверждения могут совмещаться с данными.

Все TCP-пакеты пронумерованы. Есть понятие seqno.В каждом их два, и они увеличиваются на размер переданных данных. Это позволяет как устанавливать последовательность пакетов, так и диагностировать потерю или дублирование пакета.

Везде считается checksum.

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

Для решения задачи разделения данных вводится еще одно понятие -- порт. Оно придумано по аналогии с портами ввода-вывода. Соединение между клиентом и сервером происходит по определенному порту. Например, при соединении, на одной из машин используется 22 порт, на другой -- случайный. Это позволяет разделять потоки даже в случае нескольких соединений между двумя машинами.

Система портов -- переходной уровень между TCP и урофнем приложений. Согласно некоторым договоренностям разные типы приложений слушают разные порты. Другого способа определить, к какому порту нужно подключаться -- не существует. Есть организация IANA, регистрирующая порты. Список приложений и использующихся ими портов всегда можно увидеть по cat /etc/services.

Вопросы

В чём разница между TCP-пакетами и UDP-датаграммами?

Они нужны для разных вещей. Например, при задаче широковещания не нужны ни сообщения о доставке, ни сообщения об ошибках. Другой случай --- маленькие пакеты, на которые всегда должен быть какй-то ответ. Ещё один юзкейс --- медленные обработка и ответ.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

20

1

1

1

1

PavelSutyrin

03.06.2008


PspoClasses/080702/05TCP (последним исправлял пользователь eSyr 2009-03-22 23:06:33)