Перейти до вмісту

Підтвердження отримання

Матеріал з Вікіпедії — вільної енциклопедії.

Підтвердження отримання (англ. acknowledgement, ACK) — в телекомунікаційних мережах, комп'ютерних мережах, комп'ютерних шинах це сигнал, який передається між взаємодіючими процесами, комп'ютерами або пристроями для позначення підтвердження, тобто отримання повідомлення, як частина протоколу зв'язку.

Відповідно, негативне підтвердження (англ. negative acknowledgement, NAK або NACK) — це сигнал, який надсилається для відхилення раніше отриманого повідомлення або для вказівки на певний вид помилки.

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

ASCII коди

[ред. | ред. код]

В ASCII є коди для ACK — 0x06, а також є код для NAK — 0x15.[1] В юнікоді є їх візуальні аналоги, U+2406 (␆) and U+2415 (␕).

ACK і NAK також можуть мати форму окремих бітів або бітових полів, залежно від визначення протоколу на канальному рівні, або навіть реалізовуватися як окремий провід на фізичному рівні.

Протоколи

[ред. | ред. код]

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

Хоча деякі протоколи підтверджують кожен пакет, інші протоколи такі як TCP та ZMODEM дозволяють передати декілька пакетів перш ніж надіслати підтвердження для них, для зменшення зворотного трафіку.

Деякі протоколи шдють лише NAK підтверження. Наприклад, протоколи, що використовують контрольну суму для перевірки цілісності пакетів.

Пакети підтвердження пронумеронані відповідно до пакетів даних, які вони підтверджують, це запобігає переповненню буфета передавача чи спустошенню буфера приймача пакетів.

Не всі протоколи використовують ACK- чи NAK- підтвердження, наприклад, RC-5, UDP, X10. Деякі з них використовують багатократну передачу кожного пакета в надії, що хоча б одна передача відбудеться успішно.

Апаратне підтвердження

[ред. | ред. код]

Деякі комп'ютерні шини використовують виділений дріт в шині керування для підтверджень операцій:

  • DACK в ISA DMA;
  • DATACK в STEbus.

I²C шина має виділений таймслот для біта підтвердження після кожного байта.[2][3]

Див. також

[ред. | ред. код]

Примітки

[ред. | ред. код]
  1. ↑ Control characters in ASCII and Unicode. Процитовано 4 березня 2020.
  2. ↑ I2C Bus Specification.
  3. ↑ Understanding the I2C Bus (PDF). Figure 8.