読み方 : ユーアールジーフラグ / アーグフラグ
URGフラグ【urgent flag】TCP URG
URGフラグとは?

TCP(Transmission Control Protocol)はデータをセグメントという小さな単位に分割し、送信順を保ちながら確実に届ける通信プロトコルである。受信側は到着したパケットを順番に処理するのが原則だが、遠隔操作や端末制御のような用途では、処理中のデータに割り込んででも即座に届けたい指示が生じることがある。URGフラグはそうした場面で使われ、受信側に通常のデータとは異なる優先処理を促す。
URGフラグが有効な場合、TCPヘッダ内の「緊急ポインタ」と呼ばれる16ビットの値が同時に参照される。この値はパケット先頭から何バイト目までが緊急データであるかを示しており、受信側はその範囲を通常の受信キューより優先してアプリケーションに渡す。緊急ポインタはURGフラグが立っているときにのみ意味を持つ。
この仕組みはかつてTelnetやFTPが利用していたことで知られている。利用者がコマンド実行中にCtrl+Cで中断を指示した場合や、FTPのデータ転送中に制御コマンドを割り込ませたい場合などにURGフラグが使われていた。通常のデータストリームが滞っていても、緊急扱いの命令を先に届けることで、迅速に操作を制御できるようにしていたのである。
現在ではURGフラグが使われる機会は少ない。OSやアプリケーションによって実装や解釈にばらつきがあり、動作の一貫性が保証しにくいためである。RFC 6093でも新規アプリケーションへの利用は推奨されておらず、緊急データの伝達には別経路や独自の制御方式が用いられるのが一般的である。また、ファイアウォールや侵入検知システムがURGフラグを含むパケットを異常と判断して遮断するケースもあり、過去にはこの処理の差異を悪用した攻撃も報告されている。