Подтверждение (сети передачи данных)
В сетях передачи данных , телекоммуникациях и компьютерных шинах подтверждение сигнал ( ACK ) — это , который передается между взаимодействующими процессами , компьютерами или устройствами для обозначения подтверждения или получения сообщения как часть протокола связи . Соответственно отрицательное подтверждение ( NAK или NACK [1] ) — это сигнал, который отправляется для отклонения ранее полученного сообщения или для указания какой-либо ошибки. Подтверждения и отрицательные подтверждения информируют отправителя о состоянии получателя, чтобы он мог соответствующим образом скорректировать свое собственное состояние.
Типы сигналов подтверждения
[ редактировать ]Код ASCII для ACK — 0x06 (двоичный 0000 0110). По соглашению принимающее устройство отправляет ACK, чтобы указать, что оно успешно получило сообщение. ASCII также предоставляет код NAK (0x15, двоичный код 0001 0101), который можно использовать для указания того, что принимающее устройство не может или не будет соответствовать сообщению. [2] Unicode предоставляет видимые символы для этих символов ASCII: U+2406 (␆) и U+2415 (␕).
Символы ACK и NAK также могут принимать форму отдельных битов или битовых полей протокола в зависимости от определения уровня канала передачи данных или даже в виде выделенного провода на физическом уровне .
Использование протокола
[ редактировать ]Многие протоколы основаны на подтверждении, то есть они положительно подтверждают получение сообщений. в Интернете Протокол управления передачей данных (TCP) является примером протокола, основанного на подтверждении. Когда компьютеры обмениваются данными через TCP, полученные пакеты подтверждаются путем отправки обратного пакета с установленным битом ACK. [3]
В то время как некоторые протоколы отправляют подтверждение для каждого полученного пакета , другие протоколы, такие как TCP и ZMODEM, позволяют передавать множество пакетов перед отправкой подтверждения для их набора. Эта процедура необходима для заполнения каналов продуктов с высокой задержкой полосы пропускания большим количеством байты в полете.
Некоторые протоколы основаны на NAK, что означает, что они отвечают на сообщения только в случае возникновения проблемы. Примеры включают множество надежных протоколов многоадресной рассылки, которые отправляют NAK, когда получатель обнаруживает недостающие пакеты. [4] или протоколы, использующие контрольные суммы для проверки целостности полезных данных и заголовка .
Другие протоколы используют как NAK, так и ACK. двоичная синхронная связь (Bisync) и адаптивная скорость соединения (для энергоэффективного Ethernet Примерами являются ).
Функция подтверждения используется в функции автоматического запроса повторения (ARQ). Кадры подтверждения нумеруются в соответствии с кадрами, которые были получены и затем отправлены передатчику. Это позволяет передатчику избежать переполнения или опустошения в приемнике и узнавать о любых пропущенных кадрах .
В IBM Binary Synchronous Communications NAK используется для указания того, что ошибка передачи была обнаружена в ранее полученном блоке и что получатель готов принять повторную передачу этого блока. Bisync не использует один символ ACK, но имеет две управляющие последовательности для альтернативного подтверждения четного/нечетного блока.
Методологии, основанные на ACK и NAK, не являются единственными парадигмами проектирования протоколов. Некоторые протоколы, такие как RC-5 , протокол пользовательских дейтаграмм (UDP) и X10 , выполняют слепую передачу без подтверждения, часто передавая одно и то же сообщение несколько раз в надежде, что хотя бы одна копия сообщения пройдет.
Подтверждение оборудования
[ редактировать ]Некоторые компьютерные шины имеют специальный провод подтверждения на шине управления, используемый для подтверждения операций шины: DACK используется для ISA DMA ; DATACK используется в STEbus , выводе подтверждения передачи данных Motorola 68000 , который послужил источником названия DTACK Grounded и т. д. Некоторые компьютерные шины не ждут подтверждения каждой передачи, см., например, опубликованную запись .
Последовательная шина I²C имеет временной интервал для бита подтверждения после каждого байта. [5] [6]
См. также
[ редактировать ]- Коды управления C0 и C1
- Управление потоком (данные)
- Надежная многоадресная рассылка, ориентированная на NACK
Ссылки
[ редактировать ]- ^ Строительные блоки надежной многоадресной рассылки, ориентированной на отрицательное подтверждение (NACK) (NORM) . Ноябрь 2004 г. doi : 10.17487/RFC3941 . РФК 3941 .
- ^ «Управляющие символы в ASCII и Unicode» . Проверено 04 марта 2020 г.
- ^ Postel, Jon (September 1981). "rfc793" .
- ^ Диот, К.; Даббус, В.; Кроукрофт, Дж. (апрель 1997 г.). «Многоточечная связь: обзор протоколов, функций и механизмов» (PDF) . Журнал IEEE по избранным областям коммуникаций . 15 (3): 277–290. дои : 10.1109/49.564128 .
- ^ «Спецификация шины I2C» .
- ^ «Понимание шины I2C» (PDF) . Рисунок 8.
- В этой статье использованы общедоступные материалы из Федеральный стандарт 1037C . Управление общего обслуживания . Архивировано из оригинала 22 января 2022 г. (в поддержку MIL-STD-188 ).
Внешние ссылки
[ редактировать ]- Петр Рукавина. «ACK против NAK» . Проверено 04 марта 2020 г.