<
От версии < 1.13 >
отредактировано Alexandr Fokin
на 2022/07/09 17:30
К версии < 1.6 >
отредактировано Alexandr Fokin
на 2022/07/09 17:11
>
Изменить комментарий: К данной версии нет комментариев

Комментарий

Подробности

Свойства страницы
Содержимое
... ... @@ -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