|
SOCKS は、クライアントサーバ型のアプリケーションに、ネットワーク・ファイアウォールのサービスを透過的に使用することを可能にするインターネットプロトコルの一つである。 SOCKS は、 "SOCKetS" 〔Hummingbird SOCKS FAQ 〕 の略語である。 ファイアウォールの背後にあり、外部サーバにアクセスする必要があるクライアントは、代わりに SOCKS プロキシサーバに接続できる。 SOCKS プロキシサーバはクライアントが外部サーバにアクセスする資格を制御し、外部サーバにリクエストを伝える。 SOCKS はまた正反対にも使用することができる。つまり、ファイアウォールの外側のクライアント("外部クライアント")が、ファイアウォールの内側のサーバ(内部サーバ)に接続することを可能にする。 SOCKS は当初、 MIPS Computer Systems のシステム管理者である David Koblas によって開発された。 Koblas は、 MIPS Computer Systems が1992年に Silicon Graphics によって吸収合併された後に、その年の Usenix Security Symposium で SOCKS の研究論文を公開した。これにより SOCKS は公に利用できるようになった。〔Darmohray, Tina. "Firewalls and fairy tales ". ;LOGIN:. Vol 30, no. 1.〕 SOCKS は、 NEC の Ying-Da Lee によってバージョン4に拡張された。 SOCKS 関連のアーキテクチャやクライアントは Permeo Technologies によって所有されている。〔http://www.socks.permeo.com/ (broken link as of July 2008)〕 (注 Permeo Technologies は NEC からスピンオフした Blue Coat Systems 〔News Release from Bluecoat 〕 によって吸収合併された。)〔Article from infosecurityproductsguide.com〕 SOCKS はOSI参照モデルのレイヤー5で動作する - セッション層(プレゼンテーション層とトランスポート層の中間レイヤー)。 == SOCKS 4プロトコル == 標準の SOCKS 4 接続はこのように要求される。: SOCKS クライアントからサーバ: * フィールド 1: SOCKS バージョン番号,1バイト,このバージョンでは 0x04 でなくてはならない * フィールド 2: コマンドコード,1バイト: * 0x01 = TCP/IP ストリーム接続を確立する * 0x02 = TCP/IP ポートバインディングを確立する * フィールド 3: ネットワークバイトオーダのポート番号,2バイト * フィールド 4: ネットワークバイトオーダの IP アドレス,4バイト * フィールド 5: ユーザID文字列, 可変長, null (0x00) で終了させる SOCKS サーバからクライアント: * フィールド 1: null バイト * フィールド 2: 状態,1バイト * 0x5a = リクエストの許可 * 0x5b = リクエストの拒絶または失敗 * 0x5c = リクエストはクライアントが identd を起動していなかったので失敗(もしくは、サーバから到達できなかった) * 0x5d = リクエストはクライアントの identd がリクエストにユーザID文字列を確認できなかったので失敗 * フィールド 3: 任意の2バイト,無視されなければならない * フィールド 4: 任意の4バイト,無視されなければならない 例: これは、66.102.7.99:80にユーザ「Fred」を接続する SOCKS 4 のリクエストである。そして、サーバは、"OK"の返事をする。 * クライアント: 0x04 | 0x01 | 0x00 0x50 | 0x42 0x66 0x07 0x63 | 0x46 0x72 0x65 0x64 0x00 * 最後のフィールドは ASCII コードの「Fred」であり、次に1バイトの null が続く * サーバ: 0x00 | 0x5a | 0xXX 0xXX | 0xXX 0xXX 0xXX 0xXX * 0xXX は全てのバイト値になることができる。 Socks 4 プロトコルはそれらのバイト値が無視されなければならないことを規定している。 この時点以降、 SOCKS クライアントから SOCKS サーバまで送る全てのデータは66.102.7.99に向けて中継される。そして、 SOCKS サーバから SOCKS クライアントに送る場合も同様である。 コマンドフィールドは、 "connect" で 0x01 、あるいは、 "bind" で 0x02 になることができる。 "bind" は動作中の FTP のようなプロトコルのために入ってくる接続を許可する。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「SOCKS」の詳細全文を読む スポンサード リンク
|