Изменения документа TCP
Редактировал(а) Alexandr Fokin 2022/12/12 12:13
<
>
отредактировано Alexandr Fokin
на 2022/07/09 17:16
на 2022/07/09 17:16
отредактировано Alexandr Fokin
на 2022/07/09 16:45
на 2022/07/09 16:45
Изменить комментарий:
К данной версии нет комментариев
Комментарий
-
Свойства страницы (1 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Содержимое
-
... ... @@ -1,30 +3,25 @@ 1 -**Transmission Control Protocol** 2 - 3 3 ---- 4 4 5 -**Основные моменты:**3 +**Основные понятия:** 6 6 7 7 |(% style="width:546px" %) |(% style="width:960px" %)((( 8 8 Основывается на протоколе IP для передачи и маршрутизации. 9 - TCP сегмент заворачивается в IP пакет.7 +Сегмент заворачивается в IP пакет. 10 10 ))) 11 11 |(% style="width:546px" %)Сегмент|(% style="width:960px" %)Блок единичного пакета/сообщения. 12 -Сегмент содержит данные и заголовок необходимой для работы информацией. 13 13 |(% style="width:546px" %)Клиент и Сервер|(% style="width:960px" %)TCP сервер слушает определенный сокет (привязка к IpAddress + Port). 14 14 TCP клиент подключается к серверу, устанавливается соединение. 15 15 |(% style="width:546px" %)Логическое соединение|(% style="width:960px" %)((( 16 16 Между 2 сторонами устанавливается логическое соединение, в рамках которого идет передача данных. 17 17 18 -При этом соединение само по себе не имеет механизмов для определения разрыва сети, падения приложения одной из сторон или падения хоста. В некоторых случаях имеет смыслреализации пульса для отслеживания состояния соединения.15 +При этом соединение само по себе не имеет механизмов для определения разрыва сети, падения приложения одной из сторон или падения сервера. 19 19 20 -Взаимодействие 21 - 22 22 1. Установка соединения 23 23 1. Обмен данными. 24 24 1. Закрытие соединения. 25 25 ))) 26 -|(% style="width:546px" %)Потоков ая(stream) передача|(% style="width:960px" %)(((27 - Данныераскладываютсявtcp сегменты,но стороныоперируетинтерфейсамив виде потока байт.21 +|(% style="width:546px" %)Потоковый (stream) передача|(% style="width:960px" %)((( 22 +Отправка и получение данных идут в виде потока байт. 28 28 29 29 Необходима реализация механизмов для определения границ сообщения в передаваемых данных 30 30 ( ... ... @@ -34,27 +34,12 @@ 34 34 35 35 ) 36 36 ))) 37 -|(% style="width:546px" %)Гарантия доставки сегментов.|(% style="width:960px" %)((( 38 -При отправке данных (сегментов) каждая сторона фиксирует статус отправки и ожидает подтверждения. Если подтверждение не происходит в течении определенного времени, то один или группа сегментов (зависит от реализации) посылается повторно. 32 +|(% style="width:546px" %)Гарантия доставки сегментов.|(% style="width:960px" %)При отправке данных (сегментов) каждая сторона фиксирует статус отправки и ожидает подтверждения. Если подтверждение не происходит в течении определенного времени, то один или группа сегментов (зависит от реализации) посылается повторно. 33 +|(% style="width:546px" %)Гарантия порядка получения (за счет нумерации данных)|(% style="width:960px" %)В метаданные сегмента записывается порядковый номер первого байта данных, который используется принимающей стороной для восстановления последовательности сегментов (т.к. они могут быть получены не в том порядке, в котором было отправлены). 34 +|(% style="width:546px" %)Гарантия целостности данных за счет контрольной суммы|(% style="width:960px" %)Перед отправкой в метаданные сегмента включается блок с контрольной суммой данных. При получении сегмента, контрольная сумма сверяется для проверки изменения содержимого сегмента. 35 +|(% style="width:546px" %)Окно приема|(% style="width:960px" %) 36 +|(% style="width:546px" %)Окно передачи|(% style="width:960px" %) 39 39 40 -Возможно ситуация, когда сегмент подтверждения может быть утерян (или же еще не успел прийти), и сегмент будет выслан повторно, но такое поведение не приведет к повреждению передаваемых данных. 41 - 42 -Отметим, что возможна ситуация, когда сегменты достигли клиента, отправитель получил подтверждение, но приложение или хост упали, не выполнив окончательную обработку данных из этих сегментов. 43 -))) 44 -|(% style="width:546px" %)Гарантия порядка получения (за счет нумерации данных)|(% style="width:960px" %)((( 45 -В заголовок сегмента записывается порядковый номер первого байта данных, который используется принимающей стороной для восстановления последовательности сегментов (т.к. они могут быть получены не в том порядке, в котором было отправлены). 46 - 47 -Также важно, что одно логическое сообщение приложение может быть разбито на несколько TCP сегментов, которые физически дойдет до получателя не в том порядке, в котором были отправлены, но их порядок будет восстановлен на стороне получателя при передаче в поток чтения. 48 -))) 49 -|(% style="width:546px" %)Гарантия целостности данных за счет контрольной суммы|(% style="width:960px" %)Перед отправкой в заголовок сегмента включается блок с контрольной суммой данных. При получении сегмента, контрольная сумма сверяется для проверки изменения содержимого сегмента. 50 -|(% style="width:546px" %)Окно приема|(% style="width:960px" %)Можно представить в виде некоторого буфера двигающегося вдоль данных по мере их приема. 51 -Если сегмент не попадает в окно приема, то он отбрасывается. 52 -Если сегмент приходит повторно (данный сегмент уже получен), то он отбрасывается. 53 -Если сегмент попадает в окно приема, но не является следующим по порядку, то он буферизуется, до того момента, как будут получены расположенные по порядку перед ним сегменты (и будет выведен в поток чтения после них). 54 -|(% style="width:546px" %)Окно передачи|(% style="width:960px" %)Можно представить в виде некоторого буфера двигающегося вдоль данных по мере их передачи. 55 -Определяет, какие сегменты можно отправить в текущий момент времени. 56 -Также в рамках него контролируются статус сегментов (было ли получено подтверждение о получении). 57 - 58 58 ---- 59 59 60 60