5762
Комментарий:
|
5733
|
Удаления помечены так. | Добавления помечены так. |
Строка 28: | Строка 28: |
Для того, чтобы выполнить задачу разделения данных, появляется ещё одно понятие --- порт. Придумано оно по аналогии с портами ввода-вывода. Когда происх. соед. между клиентом и сервером, то происх. соед. по определённому порту. Когда происх. пдоключение, то у сервера порт 22, а у клиента случайный, (44670), что пзволяет разделять потоки даже в случяае нескольких подключений между двумя машинами. | Для решения задачи разделения данных вводится еще одно понятие -- порт. Оно придумано по аналогии с портами ввода-вывода. Соединение между клиентом и сервером происходит по определенному порту. Например, при соединении, на одной из машин используется 22 порт, на другой -- случайный. Это позволяет разделять потоки даже в случае нескольких соединений между двумя машинами. |
Транспортный уровень
Поднимаемся на уровень TCP.
Итак, проблема заключается в том, что есть возможность отправить пакет абоненту, но не гарантировать доставку. На данном уровне возникает 5 задач:
- Нужно обеспечить подтверждение получения данных.
- Если сообщение большое, нужно разбить его на пакеты так, чтобы абонент затем мог восстановить исходные данные.
- Если отправленное сообщение было разбито на несколько пакетов, то на стороне абонента должен быть механизм проверки все ли пакеты пришли и механизм сборки сообщения из пакетов.
- Перед тем как отправлять данные нужно удостовериться, что абонент существует и может их принять.
- Обеспечить возможность манипулирования потоками данных.
Возникает вопрос -- всегда ли необходимо решение всех 5 задач? Если вся информация, которую надо передать, помещается в один пакет(датаграмму), то можно выбрать более простой путь. Поэтому на уровне TCP существуют два протокола: надёжный, TCP и ненадежный, UDP.
Протокол TCP начинается с подключения. Процедура подключения двухсторонняя.
TCP устроен по принципу подтверждений. После получения TCP-пакета отсылается подтверждение получения. Если подтверждения не получено в течении определенного времени(таймаута), происходит извещение об ошибке. Этот процесс симметричен. Подтверждения могут совмещаться с данными.
Все TCP-пакеты пронумерованы. Есть понятие seqno.В каждом их два, и они увеличиваются на размер переданных данных. Это позволяет как устанавливать последовательность пакетов, так и диагностировать потерю или дублирование пакета.
Везде считается checksum.
Для отслеживания состояния канала используется довольно хитрая технология -- сначала идет обмен маленькими пакетами, затем размер пакетов постепенно увеличивается.
Для решения задачи разделения данных вводится еще одно понятие -- порт. Оно придумано по аналогии с портами ввода-вывода. Соединение между клиентом и сервером происходит по определенному порту. Например, при соединении, на одной из машин используется 22 порт, на другой -- случайный. Это позволяет разделять потоки даже в случае нескольких соединений между двумя машинами.
Почему лектор говорит, что порт это переходный уровень между TCP и уровнем приложений? Потому что согл. нек. договорённостям, рахные типы приложений сидят на разных портах. Почему так? Да потому что никакого другого способа определить, как подключаться к определённому порту, нет. Есть организация IANA, котрая регистрирует эти порты (cat /etc/services).
Вопросы
В чём разница между TCP-пакетами и UDP-датаграммами?
Они нужны для разных вещей. Например, при задаче широковещания не нужны не сообщ. о доставке, ни сообщ. об ошибках. Другой случай --- маленькие пакеты, на которые всегда должен быть какй-то ответ. Ещё один юзейс --- медленные обработка и ответ.
Сведения о ресурсах
Готовность (%) |
Продолжительность (ак. ч.) |
Подготовка (календ. ч.) |
Полный текст (раб. д.) |
Предварительные знания |
Level |
Maintainer |
Start date |
0 |
1 |
1 |
1 |
|
1 |
03.06.2008 |