Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lectures_10.docx
Скачиваний:
82
Добавлен:
17.03.2016
Размер:
3.03 Mб
Скачать
    1. Установка тср-соединения

В протоколе ТСР-соединения устанавливаются с помощью «тройного рукопожатия», описанного в разделе «Установка соединения». Чтобы установить соединение, одна сторона (например, сервер) пассивно ожидает входящего соединения, выполняя примитивы LISTEN и ACCEPT, либо указывая конкретный источник, либо не указывая его.

Другая сторона (например, клиент) выполняет примитив CONNECT, указывая IP- адрес и порт, с которым он хочет установить соединение, максимальный размер ТСР-сегмента и, по желанию, некоторые данные пользователя (например, пароль). Примитив CONNECT посылает TCP-сегмент с установленным битом SYN и сброшенным битом АСК и ждет ответа.

Когда этот сегмент прибывает в пункт назначения, TCP-сущность проверяет, выполнил ли какой-нибудь процесс примитив LISTEN, указав в качестве параметра тот же порт, который содержится в поле Порт получателя. Если такого процесса нет, она отвечает отправкой сегмента с установленным битом RST для отказа от соединения.

Если какой-либо процесс прослушивает какой-либо порт, то входящий ТСР- сегмент передается этому процессу. Последний может принять соединение или от-казаться от него. Если процесс принимает соединение, он отсылает в ответ под-тверждение. Последовательность TCP-сегментов, посылаемых в нормальном случае, показана на рис. 6.25, а. Обратите внимание на то, что сегмент с установ-ленным битом SYN занимает 1 байт пространства порядковых номеров, что по-зволяет избежать неоднозначности в их подтверждениях.

Если два хоста одновременно попытаются установить соединение друг с дру-гом, то последовательность происходящих при этом событий будет соответство-вать рис. 6.25, б. В результате будет установлено только одно соединение, а не два, так как пара конечных точек однозначно определяет соединение. То есть если оба соединения пытаются идентифицировать себя с помощью пары (х, у), делается всего одна табличная запись для (х, у). 

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

    1. Разрыв соединения tcp

Хотя ТСР-соединения являются полнодуплексными, чтобы понять, как происходит их разъединение, лучше считать их парами симплексных соединений. Каждое симплексное соединение разрывается независимо от своего напарника. Чтобы разорвать соединение, любая из сторон может послать TCP-сегмент с установленным в единицу битом FIN, что означает, что у него больше нет данных для передачи. Когда этот TCP-сегмент получает подтверждение, это направление передачи закрывается. Тем не менее, данные могут продолжать передаваться неопределенно долго в противоположном направлении. Соединение разрывается, когда оба направления закрываются. Обычно для разрыва соединения требуются четыре TCP-сегмента: по одному с битом FIN и по одному с битом АСК в каждом направлении. Первый бит АСК и второй бит FIN могут также содержаться в одном ТСР- сегменте, что уменьшит количество сегментов до трех.

Как при телефонном разговоре, когда оба участника могут одновременно попрощаться и повесить трубки, оба конца ТСР-соединения могут послать FIN-cer- менты в одно и то же время. Они оба получают обычные подтверждения, и соединение закрывается. По сути, между одновременным и последовательным разъединениями нет никакой разницы.

Чтобы избежать проблемы двух армий, используются таймеры. Если ответ на посланный F/iV-сегмент не приходит в течение двух максимальных интервалов времени жизни пакета, отправитель Д/У-сегмента разрывает соединение. Другая сторона в конце концов заметит, что ей никто не отвечает, и также разорвет соединение. Хотя такое решение и не идеально, но, учитывая недостижимость идеала, приходится пользоваться тем, что есть. На практике проблемы возникают довольно редко.

    1. Выводы

Транспортный уровень – это ключ к пониманию многоуровневых протоколов. Он предоставляет различные услуги, наиболее важной из которых является сквозной, надежный, ориентированный на соединение поток байтов от отправителя к получателю. Доступ к нему предоставляется при помощи сервисных примитивов, позволяющих устанавливать, использовать и разрывать соединения.

Транспортные протоколы должны обладать способностью управлять соединением в ненадежных сетях. Установка соединения осложняется возможностью существования дубликатов пакетов, которые могут появляться в самый неподходящий момент. Для борьбы с этими дубликатами при установке соединения применяется алгоритм «тройного рукопожатия». Разрыв соединения проще установки и, тем не менее, далеко не тривиален из-за наличия проблемы двух армий.

Даже если сетевой уровень абсолютно надежен, у транспортного уровня полно работы. Он должен обрабатывать все служебные примитивы, управлять соединениями и таймерами, а также предоставлять и использовать кредиты.

Основными транспортными протоколами Интернета являются TCP и UDP. UDP – это протокол без установления соединения, который работает с IP-пакетами и занимается обеспечением мультиплексирования и демультиплексирования нескольких процессов с использованием единого IP-адреса. UDP может использоваться при клиент-серверных взаимодействиях, например, при удаленном вызове процедур. Кроме того, на его основе можно создавать протоколы реального времени, такие как RTP.

Наиболее распространенным протоколом Интернета является TCP. Он обеспечивает надежную двухстороннюю потоковую байтовую передачу. Он использует 20-байтный заголовок для всех сегментов. Сегменты могут фрагментироваться маршрутизаторами Интернета, поэтому хосты должны уметь восстанавливать исходные сегменты из отдельных фрагментов. Оптимизации производительности протокола TCP было уделено много внимания. Для этого в нем применяются алгоритмы Нагля (Nagle), Кларка (Clark), Джекобсона (Jacobson), Карна (Кагп) и др. Беспроводные линии связи приводят к усложнению протокола TCP. Транзакционный TCP – это расширение традиционного протокола TCP, предназначенное для поддержки клиент-серверного взаимодействия с использо-ванием упрощенной процедуры обмена пакетами.

Производительность сети обычно в основном определяется протоколом и на-кладными расходами по обработке TPDU-модулей, причем с увеличением ско-рости передачи данных эта ситуация ухудшается. При разработке протоколов следует стараться минимизировать количество TPDU-модулей, количество пе-реключений контекста и время копирования TPDU-модулей. В гигабитных сетях требуются простые протоколы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]