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