NACK
読み:ナック
外語:NACK: Negative ACKnowledge

 情報通信における信号の一つで、否定応答。NAK、NOACKなど表記ゆれあり。
目次

概要
 通信における否定的な応答で、一般には、通信内容やコマンド等々にエラーがあり要求が受け付けられなかったことを示す信号である。
 通知方法も様々あるが、物理層に近い層では信号線のHI/LOWで表現することが多く、上位層に近い層では専用に用意された制御コードや通信手段によって実現する。
 例えば、制御コードを用いる方法では、ASCIIでは1/5(0x15)を、EBCDICでは3/13(0x3d)を使うのが一般的である。
 また専用に用意された通信手段による例としては、TCPヘッダーACKフラグなどがある。このように何らかのプロトコルにおいて否定的な返答を単にNACKと呼ぶことがあり、そういった物も含めてNACKの返信が戻ることを「NACKが返る」のように表現する。

特徴

重要性
 通信プロトコルにおいて、NACKの送受信は重要なものである。要求が正常に受け付けられたかどうかを判断せねば、安定した動作は期待できないからである。
 このため多くのプロトコルではACKやNACK返信の機能を持っている。

複数機能を兼ねるもの
 I〓Cなどは、ACKを複数の目的に用いているものの一つといえる。
 送信の際にACKが返るが、シンプルな実装では無視されることが多い残念な信号である。
 受信(スレーブ→マスター)の場合は、マスター側がACKかNACKを送信するが、これは正常な受信の通知というだけでなく、続けてデータを要求するか否かという機能も兼ねている。

手法

レガシーな通信媒体
 レガシーな通信媒体ではNACK文字を返信することでNACKとする実装が多い。RS-232Cや類する媒体を用い、ほぼ物理層の規定のみで使われるような世界では、この方式が採用される。
 また、仮にプロトコルを用いていても、インターネット用プロトコルのような複雑なものは当時殆どなかった。このため、次のプロトコルはNACK文字をNACKに採用している。
 また、パラレルインターフェイス(プリンターポートやIEEE 1284など)では、ACK信号を送るための線を1本以上用意し、その信号レベルによってこれを実現することもある。

インターネット
 最近のインターネット用プロトコルの流行としては、昔よりは気の利いた方法がよく使われている。
 「NACK」だけではエラーであることしか分からないが、最近のプロトコルは、正常か不正か、不正ならどのような不正なのかを番号によって管理し、返信してくるものが多い。
 Webを見るために頻用されるHTTPでも、正常なら200、サーバー故障なら500などが返る。この場合、正常でない返信がNACKであると考えることができる。

他の世界
 通信以外の世界でも、NACKは様々な表現として使われている。

再検索