否定応答

否定応答(NAK)とは



否定応答(Negative Acknowledgment、NAKまたはNACK)は、通信プロトコルで使用される制御文字の一つです。主に、データ伝送中に問題が発生した際に、受信側から送信側へその旨を通知するために用いられます。これにより、送信側はデータの再送などの適切な処置を講じることができます。

BSC手順におけるNAK



Binary Synchronous Communication(BSC)手順において、NAKは以下の二つの状況で使用されます。

1. 受信不能の通知: 受信側が、送信側からの問い合わせに応答する際、データを受信できる状態にないことを送信側に伝えます。これは、受信側のバッファが一杯である場合や、他の処理に専念している場合などが考えられます。

2. エラー検出時の再送要求: 受信側がデータリンク層において、直前に受信したデータブロックに伝送エラーを検出した場合、送信側に対してそのブロックの再送を要求します。これは、データが破損してしまった場合に、正確なデータを再取得するための重要なメカニズムです。

NAKの文字コード



否定応答文字は、様々な文字コード体系で定義されています。

ASCIIUnicode: 十進数で21、十六進数で0x15に割り当てられています。
EBCDIC: 0x3Dに割り当てられています。

また、キャレット記法では`^U`と表記され、Unicodeでは制御文字の図形表現として`␕`(U+2415)が定義されています。

その他の通信プロトコルにおけるNAK



多くの通信プロトコルは肯定応答(ACK)ベースで動作します。ACKベースでは、受信側がデータを受信するたびに、正しく受信できたことを送信側に明確に伝えます。例えば、Transmission Control Protocol(TCP)はACKベースのプロトコルの一例です。

これに対して、NAKベースのプロトコルでは、受信側で問題が発生した場合にのみ、送信側にメッセージを送信します。例えば、高信頼マルチキャストプロトコルはNAKベースであり、受信側がパケットの欠損を検出した際に、送信側へNAKを送信します。

ACKベースとNAKベースの比較



ACKベースのプロトコルは、すべてのデータ受信に対して肯定応答を返すため、信頼性が高いとされます。しかし、通信量が増加するにつれて、肯定応答のオーバーヘッドが大きくなるという欠点があります。

一方、NAKベースのプロトコルは、エラーが発生した場合にのみ応答を行うため、効率的です。しかし、エラーが発生しなかった場合は、応答がないため、信頼性がやや劣るとも言えます。どちらの方式が適しているかは、通信の状況や要件によって異なります。

まとめ



否定応答(NAK)は、データ通信において重要な役割を果たす制御文字です。特に、エラーが発生した場合の通知や再送要求に用いられることで、データの信頼性を高めることに貢献します。ACKベースのプロトコルと比較すると、NAKベースのプロトコルは、エラー発生時のみ応答するため、通信効率が高いという特徴があります。

関連項目



肯定応答(ACK)

出典



この記事にはパブリックドメインである、アメリカ合衆国連邦政府が作成した次の文書本文を含みます。

Federal Standard 1037C. アメリカ合衆国連邦政府一般調達局.(MIL-STD-188内)

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。