Настройка сетей Microsoft дома и в офисе. Учебный курс
Шрифт:
Линейный алгоритм оценки вероятности может быть положен в основу используемого методикой RED метода вычисления вероятности потери дейтаграммы. Однако в него следует внести изменения, чтобы система не столь бурно реагировала на изменение степени загрузки сети. Это вызвано тем, что в реальной сети значение сетевого трафика постоянно изменяется в весьма широких пределах. В результате размер внутренней очереди маршрутизатора также отличается высокой степенью вариабельности. Если в алгоритме RED применяется упрощенный линейный метод, то вероятность отклонения последних дейтаграмм, поступивших в одном блоке, который и вызвал перегрузку, будет очень большой.
Причина этого заключается в том, что дейтаграммы
Каким же образом в алгоритме RED определять более высокую вероятность отклонения дейтаграмм по мере увеличении размера внутренней очереди и при этом сделать так, чтобы без крайней необходимости не отклонялись дейтаграммы в блоках, вызвавших перегрузку? Для ответа на этот вопрос необходимо вспомнить метод, примененный в протоколе TCP. Суть его состоит в том, что при вычислениях в каждый момент времени не следует использовать реальный размер очереди. Вместо этого в алгоритме RED определяется средневзвешенное значение размера внутренней очереди, которое используется для вычисления вероятности потери дейтаграмм. Величина средневзвешенного значения изменяется по экспоненциальному закону и корректируется каждый раз при получении очередной дейтаграммы.
В результате моделирования работы алгоритма RED и исследования его поведения в реальных условиях было выявлено много преимуществ этого метода. При перегрузке сети он позволяет избежать эффекта глобальной синхронизации, который возникает при применении метода усечения хвоста очереди. Кроме того, при кратковременной перегрузке метод RED без крайней необходимости не аннулирует дейтаграммы.
Сеанс связи TCP
Для установки сеанса связи протоколом TCP применяется метод трехстороннего квитирования связи. В простейшем случае процесс квитирования происходит так, как показано на рис. 4.6.
Рис. 4.6. Метод установки сеанса связи TCP
Первый сегмент, посылаемый в процессе квитирования, легко опознать, поскольку его полю SYN присвоена единица. Во втором сегменте данных единица присваивается двум полям, SYN и АС К. Это означает, что в нем находится сигнал подтверждения приема первого сегмента SYN и данные, предназначенные для продолжения процесса квитирования. В заголовке последнего сегмента единица находится только в поле АСК. Этот сегмент используется только для информирования получателя о том, что обе стороны уведомлены об установке соединения.
Обычно инициатором установки соединения выступает экземпляр протокола, выполняемый на одном из компьютеров, участвующих в сеансе связи. При этом экземпляр, выполняемый на другом компьютере, просто ожидает начала процесса квитирования. Тем не менее, в процессе квитирования предусмотрена ситуация, когда оба компьютера одновременно выступят инициаторами начала соединения. Таким образом, TCP-соединение может быть установлено как по инициативе одной из сторон, так и двух сторон одновременно. После установки соединения данные могут передаваться в обоих направлениях совершенно одинаково. Другими словами, обе стороны TCP-соединения являются равноправными.
Метод трехстороннего квитирования связи является необходимым и достаточным условием выполнения успешной синхронизации между двумя сторонами соединения. В процессе осуществления доставки сегментов данных они
Метод трехстороннего квитирования связи выполняет две важные функции. Во-первых, его применение гарантирует, что обе стороны соединения будут готовы к приему данных, о чем они будут взаимно осведомлены. Во-вторых, с его помощью выполняется процесс согласования начального порядкового номера. В процессе квитирования обе стороны соединения обмениваются начальными порядковыми номерами и ожидают подтверждения их приема. Порядковые номера используются для идентификации потоков данных, посылаемых каждой из сторон открытого соединения. Они выбираются сторонами самостоятельно во время открытия соединения.
Порядковые номера не могут всегда начинаться с одного и того же значения. В частности, экземпляр протокола TCP не может каждый раз при создании нового соединения назначать порядковый номер, равный единице. Естественно, при открытии соединения обе стороны будут согласовывать свои порядковые номера. Это делается для того, чтобы номера байтов, указываемые в сигналах подтверждения приема, соответствовали номерам, используемым в заголовках при передаче сегментов данных.
Чтобы понять, каким образом стороны, обменявшись всего тремя сообщениями, могут согласовать порядковые номера для двух потоков, необходимо вспомнить, что в заголовке любого сегмента содержится как поле порядкового номера, так и поле номера сигнала подтверждения приема. Предположим, что компьютер А является инициатором соединения. Тогда во время трехэтапного процесса квитирования в первом SYN-сегменте он передает второй стороне (то есть компьютеру Б) свой начальный порядковый номер и. Получив SYN-сегмент, компьютер Б сохраняет в памяти начальный порядковый номер компьютера А, после чего посылает ответный сегмент синхронизации. В одноименном поле его заголовка она указывает уже свой начальный порядковый номер у, а полю номера сигнала подтверждения приема присваивается значение и+1. Тем самым компьютер Б уведомляет компьютер А о том, что его начальный порядковый номер успешно получен, и что компьютер Б ожидает получить от компьютера А поток байтов, начинающийся с номера и+1. В третьем и последнем сегменте процесса квитирования компьютер А подтверждает получение порядкового номера для компьютера Б и сообщает ему, что он ожидает получить от компьютера Б поток байтов, начинающийся с номера и+1. В обоих случаях номера в сигналах подтверждения приема соответствуют принятому в протоколе TCP соглашению о следующем ожидаемом сегменте данных.
Ранее уже отмечалось, что в протоколе TCP выполняется процесс трехстороннего квитирования при помощи обмена сегментами, содержащими минимальное количество информации. Протокол TCP спроектирован так, что в нем возможна передача данных вместе с начальным порядковым номером непосредственно в сегментах квитирования. В подобных случаях модуль протокола TCP блокирует данные до завершения процесса квитирования. После того как соединение установлено, экземпляр протокола TCP может разблокировать данные и доставить их ожидающему приложению.