Tcp проверка ошибок

Improve Article

Save Article

Like Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    Like Article

    Prerequisite – TCP/IP Model 
    TCP protocol has methods for finding out corrupted segments, missing segments, out-of-order segments and duplicated segments. 

    Error control in TCP is mainly done through the use of three simple techniques

    1. Checksum – Every segment contains a checksum field which is used to find corrupted segments. If the segment is corrupted, then that segment is discarded by the destination TCP and is considered lost.
    2. Acknowledgement – TCP has another mechanism called acknowledgement to affirm that the data segments have been delivered. Control segments that contain no data but have sequence numbers will be acknowledged as well but ACK segments are not acknowledged.
    3. Retransmission – When a segment is missing, delayed to deliver to a receiver, corrupted when it is checked by the receiver then that segment is retransmitted again. Segments are retransmitted only during two events: when the sender receives three duplicate acknowledgements (ACK) or when a retransmission timer expires. 
      • Retransmission after RTO: TCP always preserves one retransmission time-out (RTO) timer for all sent but not acknowledged segments. When the timer runs out of time, the earliest segment is retransmitted. Here no timer is set for acknowledgement. In TCP, the RTO value is dynamic in nature and it is updated using the round trip time (RTT) of segments. RTT is the time duration needed for a segment to reach the receiver and an acknowledgement to be received by the sender.
      • Retransmission after Three duplicate ACK segments: RTO method works well when the value of RTO is small. If it is large, more time is needed to get confirmation about whether a segment has been delivered or not. Sometimes one segment is lost and the receiver receives so many out-of-order segments that they cannot be saved. In order to solve this situation, three duplicate acknowledgement method is used and missing segment is retransmitted immediately instead of retransmitting already delivered segment. This is a fast retransmission because it makes it possible to quickly retransmit lost segments instead of waiting for timer to end.

    This article is contributed by Swasthik. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. 

    Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 

    Last Updated :
    13 Jun, 2022

    Like Article

    Save Article

    30.12.2019GATE CS, Компьютерные сети

    Обязательное условие — модель TCP / IP
    Протокол TCP имеет методы для обнаружения поврежденных сегментов, отсутствующих сегментов, сегментов, вышедших из строя и дублированных сегментов.
    Контроль ошибок в TCP в основном осуществляется с помощью трех простых методов :

    1. Контрольная сумма — каждый сегмент содержит поле контрольной суммы, которое используется для поиска поврежденного сегмента. Если сегмент поврежден, то этот сегмент удаляется целевым TCP и считается потерянным.
    2. Подтверждение — TCP имеет другой механизм, называемый подтверждением, чтобы подтвердить, что сегменты данных были доставлены. Сегменты управления, которые не содержат данных, но имеют порядковый номер, также будут подтверждены, но сегменты ACK не будут подтверждены.
    3. Повторная передача когда сегмент отсутствует, задерживается для доставки получателю, поврежден, когда он проверяется получателем, затем этот сегмент повторно передается. Сегменты ретранслируются только во время двух событий: когда отправитель получает три дублированных подтверждения (ACK) или когда истекает таймер повторной передачи.
      1. Повторная передача после RTO: TCP всегда сохраняет один таймер ожидания повторной передачи (RTO) для всех отправленных, но не подтвержденных сегментов. Когда время таймера истекает, самый ранний сегмент передается повторно. Здесь таймер не установлен для подтверждения. В TCP значение RTO носит динамический характер и обновляется с использованием времени прохождения (RTT) сегментов. RTT — это продолжительность времени, необходимая для того, чтобы сегмент достиг получателя, и подтверждение, которое будет получено отправителю.
      2. Повторная передача после трех дублированных сегментов ACK: метод RTO хорошо работает, когда значение RTO мало. Если он большой, требуется больше времени, чтобы получить подтверждение о том, доставлен сегмент или нет. Иногда один сегмент теряется, и получатель получает так много неупорядоченных сегментов, что их невозможно сохранить. Чтобы разрешить эту ситуацию, используется три дублирующих метода подтверждения, и отсутствующий сегмент ретранслируется немедленно вместо повторной передачи уже доставленного сегмента. Это быстрая повторная передача, поскольку она позволяет быстро повторно передавать потерянные сегменты вместо ожидания окончания таймера.

    Эта статья предоставлена Swasthik . Если вам нравится GeeksforGeeks и вы хотели бы внести свой вклад, вы также можете написать статью, используя contrib.geeksforgeeks.org, или отправить свою статью на электронный адрес contrib@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

    Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

    Рекомендуемые посты:

    • Разница между контролем потока и контролем затора
    • Обнаружение ошибок и восстановление в компиляторе
    • Обработка ошибок в дизайне компилятора
    • Обнаружение ошибок в компьютерных сетях
    • Техника обнаружения ошибок Bit Stuffing с использованием Java
    • TCP перегружен
    • Методы управления параллелизмом
    • Контроль доступа в компьютерной сети
    • Управление доступом на основе ролей
    • Временная метка на основе управления параллелизмом
    • Контроль перегрузки в компьютерных сетях
    • Инструкции по управлению машиной в микропроцессоре
    • Внедрение блока управления и его дизайн
    • Протокол управления параллелизмом двухфазной блокировки (2-PL) | Набор 3
    • Методы контроля заторов в компьютерных сетях

    Контроль ошибок в TCP

    0.00 (0%) 0 votes

    Контроль ошибок

    TCP — достоверный протокол транспортного уровня. Это означает, что прикладная программа доставляет поток данных к TCP, к прикладной программе на другом конце в порядке, без ошибок и без потери любой части или дублирования.

    TCP обеспечивает достоверность, используя контроль ошибок. Контроль ошибок включает в себя механизмы обнаружения:

    • искаженных сегментов;
    • потери сегментов, нарушения порядка следования сегментов;
    • дублирования сегментов.

    Контроль ошибок также включает механизм для коррекции ошибок, после того как они обнаружены.

    Обнаружение и коррекция ошибок

    Обнаружение ошибок в TCP достигается с помощью использования трех простых инструментов: контрольной суммы, подтверждения и контроля по времени (time-out). Каждый сегмент включает в себя поле контрольной суммы, которое используется для проверки искаженности сегмента. Если сегмент искажен, он удаляется пунктом назначения TCP. TCP применяет метод подтверждения для получения сведений о том, что сегмент достиг пункта назначения неискаженным. Отрицательное подтверждение не используется в TCP. Если сегмент не подтвержден, прежде чем окончится контрольное время, это считается признаком искажения или потери и сегмент будет передан повторно.

    Искаженный сегмент

    Рис. 10.10 показывает прибытие искаженного сегмента на пункт назначения.

    Искаженный сегмент

    Рис.
    10.10.
    Искаженный сегмент

    В этом примере источник посылает сегменты с 1 до 3, каждый по 200 байт. Последовательность номеров начинается с 1201 в сегменте 1.

    TCP приемника принимает сегменты 1 и 2 , используя контрольную сумму, находит, что они свободны от ошибок. Он подтверждает принятие сегментов 1 и 2, используя номер 1 601, который означает, что получены нормально и неискаженно байты 1201 до 1600 и ожидается получения байта 1601. Однако он нашел, что сегмент 3 искажен, и удаляет сегмент 3. Заметим, что, хотя он получил байты 1601 до 1800 в сегменте 3, пункт назначения не считает его полученным, потому что этот сегмент искажен. После того как сработает счетчик времени для сегмента 3, источник TCP передаст повторно сегмент 3. После получения сегмента 3 пункт назначения посылает подтверждение для байта 1801, которое указывает, что он получил байты от 1201 до 1800 неповрежденными и в пределах заданного времени.

    Потеря сегмента

    Рис. 10.11. показывает случай потери сегмента. Ситуация точно та же, как и при искаженном сегменте. Другими словами, от точки источника и до пункта назначения действия при потере сегмента те же, что и при его искажении. Разница в том, что искаженный сегмент удаляется конечным пунктом назначения; потерянный сегмент удаляется любым промежуточным узлом и не достигает конечного пункта.

    Потерянный сегмент

    Рис.
    10.11.
    Потерянный сегмент

    Дублированный сегмент

    Дублированный сегмент, например, может быть создан источником TCP, когда до окончания контрольного времени не прибыло подтверждение. Обработка дублированного сегмента — простой процесс для пункта назначения TCP. Пункт назначения TCP ждет продолжения потока байт. Когда прибывает пакет, который содержит тот же порядковый номер, что и другой полученный сегмент, пункт назначения удаляет пакет.

    Сегмент с нарушением порядка

    TCP использует услуги IP, протокола сетевого уровня, не обеспечивающего достоверности, не ориентированного на соединение. TCP-сегмент инкапсулируется в IP-дейтаграмму. Каждая дейтаграмма — независимая единица. Маршрутизаторы могут послать каждую дейтаграмму по любому маршруту, найденному ими по ситуации. Одна дейтаграмма может следовать маршрутом с короткой задержкой; другая может следовать маршрутом с длительной задержкой. Если дейтаграмма прибывает с нарушением порядка, сегменты TCP, которые инкапсулированы в дейтаграмме, с высокой степенью вероятности будут в беспорядке.

    Обработка сегментов с нарушением порядка пунктом назначения очень проста: он не подтверждает сегмент с нарушением порядка, пока не примет все сегменты, которые предшествуют ему. Конечно, если подтверждение задержано, в TCP-источнике может закончиться контрольное время и сегмент может быть выслан повторно. Дубликат затем будет удален пунктом назначения.

    Потеря подтверждения

    Рис. 10.12. показывает потерю подтверждения, которое посылается пунктом назначения. Потеря подтверждения может быть даже не замечена источником TCP. TCP использует систему накопленного подтверждения. Каждое подтверждение относится ко всей предыдущей информации, до последнего переданного байта.

    Например, если пункт назначения посылает подтверждение (ACK) сегмента с номером подтверждения 1801, это предполагает, что байты с 1201 до 1800 приняты. Если конечный пункт предварительно посылал подтверждение для байта 1601 и оно потеряно, то эта потеря подтверждения не учитывается.

    Потерянное подтверждение

    Рис.
    10.12.
    Потерянное подтверждение

    TCP — надежный протокол транспортного уровня. Это означает, что после того, как программа прикладного уровня доставит поток данных в TCP, она должна полагаться на TCP, чтобы доставить весь поток данных в приложение на другом конце, и это в порядке, без ошибок и без потери какой-либо части или повторяется.

    TCP использует контроль ошибок для обеспечения надежности. Контроль ошибок включает в себя следующие механизмы: обнаружение и повторная передача поврежденных сегментов, повторная передача потерянных сегментов, сохранение сегментов, прибывающих не по порядку, до истечения срока действия отсутствующих пакетов, а также обнаружение и отбрасывание сегментов дублированных пакетов. TCP использует три простых инструмента для контроля ошибок: контрольную сумму, подтверждение и тайм-аут.

    Контрольная сумма

    Каждое сообщение содержит поле контрольной суммы, чтобы проверить, не поврежден ли сегмент сообщения. Если обнаруживается, что сегмент сообщения поврежден из-за неверной контрольной суммы, он будет отброшен TCP конечной точки и считается потерянным. TCP требует, чтобы каждый сегмент использовал 16-битную контрольную сумму.

    подтверждать

             TCP использует подтверждения для подтверждения получения сегмента. Сегмент управления не несет данных, но он должен потреблять порядковый номер, и его также необходимо подтверждать, в то время как сегмент ACK не требует подтверждения [сегмент ACK не использует порядковые номера и не требует подтверждения] .

    Раньше TCP использовал только один тип подтверждения: накопленное подтверждение. В настоящее время некоторые реализации TCP также используют подтверждение выбора.

    Подтверждение накопления (ACK)

           Первоначальная конструкция TCP заключается в накоплении и подтверждении полученных сегментов сообщения. Получатель объявляет порядковый номер следующего байта, который он ожидает получить, и игнорирует все сегменты, которые прибывают не по порядку и сохраняются. Иногда это называется подтверждением положительного накопления или ACK. Слово «утвердительный» означает, что для отброшенных, потерянных или повторяющихся сегментов не предоставляется никакой обратной связи. 32-битное поле ACK в заголовке TCP используется для накопления подтверждений, и его значение действительно только тогда, когда флаг ACK равен 1.

    Подтверждение выбора (SACK)

           Теперь все больше и больше реализаций добавляют еще один тип подтверждения, называемый выборочным подтверждением или SACK. SACK не заменяет ACK, но сообщает отправителю дополнительную информацию. SACK должен сообщать о внепоследовательных блоках данных и повторяющихся блоках сегментов сообщения (т. Е. Полученных более одного раза). Однако нет места для добавления такой информации в заголовок TCP, поэтому SACK реализован как опция в конце заголовка TCP.

    Создать подтверждение

           Когда появился ресивер? При разработке TCP было определено несколько правил, которые используются во многих реализациях. Здесь мы приводим некоторые из наиболее часто используемых правил. Порядок этих правил не указывает на их важность.

    1. Когда конец A отправляет сегмент сообщения данных на конец B, он должен включать (совмещать) подтверждение, которое дает следующий порядковый номер, который конец A ожидает получить. Это правило уменьшает количество требуемых сегментов и, следовательно, уменьшает объем связи.

    2. Если у получателя нет данных для отправки, но он получает сегмент сообщения, который поступает по порядку (ожидаемый порядковый номер), и предыдущий сегмент сообщения был подтвержден, тогда получатель откладывает отправку подтверждающего сообщения до следующего сегмента. прибывает, или прошел период времени (обычно 500 мс). Другими словами, если только один сегмент, поступающий последовательно, не был подтвержден, получатель должен отложить отправку сегмента подтверждения. Это правило также уменьшает объем обмена данными в сегменте ACK.

    3. Когда прибывает сегмент с ожидаемым порядковым номером, а предыдущий сегмент, который прибыл в последовательности, не подтвержден, получатель должен немедленно отправить сегмент ACK. Другими словами, в любой момент может быть не более двух поступающих последовательно сегментов, которые не были подтверждены. Это позволяет избежать ненужных повторных передач, которые могут вызвать перегрузку сети.

    4. Когда приходит сегмент вне очереди с порядковым номером, превышающим ожидаемый порядковый номер, получатель немедленно отправляет сегмент ACK и объявляет следующий ожидаемый порядковый номер сегмента. Это приведет к быстрой повторной передаче потерянных сегментов.

    5. При поступлении недостающего сегмента получатель должен отправить сегмент ACK и объявить следующий ожидаемый порядковый номер. Это сообщает получателю, что сегмент, о котором было сообщено, как отсутствующий, был получен.

    6. Если достигается повторяющийся сегмент, получатель отбрасывает сегмент, но должен немедленно отправить подтверждение с указанием следующего ожидаемого сегмента. Это решает некоторые проблемы, вызванные потерей самого сегмента ACK.

    Повторная передача

             Ядром механизма контроля ошибок является повторная передача сегментов сообщения. Когда сегмент сообщения отправлен, он будет храниться в очереди, пока не будет подтвержден. Когда таймер повторной передачи истекает или отправитель получает три повторных ACK для первого сегмента в очереди, этот сегмент передается повторно.

    Повторная передача после RTO

           TCP отправителя устанавливает таймер времени ожидания повторной передачи (RTO) для каждого соединения. Когда таймер истекает (то есть истекает), TCP отправляет первый сегмент в очереди (то есть сегмент с наименьшим порядковым номером) и перезапускает таймер. Обратите внимание, что здесь мы снова предполагаем, что S (f) <S (n). Эту версию TCP иногда называют Tahoe. Как мы увидим позже, значение RTO в TCP является динамическим и обновляется в соответствии с временем приема-передачи (RTT) сегмента. RTT — это время, необходимое для того, чтобы сегмент достиг конца и получил свое подтверждение.

    Повторная передача после трех повторных сегментов ACK

           Если значение RTO не очень велико, достаточно описанных ранее правил повторной передачи сегмента. Однако, если отправителю разрешено ретранслировать быстрее, не дожидаясь истечения срока действия счетчика, это будет в большей степени способствовать пропускной способности сети.Поэтому большинство текущих реализаций соблюдают три повторных ACK и немедленно повторно передают потерянный сегмент. Правило. Эта функция называется быстрой повторной передачей, а версия TCP, использующая эту функцию, называется Reno. В этой версии, если для определенного сегмента поступают три повторных подтверждения (то есть исходный ACK плюс три идентичных копии), следующий сегмент будет повторно передан немедленно, без ожидания тайм-аута.

    Сегмент вне последовательности

      Текущая реализация TCP не отбрасывает сегменты сообщения вне очереди, но временно сохраняет эти сегменты сообщения и помечает их как сегменты сообщения вне очереди, пока не появятся недостающие сегменты сообщения. Обратите внимание, однако, что TCP никогда не доставляет процессу сегменты вне последовательности. TCP гарантирует, что данные должны быть доставлены процессу в порядке.

    Передача данных TCP FSM (конечный автомат)

      Передача данных TCP близка к выбору протокола ретрансляции, и в то же время немного похожа на GBN. Поскольку TCP принимает сегменты, которые поступают не по порядку, его поведение можно рассматривать как протокол SR, но поскольку его первоначальный механизм подтверждения является кумулятивным, это снова делает его похожим на GBN. Однако если SACK используется в реализации TCP, то он ближе к SR. Наиболее подходящей моделью для TCP является выбор протокола повторной передачи.

    Отправитель FSM

           Воспользуемся упрощенным автоматом для описания отправителя протокола TCP. Этот конечный автомат аналогичен тому, что мы обсуждали для протокола SR, но с некоторыми изменениями, специально предназначенными для TCP. Мы предполагаем, что коммуникация состоит из одного элемента, и сегмент сообщения использует ACK для подтверждения. На данный момент мы также проигнорировали вопросы подтверждения выбора и контроля перегрузки. На следующем рисунке изображен упрощенный конечный автомат отправителя TCP. Обратите внимание, что этот конечный автомат является только самым основным. Он не включает такие проблемы, как синдром запутанного окна (алгоритм Нэгла) и закрытие окна. Поскольку он определяет одностороннюю связь, он также игнорирует весь контент, связанный с двусторонней связью.

    Есть некоторые различия между FSM выше и FSM в обсуждаемом нами протоколе SR. Одно из отличий — это быстрая повторная передача (три повторяющихся правила ACK), а другое отличие состоит в том, что размер окна должен быть отрегулирован в соответствии со значением rwnd (на данный момент проблема контроля перегрузки игнорируется).

    Приемник FSM

          Давайте использовать упрощенный конечный автомат для описания принимающей стороны протокола TCP. Этот конечный автомат похож на конечный автомат обсуждаемого нами протокола SR. Есть только некоторые модификации специально для TCP. Мы предполагаем, что связь является односторонней, и сегмент сообщения использует ACK для подтверждения. Здесь мы также игнорируем вопросы подтверждения выбора и контроля перегрузки. На следующем рисунке изображен упрощенный конечный автомат приемника TCP. Обратите внимание, что мы проигнорировали такие проблемы, как синдром запутанного окна (алгоритм Кларка) и закрытие окон.

    Точно так же есть некоторые различия между этим автоматом и автоматом в соглашении SR, которое мы обсуждали. Одно из отличий — технология задержки ACK для односторонней связи. Другое отличие состоит в том, что ACK отправляется повторно, чтобы отправитель мог реализовать стратегию быстрой повторной передачи.

    Мы также должны подчеркнуть, что автомат приемника не так прост, как протокол SR в двусторонней связи. Нам необходимо рассмотреть некоторые другие стратегии, например, когда получатель имеет данные для возврата, он должен отправить своевременный ACK.

    Например

    Мы приведем примеры некоторых ситуаций, связанных с проблемами контроля ошибок, которые возникают в операциях TCP. В этих случаях мы используем прямоугольники для представления сегментов. Если сегмент сообщения содержит данные, дается образец текста номера байта и значение поля подтверждения. Если сегмент сообщения содержит только подтверждение, номер подтверждения отображается в небольшом прямоугольнике.

    Нормальная операция

           Первый случай — двусторонняя передача данных между двумя системами.Как показано на рисунке ниже, клиентский TCP отправляет один сегмент, а сервисный TCP отправляет три сегмента. На рисунке также указаны правила, которым следует каждое подтверждение. Для первого сегмента клиента и всех трех сегментов сервера следуйте правилам, приведенным ранее: 1. Поскольку в сегменте есть данные, которые должны быть отправлены, отображается следующий ожидаемый номер байта. Когда клиент получает первый сегмент сервера, у него больше нет данных для отправки, поэтому он отправляет только сегмент ACK. Однако, согласно правилу 2, это подтверждение необходимо отложить на 500 мс, чтобы увидеть, прибывают ли еще сегменты, и нельзя откладывать подтверждение навсегда. Когда приходит следующее сообщение, устанавливается еще один таймер задержки ACK. Однако до истечения этого таймера приходит третий сегмент. Согласно правилу 3, приход третьего сегмента вызывает еще одно подтверждение. Мы не показывали таймер RTO, потому что нет потерянных или задержанных сообщений. Определяем, что для таймера RTO все в норме.

    Потеря сегмента

           В этом случае мы хотим показать, что происходит, когда сегмент утерян или поврежден. Получатель обрабатывает потерянный сегмент так же, как поврежденный сегмент. Потерянные пакеты отбрасываются в определенном углу сети, а поврежденные пакеты отбрасываются самим получателем. Оба случая считаются потерянными. На следующем рисунке показан случай потери пакета (возможно, он был отброшен маршрутизатором в сети из-за перегрузки сети).

             Мы предполагаем, что передача данных односторонняя: один конец отправляет, а другой принимает. В этом случае отправитель отправляет сегменты 1 и 2 и немедленно получает подтверждение с помощью ACK (правило 3). Но сегмент 3 потерян, получатель получает сегмент 4, и последовательность нарушается. Получатель сохраняет данные в этом сегменте в буфере и оставляет промежуток, чтобы указать, что данные здесь не непрерывны. Получатель немедленно отправляет отправителю подтверждение и указывает ожидаемый следующий байт (правило 4). Обратите внимание, что получатель сохраняет байты 801-900, но никогда не доставит эти байты в приложение, пока пробел не будет заполнен.

    TCP отправителя поддерживает только один таймер RTO в течение всего периода соединения. По истечении времени ожидания третьего сегмента TCP отправителя повторно передает сообщение 3. На этот раз оно достигает получателя и обычно подтверждается (правило 5).

    Быстрая ретрансляция

           В данном случае мы хотим описать быструю ретрансляцию. Эта ситуация в основном аналогична второй, за исключением того, что RTO имеет большее значение, как показано на рисунке ниже.

              Когда получатель получает четвертый, пятый и шестой сегменты, все они инициируют подтверждение (правило 4). Отправитель получает четыре подтверждения с одинаковыми (три из них — дубликаты). Хотя время таймера еще не истекло, согласно правилам быстрой повторной передачи сегмент 3 должен быть повторно передан немедленно, то есть все эти повторные подтверждения ожидаемого сегмента. После повторной передачи сегмента 3 таймер перезапускается.

    Отложенный сегмент

     Четвертый случай выделяет сегмент отложенного сообщения. TCP использует IP-службы, а IP — протокол без установления соединения. Каждая дейтаграмма IP, инкапсулированная с сегментом TCP, может использовать разные маршруты и достигать конечного фокуса с разными задержками. Следовательно, сегмент TCP может быть задержан. Время ожидания отложенных сегментов может иногда истекать. Если задержанный сегмент прибывает после того, как прибыл его сегмент повторной передачи, он будет считаться дублированным сегментом и отбрасываться.

    Повторяющийся сегмент

      TCP отправителя может генерировать повторяющиеся сегменты сообщения.Например, если получатель ошибочно потерял отложенный сегмент сообщения, отправитель сделает это. Конечная обработка этого повторяющегося сегмента TCP — очень простой процесс. Поток байтов, ожидаемый концом TCP, является непрерывным. Когда приходит сегмент сообщения, если его порядковый номер равен порядковому номеру байта, который был получен и сохранен в прошлом, сегмент сообщения отбрасывается. В это время необходимо отправить ACK, и его ackNo указывает на нужный сегмент.

    Автоматически исправить отсутствующий ACK

           В этом случае следует отметить, что информация в одном недостающем подтверждении будет включена в следующее подтверждение, что также является наиболее важным преимуществом использования кумулятивного подтверждения. На следующем рисунке показано, что подтверждение, отправленное получателем данных, потеряно. В механизме подтверждения TCP утраченное подтверждение может даже не быть замечено исходным TCP. TCP использует накопленную систему подтверждения. Мы говорим, что следующее подтверждение автоматически корректирует влияние потерянного подтверждения.

    Утраченное подтверждение исправляется повторно переданным сегментом

           На рисунке ниже изображена потеря подтверждения.

            Если следующее подтверждение откладывается на долгое время или следующего подтверждения нет (потерянное подтверждение является последним), таймер RTO запускает процесс исправления, и в результате возникает повторяющийся сегмент. Когда получатель получает этот дублированный сегмент, он отбрасывает его, но следует понимать, что последний ACK должен быть повторно передан, чтобы уведомить отправителя о том, что этот сегмент (или несколько сегментов) был получен.

    Обратите внимание, что, хотя на рисунке есть два сегмента, которые не были подтверждены, повторно передается только один сегмент. Когда отправитель получает повторно переданный ACK, он знает, что два сегмента были безопасно и без изменений переданы другой стороне, потому что подтверждение накапливается.

    Тупик из-за потери подтверждения

          Также может возникнуть ситуация, когда потеря подтверждения может вызвать тупиковую ситуацию в системе. Эта ситуация возникает, когда получатель отправляет подтверждение при установке rwnd в 0, что означает, что отправителю предлагается временно закрыть свое окно. Через некоторое время получатель намеревается отменить это ограничение, но если у него нет данных для отправки, он отправит сегмент ACK и использует rwnd, равный ненулевому значению, чтобы отменить это ограничение. Если это подтверждение утеряно, то возникнут проблемы. Отправитель ждал подтверждения, чтобы объявить ненулевой rwnd. Получатель думает, что отправитель получил это подтверждение и ждет данных. Эта ситуация называется тупиком (deadlock), то есть обе стороны ждут ответа друг друга, и ничего не происходит. В это время таймер повторной передачи не установлен. Чтобы избежать тупиковой ситуации, необходимо разработать непрерывный таймер, при неправильной обработке потерянное подтверждение может вызвать тупик.

    Например, в протоколе TCP, обнаружение ошибок обеспечивается с помощью специального поля в заголовке, которое называется checksum (контрольная сумма). Контрольная сумма вычисляется передающей программой TCP по всему сегменту TCP и помещается в поле checksum. Принимающая программа TCP снова рассчитывает контрольную сумму, если значение вновь вычисленной контрольной суммы будет совпадать со значением контрольной суммы, рассчитанной на передаче, то принимающая программа TCP считает, что сегмент принят правильно (без искажений). Если же значения контрольных сумм не совпадают, то значит сегмент искажён; таким образом обнаружена ошибка. Об обнаружении ошибки принимающая программа TCP сообщает передающей программе TCP, не передавая квитанции подтверждения. А рас квитанция не получена принимающей

    программой TCP, значит произошла ошибка.

    Если квитанция не пришла к отправителю, то это означает, что либо сегмент искажён, либо сегмент потерян (если сегмент потерян, то и квитанция на него не придёт), либо потеряна квитанция.

    Для того, чтобы обеспечить квитирование, каждый сегмент должен нумероваться. В протоколе TCP каждому байту данных присваивается номер очереди. Номер очереди для первого байта данных в сегменте передаётся вместе с этим сегментом и называется номером очереди для сегмента. Сегменты также несут номер подтверждения, который является номером для следующего ожидаемого байта данных, передаваемого в обратном направлении.

    3.2.7 Исправление ошибок.

    Например, в протоколе TCP исправление ошибок обеспечивается за счёт повторной передачи тех сегментов,

    которые не были подтверждены квитанциями. Что бы реализовать повторную передачу, протокол TCP передаёт сегмент, поместив его копию в буфер повторной передачи. Когда сегмент отправлен, протокол TCP сразу же запускает таймер. Когда приходит подтверждение для сегмента, он удаляется из буфера повторной передачи. Если подтверждение не приходит до истечения таймера, то сегмент посылается повторно.

    3.2.8 Перенос срочных данных.

    Эта функция имеет реализацию в протоколе TCP. В формате поля заголовка TCP есть поле под названием URG, если это поле установлено в 1, то сегмент с таким значением поля URG будет обрабатываться вне очереди. Например, если приёмный буфер получателя будет полностью заполнен и при этом придёт срочный сегмент, то он будет принят, за счёт вытеснения (удаления) других не срочных сегментов.

    Примером такого срочного сегмента может быть сегмент, содержащий новый размер окна, который как можно быстрее должен быть доставлен получателю.

    3.3 Фаза разъединения соединения.

    Запрос на разъединение транспортного соединения может быть инициирован любым из объектов сеанса, участвующем в соединении.

    Разъединение соединения может включать следующие функции:

    3.3.1Уведомление о причине разъединения.

    3.3.2Идентификация разъединившегося транспортного

    соединения.

    3.3.3Перенос данных.

    4.Приостановка и продолжение транспортного соединения.

    С помощью функции приостановки соединения происходит

    разъединение сетевого соединения, а транспортное соединение сохраняется. Запрос на выполнение такой функции может быть инициирован верхними уровнями.

    При выполнении функции приостановки транспортные объекты не могут обмениваться данными.

    Функция приостановки соединения используется, например, в том случае, когда какой-то из вышележащих уровней принимает решение о том, что выгодно на время прервать передачу данных, а потом через некоторое время возобновить передачу.

    С помощью функции продолжить, транспортный уровень вновь устанавливает сетевое соединение и обмен данными может быть продолжен.

    Функции транспортного уровня в режиме без установления соединения:

    1.Отображение транспортного адреса на сетевой адрес.

    2.Отображение передачи данных в режиме без установления соединения транспортного уровня на передачу в режиме без установления соединения сетевого уровня.

    То есть, транспортный уровень для того, чтобы передавать свои PDU по сети в режиме без установления соединения, обращается с запросом о обеспечении передачи без установления соединения к сетевому уровню.

    3. Обнаружение ошибок и контроль качества обслуживания.

    Примером транспортного протокола, работающего в режиме без установления соединения и выполняющего эту функцию, может служить протокол дейтаграмм пользователя UDP (User Datagram Protocol).

    В отличие от протокола TCP, в протоколе UDP отсутствует подтверждение приёма блоков данных, что делает UDP намного проще, чем TCP, но относительно менее надёжным. Но протокол UDP может обнаруживать ошибки в дейтаграммах, делает он это с помощью поля checksum, назначение которого такоеже как и в протоколе TCP. Если протокол UDP обнаруживает ошибку в дейтаграмме, то он сообщает об этом отправителю и ничего более. Этот механизм является единственным средством для простого контроля качества обслуживания. Если, например получатель регистрирует слишком большое количество ошибок, то он может отказаться от передачи данных на данный момент и возобновить её позже.

    Несмотря на то, что протокол UDP не обеспечивает высокую

    надёжность, он часто применяется для передачи речи и видео в реальном времени. Это объясняется тем, что протокол UDP прост, а следовательно работает быстро, так как всё, что требуется — это передать принятые блоки данных соответствующему приложению, идентифицируемому номером порта. А функции по исправлению ошибок, в данном случае, возлагаются на протоколы других уровней.

    5.1 КЛАССЫ И ТИПЫ ТРАНСПОРТНОГО ОБСЛУЖИВАНИЯ

    Определены два типа транспортного обслуживания:

    1.Обслуживание в режиме с установлением соединения.

    2.Обслуживание в режиме без установления соединения.

    При обращении к транспортным услугам пользователь должен заявить о том, какой тип обслуживания он предполагает использовать.

    В модели OSI нет никаких определённых классов

    транспортного обслуживания.

    5.2КАЧЕСТВО ТРАНСПОРТНОГО ОБСЛУЖИВАНИЯ В РЕЖИМЕ

    СУСТАНОВЛЕНИЕМ СОЕДИНЕНИЯ

    Термин качество обслуживания относится к некоторым характеристикам транспортного соединения.

    С помощью параметров качества обслуживания пользователь транспортных услуг TS (Transport Service) задаёт свои требования к тем услугам, которыми он будет пользоваться, то есть исходя из этих требований транспортный уровень будет знать какое качество обслуживания нужно обеспечить для того или иного пользователя TS.

    Пользователь TS договаривается с транспортным уровнем о качестве обслуживания с помощью специального запроса. Пользователь TS либо сам транспортный уровень может понизить установленное запросом качество обслуживания в течение транспортного соединения. Относительно параметров

    качества обслуживания это может означать, что:

    1.Задержка увеличивается;

    2.Пропускная способность уменьшается;

    3.Коэффициент ошибок повышается;

    4.Приоритет становиться ниже;

    5.Вероятность отказа становится выше;

    6.Уровень защиты транспортного соединения понижается.

    Транспортный уровень не гарантирует поддержку первоначального договора о качестве обслуживания на протяжении всего времени существования транспортного соединения.

    Значения параметров качества обслуживания могут назначаться по умолчанию самим транспортным уровнем, а могут быть определены в результате переговоров пользователя TS и транспортного уровня.

    Понравилась статья? Поделить с друзьями:
  • Tcp previous segment not captured ошибка
  • Tcp ip sys ошибка синий экран
  • Tcp by router код ошибки 0
  • Tco system ошибка ивеко стралис
  • Tco prufen ошибка ман тга