Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BakalVoprosy - KC-2010_pre_Answers.doc
Скачиваний:
2
Добавлен:
07.07.2019
Размер:
1.01 Mб
Скачать
  1. Протокол тср. Структура сегментів, застосування. Встановлення та завершення з'єднання.

Гарантирует доставку сообщений между приложениями и требует предварительной установки соединения. Использует IP-протокол для доставки пакетов через сеть.

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

Сегмент состоит из заголовка 20 байт, TCP- опций и блока данных.

  • Порт-передатчик – порт протокола приложения-источника (16 бит)

  • Порт-приемник – порт протокола приложения-получателя (16 бит)

  • Номер последовательности – определяет первый байт данных в области

  • данных сегмента TCP (32 бит)

  • Номер подтверждения (32 бит) Если установлен флаг ACK, то это поле содержит номер последовательности, ожидаемый получателем в следующий раз. Помечает этот сегмент как подтверждение получения.

  • Смещение данных - Это поле определяет размер заголовка пакета TCP в 32-битных словах. Минимальный размер составляет 5 слов, а максимальный — 15, что составляет 20 и 60 байт соответственно. Смещение считается от начала заголовка TCP.

  • Зарезервировано - Зарезервировано (6 бит) для будущего использования и должны устанавливаться в ноль. Из них два (7-й и 8-й) уже определены:

CWR (Congestion Window Reduced) флаг установлен отправителем, чтоб указать, что получен пакет с установленным флагом ECE (RFC 3168)

ECE (ECN-Echo) — Поле «Эхо ECN» — указывает, что данный хост способен на ECN (явное уведомление перегрузки) и для указания отправителю о перегрузках в сети (RFC 3168)

  • Флаги (все по 1 бит):

UGR- флаг срочности

ACK - флаг подтверждения

PSH - инструктирует получателя протолкнуть данные, накопившиеся в приемном буфере, в приложение пользователя

RST - Оборвать соединения, сбросить буфер (очистка буфера)

SYN - Синхронизация номеров последовательности

FIN - флаг, будучи установлен, указывает на завершение соединения

  • Размер окна (16 бит)

  • Контрольная сумма (16 бит)

  • Указатель на неотложные данные (16 бит)

  • Таким образом TCP инкапсулирует (вкладывает) свой сегмент (пакет) в область данных IP пакета, который в свою очередь вкладывается в пакет Ethernet.

Установка соединения.

1. Клиент, который намеревается установить соединение, посылает серверу сегмент с номером последовательности и флагом SYN.

Сервер получает сегмент, запоминает номер последовательности и пытается создать сокет (буфера и управляющие структуры памяти) для обслуживания нового клиента.

В случае успеха сервер посылает клиенту сегмент с номером последовательности и флагами SYN и ACK, и переходит в состояние SYN-RECEIVED.

В случае неудачи сервер посылает клиенту сегмент с флагом RST.

2. Если клиент получает сегмент с флагом SYN, то он запоминает номер последовательности и посылает сегмент с флагом ACK.

Если он одновременно получает и флаг ACK (что обычно и происходит), то он переходит в состояние ESTABLISHED.

Если клиент получает сегмент с флагом RST, то он прекращает попытки соединиться.

3. Если сервер в состоянии SYN-RECEIVED получает сегмент с флагом ACK, то он переходит в состояние ESTABLISHED.

В противном случае после таймаута он закрывает сокет и переходит в состояние CLOSED.

Процесс называется «тройным рукопожатием», так как несмотря на то что возможен процесс установления соединения с использованием 4 сегментов (SYN в сторону сервера, ACK в сторону клиента, SYN в сторону клиента, ACK в сторону сервера), на практике для экономии времени используется 3 сегмента.

--- SYN, S: 12345, D: 80 --->

Host A <-- SYN, ACK, S: 80*, D: 12345 --- Host B (Server) 80* -> 53491

--- ACK, DATA, S: 12345, D: 80* --->

Завершение соединения.

Завершение соединения можно рассмотреть в три этапа:

1. Посылка серверу от клиента флагов FIN и ACK на завершения соединения.

2. Сервер посылает клиенту флаги ответа ACK , FIN, что соединение закрыто.

3. После получение этих флагов клиент закрывает соединение и в подтверждение отправляет серверу ACK, что соединение закрыто.

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