1 / 38

Протокол TCP.

Протокол TCP. Тема:. Будут рассмотрены следующие вопросы:. - функции протокола TCP;. - структура TCP – сегмента;. - фаза установления соединения;. - фаза передачи данных;. - фаза ликвидации соединения. 1. Функции протокола TCP. 1.1. Базовая передача данных.

onslow
Download Presentation

Протокол TCP.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Протокол TCP. Тема: Будут рассмотрены следующие вопросы: - функции протокола TCP; - структура TCP – сегмента; - фаза установления соединения; - фаза передачи данных; - фаза ликвидации соединения. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  2. 1. Функции протокола TCP 1.1. Базовая передача данных • Протокол TCP рассматривает данные клиента как непрерывный не интерпретируемый поток октетов. • TCP разделяет этот поток на части для пересылки на другой узел в TCP-сегментах некоторого размера. • Для отправки или получения сегмента модуль TCP вызывает модуль IP. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  3. 1. Функции протокола TCP 1.2. Обеспечение достоверности Модуль TCP обеспечивает защиту от повреждения, потери, дублирования и нарушения очередности получения данных. Для выполнения этих задач все октеты в потоке данных сквозным образом пронумерованы в возрастающем порядке. Заголовок каждого сегмента содержит число октетов данных в сегменте и порядковый номер первого октета той части потока данных, которая пересылается в данном сегменте. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  4. 1. Функции протокола TCP 1.2. Обеспечение достоверности Для каждого сегмента вычисляется контрольная сумма, позволяющая обнаружить повреждение данных. Нумерация октетов используется также для упорядочения данных в порядке очередности и обнаружения дубликатов каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  5. 1. Функции протокола TCP 1.3. Разделение каналов Протокол TCP обеспечивает работу одновременно нескольких соединений. Каждый прикладной процесс идентифицируется номером порта. Заголовок TCP-сегмента содержит номера портов процесса-отправителя и процесса-получателя. При получении сегмента модуль TCP анализирует номер порта получателя и отправляет данные соответствующему прикладному процессу. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  6. 1. Функции протокола TCP 1.4. Управление соединениями Соединение - это совокупность информации о состоянии потока данных, включающая сокеты, номера посланных, принятых и подтвержденных октетов, размеры окон. Открытие соединения клиентом осуществляется вызовом функции OPEN, которой передается сокет, с которым требуется установить соединение. Функция возвращает имя соединения. Закрытие соединения клиентом производится с помощью функции CLOSE, которой передается имя соединения. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  7. 1. Функции протокола TCP 1.4. Управление соединениями Различают два типа открытия соединения: активное и пассивное. При активном: TCP-модуль начинает процедуру установления соединения с указанным сокетом При пассивном: TCP - модуль ожидает, что удаленный TCP-модуль начнет процедуру установления соединения с указанного сокета каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  8. А В 1. Функции протокола TCP 1.4. Управление соединениями Пример: Предположим, узел А желает установить соединение с узлом В. 1. В заголовке первого отправляемого из А в В TCP-сегмента (структуру TCP -сегмента мы рассмотрим чуть позже) содержится число (ISN), начиная с которого узел А будет нумеровать отправ-ляемые октеты (например 0). 1. SYN, ISN запрос А->B A->B ACK, SYN, ISN 2. +запрос B->A 3. ACK, данные B->A ok!+ данные от А данные 4. данные от В каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  9. А В 1. Функции протокола TCP 1.4. Управление соединениями 2. В ответ на получение такого сегмента узел В откликается посылкой TCP-сегмента, в заголовке которого установлен бит ACK, подтверждающий установление соединения для получения данных от узла А. Так как про-токол TCP обеспечивает полнодуплексную передачу данных, то узел В в этом же сегменте устанавливает бит SYN, означающий запрос связи для передачи данных от В к А, и передает свой ISN (например 0) 1. SYN, ISN запрос А->B A->B ACK, SYN, ISN 2. +запрос B->A 3. ACK, данные B->A ok!+ данные от А данные 4. данные от В каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  10. А В 1. Функции протокола TCP 1.4. Управление соединениями 3. Третий TCP-сегмент в сеансе посылается из А в В в ответ на сегмент, полученный из В. Так как соединение А -> В можно считать установленным (получено подтверждение от В), то узел А включает в свой сегмент полезные данные, нумерация которых начинается с номера ISN(A)+1. В заголовке этого же сегмента узел А устанавливает бит ACK, подтверждающий установ-ление связи B -> A, что позволяет хосту В включить в свой следующий сегмент полезные данные для А 1. SYN, ISN запрос А->B A->B ACK, SYN, ISN 2. +запрос B->A 3. ACK, данные B->A ok!+ данные от А данные 4. данные от В каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  11. 1. Функции протокола TCP 1.5. Управление потоком Для ускорения и оптимизации процесса передачи больших объемов данных протокол TCP определяет метод управления потоком, называемый методом скользящего окна, который позволяет отправителю посылать очередной сегмент, не дожидаясь подтверждения о получении в пункте назначения предшествующего сегмента. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  12. 1. Функции протокола TCP 1.5. Управление потоком Протокол TCP формирует подтверждения не для каждого конкретного успешно полученного пакета, а для всех данных от начала посылки до некоторого порядкового номера ACK SN (Acknowledge Sequence Number) исключительно. В качестве подтверждения успеш-ного приема, например, первых 2000 байт, высылается ACK SN = 2001: это означает, что все данные в байтовом потоке под номерами от ISN+1=1 до данного ACK SN -1 (2000) успешно получены каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  13. 1. Функции протокола TCP 1.5. Управление потоком Вместе с посылкой отправителю ACK SN получатель объяв-ляет также “размер окна”, например - 6000. Значит отпра-витель может посылать данные с порядковыми номерами от текущего ACK SN = 2001 до (ACK SN + размер окна -1) = 8000, не дожидаясь подтверждения со стороны получателя. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  14. 1. Функции протокола TCP 1.5. Управление потоком Допустим, в данный момент отправитель посылает тысяче-октетный сегмент с порядковым номером данных SN=4001. Если не будет получено новое подтверждение (новый ACK SN), отправитель будет посылать данные, пока он остается в пределах объявленного окна, то есть до номера 8001. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  15. 31 24 0 10 16 4 Портисточника Порт назначения Порядковый номер сегмента Порядковый номер подтверждения Смещение данных Резерв Флаги Размер окна Указатель срочности Контрольная сумма Опции Заполнитель Данные 2. Структура TCP-сегмента Формат ТСР сегмента представлен на рисунке каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  16. 2. Структура TCP-сегмента «Порт источника» и «Порт назначения» - определяют передающее и приемное приложения, соответственно. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  17. 2. Структура TCP-сегмента «Порядковый номер сегмента» - определяет позицию первого байта данных сегмента в байтовом потоке источника при значении флага SYN=0 (в режиме передачи данных). В режиме установления соединения, когда флаг SYN установлен в 1, в этом поле содержится начальный номер последовательности номеров байтов данного потока (ISN – initial sequence number); значение номера первого байта данных этого потока будет ISN+1. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  18. 2. Структура TCP-сегмента «Порядковый номер подтверждения» - это поле в режиме с установленным флагом ACK (режим передачи данных) содержит порядковый номер байта данных, который передающий модуль ожидает получить от приемного узла; тем самым подтвер-ждается правильность приема всех предыдущих байтов. В режиме установления соединения (ACK=0) значение этого поля не учитывается. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  19. 2. Структура TCP-сегмента «Смещение данных» - поле определяет длину заголовка сегмента в 32-битных словах; эта инфор-мация позволяет приемному модулю определить начало поля данных, т.к. заголовок может содержать опциональное поле переменной длины. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  20. 2. Структура TCP-сегмента «Резерв» - поле в настоящее время не используется и заполняется нулями. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  21. 2. Структура TCP-сегмента «Контрольные биты» - поле длиной 6 бит, каждый из которых является флагом; их последовательность и смысл следующие: URG – флаг срочности передачи сегмента; ACK – флаг указывающий на достоверность значений в поле «Порядковый номер подтверждения» PSH – включена функция «проталкивания» сегмен- та, т.е. модуль ТСР должен передать сегмент приложению немедленно каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  22. 2. Структура TCP-сегмента «Контрольные биты»: RST – указание приемному модулю разорвать соединение по причине каких-то аномалий; используется для перезагрузки соединения SYN – флаг установления соединения, синхрони- зации порядковых номеров сегментов FIN – флаг, индицирующий, что у передающего модуля нет данных для передачи; передающее приложение остается в соединении с приемным и принимает данные последнего. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  23. 2. Структура TCP-сегмента «Размер окна» - поле определяет количество байтов, которое модуль TCP может принять (Wa). каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  24. 2. Структура TCP-сегмента «Контрольная сумма» - значение этого поля рассчитывается по всему сегменту с дополнением его нулями до размера кратного 16 битам и 96 битным псевдозаголовком, включаемым перед заголовком TCP и содержащим сетевые адреса отправителя и получателя, тип протокола и длину ТCP сегмента. Эти дополнения используются только для расчета контрольной суммы и не передаются. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  25. 2. Структура TCP-сегмента «Указатель срочности» - значение этого поля при установленном флаге URG, будучи добавленным к значению поля «Порядковый номер сегмента», определяетпоследний байт срочных данных. Покольку приемный модуль ТСР передает приложению байты строго по порядку, то все байты, содержащиеся в приемном буфере, вплоть до байта с определенным, как указано выше номером, будут рассматриваться как срочные. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  26. 2. Структура TCP-сегмента «Опции» - поле используется для определения других, не предусмотренных заголовком, функций. Так например, это поле часто используется для передачи величины максимального размера сегмента (maximum segment size - MSS). В высокоскоростных сетях это поле используется для задания таких параметров как «Коэффициент масштабирования окна» (до 214) и «Временная метка». Последние важны в ситуации когда полный цикл нумерации байт может быть пройден за время жизни сетевого пакета. Наличие временных меток в каждом сегменте позволяет также вычислить время полного оборота (RTT). каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  27. Хост А Хост Б SYN, Seq_no = m SYN, Seq_no = k, ACK, Ack_no = m+1 Seq_no = m+1, ACK, Ack_no = k+1 3. Фаза установки соединения Фаза установления соединения, предшествующая фазе передачи данных, содержит следующие действия 1. Хост А отправляет хосту Б запрос соединения посред-ством установки флага SYN и инициализирует значе-ние начального номера нумерующей последова-тельности (Seq_no = m). каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  28. Хост А Хост Б SYN, Seq_no = m SYN, Seq_no = k, ACK, Ack_no = m+1 Seq_no = m+1, ACK, Ack_no = k+1 3. Фаза установки соединения Фаза установления соединения, предшествующая фазе передачи данных, содержит следующие действия 2. Хост Б отвечает на этот запрос установкой флага ACK и определяет поле «Порядковый номер подтверждения» значе-нием на единицу большим m (Ack_no = m+1); однов-ременно, хост Б в своем ответе А отправляетзапрос соединения (SYN) и также инициализирует значе-ние начального номера своей нумерующей последова-тельности (Seq_no = k). каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  29. Хост А Хост Б SYN, Seq_no = m SYN, Seq_no = k, ACK, Ack_no = m+1 Seq_no = m+1, ACK, Ack_no = k+1 3. Фаза установки соединения Фаза установления соединения, предшествующая фазе передачи данных, содержит следующие действия 3. Хост А отвечает на запрос соединения от хоста Б установкой флага ACK и подтверждением ожидания следующего байта данных с порядковым номером k+1 (Ack_no = k+1); при этом, значение поля «Порядко-вый номер сегмента» устанавливается в значе-ние m+1 (Seq_no = m+1). каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  30. Хост А Хост Б Win=2048, No data Seq_no=0, Ack_no=2000, Seq_no=2000, Ack_no=1, t1 Win=1024, Data=2000-3023 Seq_no=3024, Ack_no=1, t2 Win=1024, Data=3024-4047 Win=512, Data=1-128 Seq_no=1, Ack_no=4048, Seq_no=4048, Ack_no=129, t4 Win=1024, Data=4048-4559 4. Фаза передачи данных Пусть в момент t0 ТСР-модуль хоста В объявил величину своего окна равной 2048 байт и номер следующего ожи-даемого байта 2000. Такой размер окна поз-воляет хосту А от-править без подтверж-дения 2 Кбайта данных, однако в его выходном буфере име-ется лишь 1024 байта данных. t0 t3 каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  31. Хост А Хост Б Win=2048, No data Seq_no=0, Ack_no=2000, Seq_no=2000, Ack_no=1, t1 Win=1024, Data=2000-3023 Seq_no=3024, Ack_no=1, t2 Win=1024, Data=3024-4047 Win=512, Data=1-128 Seq_no=1, Ack_no=4048, Seq_no=4048, Ack_no=129, t4 Win=1024, Data=4048-4559 4. Фаза передачи данных Одновременно, он объ-являет величину свое-го окна равной 1024 байта и подтверждает, что номер ожидаемого первого байта от хоста Б должен быть равен 1. Хост Б задерживает выдачу подтверждения на прибывший сегмент данных, полагая, что у него появятся данные для отправки хосту А, вместе с которыми он отправит и подтвер-ждение. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  32. Хост А Хост Б Win=2048, No data Seq_no=0, Ack_no=2000, Seq_no=2000, Ack_no=1, t1 Win=1024, Data=2000-3023 Seq_no=3024, Ack_no=1, t2 Win=1024, Data=3024-4047 Win=512, Data=1-128 Seq_no=1, Ack_no=4048, Seq_no=4048, Ack_no=129, t4 Win=1024, Data=4048-4559 4. Фаза передачи данных Тем временем, в моментt2 модуль ТСР хоста А снова получил от своего приложения 1024 байт данных и передал их хосту Б. После этого величина окна отправки на хосте А стала равной нулю и дальнейшая отправ-ка им данных до получения подтверж-дения от хоста Б ока-зывается невозмож-ной. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  33. Хост А Хост Б Win=2048, No data Seq_no=0, Ack_no=2000, Seq_no=2000, Ack_no=1, t1 Win=1024, Data=2000-3023 Seq_no=3024, Ack_no=1, t2 Win=1024, Data=3024-4047 Win=512, Data=1-128 Seq_no=1, Ack_no=4048, Seq_no=4048, Ack_no=129, t4 Win=1024, Data=4048-4559 4. Фаза передачи данных В момент t3 модуль ТСР хоста Б получил 128 байт данных для отп-равки; вместе с ними он отправляет подтверж-дение получения от хоста А двух сегментов данных, указывая Ack_no=4048. К этому моменту в буферной памяти модуля ТСР хос-та Б оказывается сво-бодными лишь 512 байт, поэтому он объявляет величину своего окна приема равной 512 каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  34. Хост А Хост Б Win=2048, No data Seq_no=0, Ack_no=2000, Seq_no=2000, Ack_no=1, t1 Win=1024, Data=2000-3023 Seq_no=3024, Ack_no=1, t2 Win=1024, Data=3024-4047 Win=512, Data=1-128 Seq_no=1, Ack_no=4048, Seq_no=4048, Ack_no=129, t4 Win=1024, Data=4048-4559 4. Фаза передачи данных Когда хост А получит этот сегмент, он установит величину окна отсылки равной 512 байт и, несмотря на то, что в момент t4 в его буфере имеется 2048 байт данных, он сможет отослать только 512 байт и не перегрузит буфер хоста Б. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  35. TCP- А TCP- Б FIN, Seq_no=4386 Data=303-452, Ack_no=4387 Доставлены 150 байт Аck_no=453 FIN, Seq_no=453, Ack_no=4387 Ack_no=454 5. Фаза ликвидации соединения Хост А инициализирует процедуру разрыва соединения, отправляя сегмент с флагом FIN. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  36. TCP- А TCP- Б FIN, Seq_no=4386 Data=303-452, Ack_no=4387 Доставлены 150 байт Аck_no=453 FIN, Seq_no=453, Ack_no=4387 Ack_no=454 5. Фаза ликвидации соединения Модуль ТСР хоста Б подтверждает прием этого сегмента и пере-дает извещение о зап-росе на закрытие сое-динения своему прило-жению. Одновременно, располагая данными для хоста А, модуль ТСР хоста Б отправ-ляет сегмент со 150 байтами данных хосту А, и получает подтвер-ждение их приема. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  37. TCP- А TCP- Б FIN, Seq_no=4386 Data=303-452, Ack_no=4387 Доставлены 150 байт Аck_no=453 FIN, Seq_no=453, Ack_no=4387 Ack_no=454 5. Фаза ликвидации соединения Получив от своего приложения под-тверждение разрыва соединения прото-кольный модуль хоста Б отправляет встреч-ный сегмент FIN и получает на него под-тверждение каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

  38. TCP- А TCP- Б FIN, Seq_no=4386 Data=303-452, Ack_no=4387 Доставлены 150 байт Аck_no=453 FIN, Seq_no=453, Ack_no=4387 Ack_no=454 5. Фаза ликвидации соединения Модуль TCP хоста А переходит в состояние ожидания и запус-кает таймер TIME_WAIT с начальным значением задержки равным удвоенному максимальному времени жизни сегмента. При достижении этим таймером значения нуль, хост А ликви-дирует соединение и удаляет запись о нем из таблицы соеди-нений. каф. ВТ, ТОГУ, г. Хабаровск, вед. преп. Шоберг А.Г.

More Related