Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
Условно их можно назвать "запрос", "подтверждение" и "подтверждение на подтверждение". Такая процедура необходима, чтобы при получении какого-нибудь старого пакета (например, делается вторая попытка установить соединение) не возникало никаких неоднозначностей.
После успешного установления соединения участники могут начать обмениваться данными. Рассмотрим пример HTTP-сервера, который отправляет HMTL-страницу клиенту. Текст может быть слишком длинным, чтобы уместиться в один пакет, поэтому первая задача уровня TCP - разбить сообщение на несколько пакетов, а на стороне отправителя — собрать их опять в единое целое. Поскольку очередность пакетов несомненно важна, каждый получает порядковый номер.
Следующая задача протокола 2 — обеспечить гарантированную доставку. Делается это с помощью следующей процедуры. Отправитель посылает пакет с номером п и начинает ждать. Получатель в случае успешного прихода пакета п, отправляет подтверждение о получении ("квитанцию"), в котором также указывает номер п. Если отправитель в течение определенн-ного времени (тайм-аута) не получает подтверждения, он считает пакет п потерянным и отсылает его еще раз.
Окно имеет некоторый размер, предположим, 10. Это означает, что передача начинается с отсылки 10 первых пакетов. Получатель можег принять их не в том порядке, в каком они были отосланы. Тем не менее, на каждый успешно полученный пакет отсылается подтверждение с указанием номера такого пакета. Если отправитель отослал уже все 10 пакетов, но квитанция о получении пакета 1 так и не пришла, то передача приостанавливается, а по прошествии тайм-аута первый пакет считается потерянным и пересылается еще раз. Если же подтверждения приходят регулярно, то отправляются новые пакеты, но не более 10 единовременно.
Этот алгоритм носит название "скользящего окна". Если представить, что все пакеты выстроены в ряд, то окно "скользит" по нему, определяя, какие пакеты готовы для отсылки