От версии 1.1 >
отредактировано Alexandr Fokin
на 2022/07/09 16:44
К версии < 1.4 >
отредактировано Alexandr Fokin
на 2022/07/09 16:58
>
Изменить комментарий: К данной версии нет комментариев

Комментарий

Подробности

Свойства страницы
Содержимое
... ... @@ -4,15 +4,22 @@
4 4  
5 5  |(% style="width:546px" %) |(% style="width:960px" %)(((
6 6  Основывается на протоколе IP для передачи и маршрутизации.
7 -Сегмент заворачивается в IP пакет.
7 +TCP сегмент заворачивается в IP пакет.
8 8  )))
9 9  |(% style="width:546px" %)Сегмент|(% style="width:960px" %)Блок единичного пакета/сообщения.
10 +Сегмент содержит данные и заголовок необходимой для работы информацией.
10 10  |(% style="width:546px" %)Клиент и Сервер|(% style="width:960px" %)TCP сервер слушает определенный сокет (привязка к IpAddress + Port).
11 11  TCP клиент подключается к серверу, устанавливается соединение.
12 12  |(% style="width:546px" %)Логическое соединение|(% style="width:960px" %)(((
13 13  Между 2 сторонами устанавливается логическое соединение, в рамках которого идет передача данных.
14 14  
15 -При этом соединение само по себе не имеет механизмов для определения разрыва сети, падения приложения одной из сторон или падения сервера.
16 +При этом соединение само по себе не имеет механизмов для определения разрыва сети, падения приложения одной из сторон или падения хоста. В некоторых случаях имеет смысл реализации пульса для отслеживания состояния соединения.
17 +
18 +Взаимодействие
19 +
20 +1. Установка соединения
21 +1. Обмен данными.
22 +1. Закрытие соединения.
16 16  )))
17 17  |(% style="width:546px" %)Потоковый (stream) передача|(% style="width:960px" %)(((
18 18  Отправка и получение данных идут в виде потока байт.
... ... @@ -25,13 +25,24 @@
25 25  
26 26  )
27 27  )))
28 -|(% style="width:546px" %)Гарантия доставки сегментов.|(% style="width:960px" %)При отправке данных (сегментов) каждая сторона фиксирует статус отправки и ожидает подтверждения. Если подтверждение не происходит в течении определенного времени, то один или группа сегментов (зависит от реализации) посылается повторно.
29 -|(% style="width:546px" %)Гарантия порядка получения (за счет нумерации данных)|(% style="width:960px" %)В метаданные сегмента записывается порядковый номер первого байта данных, который используется принимающей стороной для восстановления последовательности сегментов (т.к. они могут быть получены не в том порядке, в котором было отправлены).
30 -|(% style="width:546px" %)Гарантия целостности данных за счет контрольной суммы|(% style="width:960px" %)Перед отправкой в метаданные сегмента включается блок с контрольной суммой данных. При получении сегмента, контрольная сумма сверяется для проверки изменения содержимого сегмента.
31 -|(% style="width:546px" %)Окно приема|(% style="width:960px" %)
32 -|(% style="width:546px" %)Окно передачи|(% style="width:960px" %)
35 +|(% style="width:546px" %)Гарантия доставки сегментов.|(% style="width:960px" %)(((
36 +При отправке данных (сегментов) каждая сторона фиксирует статус отправки и ожидает подтверждения. Если подтверждение не происходит в течении определенного времени, то один или группа сегментов (зависит от реализации) посылается повторно.
33 33  
38 +Отметим, что возможна ситуация, когда сегменты достигли клиента, отправитель получил подтверждение, но приложение или хост упали, не выполнив окончательную обработку данных из этих сегментов.
39 +)))
40 +|(% style="width:546px" %)Гарантия порядка получения (за счет нумерации данных)|(% style="width:960px" %)(((
41 +В метаданные сегмента записывается порядковый номер первого байта данных, который используется принимающей стороной для восстановления последовательности сегментов (т.к. они могут быть получены не в том порядке, в котором было отправлены).
34 34  
43 +Также важно, что одно логическое сообщение приложение может быть разбито на несколько TCP сегментов, которые физически дойдет до получателя не в том порядке, в котором были отправлены, но их порядок будет восстановлен на стороне получателя при передаче в поток чтения.
44 +)))
45 +|(% style="width:546px" %)Гарантия целостности данных за счет контрольной суммы|(% style="width:960px" %)Перед отправкой в метаданные сегмента включается блок с контрольной суммой данных. При получении сегмента, контрольная сумма сверяется для проверки изменения содержимого сегмента.
46 +|(% style="width:546px" %)Окно приема|(% style="width:960px" %)Можно представить в виде некоторого буфера двигающегося вдоль данных по мере их приема.
47 +Если сегмент не попадает в окно приема то он отбрасывается.
48 +Если сегмент попадает в окно приема, но не является следующим по порядку, то он буферизуется, до того момента, как будут получены расположенные по порядку перед ним сегменты (и будет выведен в поток чтения после них).
49 +|(% style="width:546px" %)Окно передачи|(% style="width:960px" %)Можно представить в виде некоторого буфера двигающегося вдоль данных по мере их передачи.
50 +Определяет, какие сегменты можно отправить в текущий момент времени.
51 +Также в рамках него контролируются статус сегментов (было ли получено подтверждение о получении).
52 +
35 35  ----
36 36  
37 37