(RFC1928)Socket5プロトコル中国のドキュメント

翻訳:のRadeon(のRadeon [email protected]
翻訳公開日:2001年6月18日

ディレクトリ

1.はじめに
2。既存のプロトコル
3。TCPベースのクライアント
4。要求
5。住所
6。回答
7。UDPに基づくお客様
8.セキュリティの考慮事項
9.参考文献

1.はじめに

効果的に外部ネットワークから分離されたインターネット内のネットワーク構造として編成することができるネットワークのファイアウォールを使用しては、この方法は、多くのネットワークCKSに普及しています。そのようなファイアウォールシステムは、典型的には、TELNET、FTP、SMTP等へのアクセスを提供する、2つのネットワーク間のアプリケーション層ゲートウェイとして機能します。複雑なアプリケーション層プロトコルの出現を見つけやすいますますグローバルな情報としては、透過的にこれらのプロトコルのための一般的なフレームワークを提供し、安全にファイアウォールを通過する必要があります。そして、実用的なアプリケーションでも、ファイアウォールを介して認証する安全な方法が必要です。この要件は、この関係が制御され、安全認証を必要とする必要があり、ネットワーク内の2つの組織間のクライアント/サーバ関係の出現で始まりました。
協定の枠組みは、ここで説明した顧客は、ファイアウォール設計されたネットワークが提供するサービスを利用するTCPおよびUDP /サーバ・アプリケーションは、より便利で安全に使用できるようにすることです。プロトコルは、このように提供されるゲートウェイのネットワーク層からICMPメッセージをサービングこのような転送を提供しない、概念的に「インターポーザ(シム層)」アプリケーション層とトランスポート層の間にあります。


2。既存の契約は
、現在のファイアウォールを提供するプロトコルのSOCKS 4を、存在している安全でないTELNET、FTP、HTTP、WAISとGOPHERと他のTCPベースのクライアント/サーバー・プログラム。そして、この新しいプロトコルはUDP、ドメイン名とIPv6のセキュリティ認定プログラムは、指定された(アドレッシング方式)方式に対応するためのフレームワークを提供をサポートするために、SOCKS V4を拡張します。このSOCKSプロトコルを達成するために一般的に再コンパイルを必要とするか、暗号化機能に対応するSOCKSライブラリを使用するTCPベースのクライアントアプリケーションの再リンク。
注:
特に記載のない限り、データパケットフォーマットの図のすべて存在する小数の数値は、対応するドメインのバイト長さで表しています。指定されたフィールドは、このバイトの値を示すために、」X'hhで、バイト値を必要とする場合。フィールドの長さを示すドメイン「変数」で使用される言葉は可変であり、そして長さはこれに対応するフィールドに定義されている場合-フィールド(12バイト)、データタイプフィールド、またはインチ


3。TCPプロトコルベースのクライアント
接続が確立されたときに基づいて、クライアントのTCPプロトコルの希望と目標のみ(実装によって決定される)ファイアウォールを介して到達することができ、それが最初のSOCKSサーバSOCKSポートにTCP接続を確立する必要があります。これは通常、TCPポート1080です。選択したモードに応じた認証方法の選択、認証、およびその後、転送された要求を送信します。接続が確立されると、クライアントは合意「ハンドシェイク(交渉)」プロセスに入りました。SOCKSは、サーバー結果に従ってチェックこの要求を、または適切な接続を確立する、または拒否する。
特に断りのない限り、データパケットフォーマットの図のすべて存在する小数の数値は、対応するドメインのバイト長さで表しています。指定されたフィールドは、このバイトの値を示すために、」X'hhで、バイト値を必要とする場合。フィールドの長さを示すドメイン「変数」で使用される言葉は可変であり、そして長さはこれに対応するフィールドに定義されている場合-フィールド(12バイト)、データタイプフィールド、またはインチ
サーバーに接続されたクライアントの後、その後、バージョンおよび認証方法を交渉するための要求を送信します。

VIEW NMETHODS METHODS
1 1 1から255

SOCKSプロトコルのこのバージョンでは、VERフィールドが「X'05に設定されています。NMETHODSフィールドが方法に表示番号が(バイト単位)メソッドフィールドが示さ含ま。
指定されたメソッドからのサーバとクライアントに選択したメッセージのバックを送信する方法を選択します。

VIEW 方法
1 1

選択したメッセージが表示されていない方法でメソッドのクライアントリストが選択されていることを意味X'FF」である場合、クライアントが接続を閉じる必要があります。
現在定義されている方法は、以下のとおりです
。・X'00 '認証なし
・X'01' GSSAPI
・X'02 'ユーザー名/パスワード
・X'03' - 'IANAによって割り当てられX'7F
・X'80' - X'FEのプライベートメソッドに予約
・X'FF 'メソッドは受け入れられない
、その後の交渉過程で選択されたサブクライアントとサーバーの認証方法は、(サブ交渉)決定入力します。メソッドの協議プロセスのサブさまざまなを説明し、それぞれの覚書を参照してください。
あなたがそのメソッドのためのメソッドの数を取得したい場合は、開発者は、あなたはIANAに連絡することができます。ドキュメントを参照することができますが、現在のリストと対応するプロトコルのすべてのメソッドを取得するには数に配分されています。
このドキュメントSOCKS V5の実装の遵守は、GSSAPIをサポートし、将来的には、ユーザー名/パスワード認証をサポートしなければなりません。

4。要求

副交渉終了したら、クライアントは、詳細な情報の要求を送信します。整合性および/またはセキュリティ目的でのカプセル化方式のネゴシエーションをチェックすることがある場合は、これらの要求は、上記で定義された方法の実施形態に従ってパッケージ化する必要があります。
次のようにSOCKS要求の形式は次のとおりです。

VIEW CMD RSV ショット死んで DST.ADDR DST.PROT
1 1 X'00' 1 変数 2

どちら
・VERプロトコルバージョン:X'05 '
・CMD
・CONNECT:X'01'
・BIND:X'02 '
・UDP ASSOCIATE:X'03'
・RSV予約
・アドレスタイプの背後にATYP
・IPV4:X'01 "
・ドメイン:X'03「
・IPV6:X'04」 '
・DST.ADDR先アドレス
・ネットワークバイトオーダーへDST.PORTポート番号が表示されます
SOCKSサーバは、送信元アドレスと宛先アドレスに基づいて要求を解析し、その後の要求に応じて、一つ以上のトランスポンダの種類を返します。

5。住所
:ATYPアドレスタイプフィールドアドレスフィールド(DST.ADDR、BND.ADDR)が含まれている説明
・「X'01
IPV4のIPアドレスに基づいて、4バイトの長さ
・X'03」
、ドメイン名のアドレスに基づいてアドレスをフィールドの最初のバイトは、このドメインのバイト単位の長さで、NULバイト終わりはありません。
・X'04「
IPV6のIPアドレスに基づいて、16バイト長


6。回答
の接続がSOCKSサーバーに設立され、認証の交渉プロセスが完了すると、クライアントは、SOCKSサーバへの情報の要求を送信します。サーバーは、要求に応じて、次の形式を返します。

VIEW REP RSV ショット死んで BND.ADDR BND.PORT
1 1 X'00' 1 変数 2

これの:
・プロトコルバージョンVER:X'05 "
・REPの確認応答フィールド:
・X'00の成功
・X'01「普通のSOCKSサーバ要求が失敗した
・X'02の既存のルールが接続を許可していない
・X'03 「ネットワーク到達不能
・X'04」ホスト到達不能
・X'05「接続が拒否
・X'06」TTLタイムアウト
・X'07「コマンドがサポートされていません
。・X'08」アドレスのタイプがサポートされていない
・X'09 ' - X'FF'の未定義
・RSVは予約
・アドレスタイプの背後にATYP
・IPV4:X'01 '
・ドメイン:X'03'
・IPV6:X'04 "
・BND.ADDRサーバーのバインドアドレス
・BND。ネットワークバイト順で表され、サーバポートポート結合セグメント
RSVフィールドとして識別がX'00「に設定する必要があります。
選択された完全性および/またはセキュリティ目的でカプセル化方式を確認することがある場合は、これらの応答は、上記で定義された方法の実施形態に従ってパッケージ化する必要があります。

CONNECT
BND.PORT、でCONNECTコマンドには応答が宛先マシンに割り当てられたポート番号に接続されたサーバを含む、BND.ADDRは、対応するIPアドレスです。SOCKSサーバは通常、複数のIPを持っているので、IP SOCKSサーバーに接続応答しばしばBND.ADDRとクライアントが異なっています。

SOCKSサーバーは、CONNECT要求とDST.ADDR DST.PORT、およびクライアント送信元アドレスとポートを使用して分析することができます。

BIND
BIND要求は通常、サーバからそれらのプロトコル接続に使用されているが受け入れるためのクライアントが必要です。FTPは、典型的な例です。これは、コマンドを実行するクライアントからの接続エンドサーバーを確立し、ステータスレポートを受信し、データの送信(例えば、LS、GET、PUT)を受信するために、別の接続要件からサーバにクライアントを使用します。
第二の接続を確立することができ、クライアント・アプリケーション・プロトコルがプライマリ接続した後、CONNECTコマンドを使用して、BINDコマンドを使用して確立された場合にのみお勧めします。SOCKSサーバとは、BIND要求を評価するためにDST.ADDR DST.PORTを使用することをお勧めします。
BIND要求の動作時に、SOCKSサーバーがクライアントに2つの応答を送信します。場合は、サーバーの構築と最初の応答時間を送信するために、新しいソケットをバインドします。SOCKSサーバーBND.PORTフィールドは、着信接続をリッスンするポート番号が含まれている、BAND.ADDRフィールドは、対応するIPアドレスが含まれています。クライアントは、典型的に通知するためにこの情報を使用する(または主制御接続を介して接続された)アプリケーションサーバの接続点に接続されています。第二の返信は唯一の目的の接続成功または失敗の到着後に発生します。第二に応じて、BND.PORTとBND.ADDRフィールドには、最大接続されたホストのIPアドレスとポート番号が含まれています。

ASSOCIATE UDP
UDPアソシエイト要求は、通常、UDP転送着信UDPデータグラムを制御するためのプロセスの確立を必要とします。DST.ADDRとDST.PORTフィールドは、UDPデータグラムのIPアドレスとポート番号を送信するために必要なクライアントが含まれています。サーバーは、着信接続を制限するために、この情報を使用することができます。クライアントがこの要求時にアドレスとポートの情報をしない場合、クライアントはすべてゼロで埋めなければなりません。
中断され、対応するUDP、TCP接続と組み合わせると、UDP接続が中断されなければなりません。
ときASSOCIATE UDP応答要求、BND.PORTとBND.ADDRフィールドは、クライアントがサーバのアドレスとポートにUDPメッセージを送信指定します。

応答処理
エラーは、SOCKSサーバのTCP接続が応答メッセージを送信した後、短い時間内に終了しなければならない場合、応答(REPの値が00に等しくない)を示しています。この時間は、エラーの発見後10秒未満でなければなりません。
成功を示す応答(REPの値が00に等しい)、およびBIND要求又は接続する場合、クライアントがデータを送信し始めることができます。ネゴシエートされた認証方式をパッケージ化する目的で、整合性、認証および/またはセキュリティに存在する場合、これらの要求は、上記で定義された方法の実施形態に従ってパッケージ化する必要があります。クライアントデータが送信先SOCKSサーバーに到着したとしてとき同様に、SOCKSサーバーが使用されている方法でデータをカプセル化しなければなりません。


7。クライアントに基づいて、UDPプロトコルは
UDP ASSOCIATE応答でサーバー上のUDPポート転送にデータグラムを送信する必要があり、サーバーBND.PORTが使用するUDPポート、UDPベースのプロトコルのクライアントを示します。ネゴシエートされた認証方法を包装するために整合性、認証および/またはセキュリティに存在する場合、データパケットは、上記に規定された方法の実施形態に従ってカプセル化されます。各UDPデータグラムは、UDP要求ヘッダにヘッダを有します。

RSV FRAG ショット死んで DST.ADDR DST.PORT データ
2 1 1 変数 2 変数

UDPヘッダ要求のフィールド:

・RSV X'0000の保持'
・FRAG現在のセグメント番号
-behindアドレスタイプATYP
・IPV4:X'01'
・ドメイン:X'03 '
・IPV6:X'04'
・DST.ADDR宛先アドレス
・DST。外観のネットワークバイトオーダーでのポートのポート番号
・データ・ユーザー・データ
UDPサーバは、UDPデータグラムの転送を転送するとき、何の通知がクライアントに送信されません。同様に、それはまた、廃棄任意のそれは、リモート・ホストにデータを送信することができないだろう報告されました。UDPデータグラム転送サーバが応答を受信すると、上述したUDP要求ヘッダーに追加する必要があり、データパケットは、リモートサーバからカプセル化されました。
UDP転送サーバーは、SOCKSサーバー、クライアントのIPアドレスとポート番号を指定したUDP ASSOCIATE応答に送信されたデータグラムから期待されている必要があります。もし任意のIPアドレスからの着信データパケットが、データパケットを廃棄すること、特定の接続のIPアドレスに割り当てられた異なるIPアドレス。
FRAGフィールドは、報告されたデータがスライス片の一部であるかどうかを示します。大きい複数の他の後端データグラム、SOCKSサーバがこの機能を実現する場合、X'00「は、データパケットが独立していることを示します。1と127の間の値は、フラグメントの配列内の断片の位置を示します。各受信機は、再組み立てキューとこれらの組換え断片のタイマーを提供します。再組み立てキューが再編成タイマーが満了した後に再初期化、および対応するデータパケットを廃棄しなければなりません。新しいデータグラムが最大値FRAGの時間であることを一連のプロセスにおける現在のデータパケットよりも到着したとき、または、それがグループのキューから再初期化する必要があります。組換えタイマーは5秒未満でなければなりません。可能な限り、アプリケーションはフラグメンテーションを使用するのが最善ではありません。
達成断片化はオプションであり、実装がフラグメントをサポートしていない場合FRAGフィールドは、すべて0のデータパケットを破棄しなければなりません。
SOCKSはUDPプログラミングインターフェイス(SOCKS-のためのプログラミング・インターフェースである意識UDP)は、現在利用可能なバッファ領域が少なく、実空間のUDPデータグラムのオペレーティングシステムよりも報告しなければなりません。
' - + 10オクテット小さいmethod_dependent ATYPはX'01場合
262個の+ method_dependentオクテットが小さく- ATYPがX'03場合'
20 + method_dependentオクテット小さい- ATYPがX'04」である場合

8.セキュリティの考慮事項
この文書では、アプリケーション層のファイアウォールを介してIPネットワークのためのプロトコルを記述しています。このような変速機のセキュリティは、特定の実装上およびSOCKSクライアントと相談の認証と特別なパッケージで選択されたSOCKSサーバの間で大きく依存しています。
システム管理者は、慎重に検討するユーザの認証方法を選択する必要があります。

アドレス
マーカスヒル
ベル・ノーザン・リサーチ株式会社は、
私書箱3511、駅のC
オタワ、ON
CANADA K1Y 4H7の
9145 - (613)763:電話
Eメール:[email protected]

 

 

 

SOCKS5プロトコルが示され

 

 

 

 

84元記事公開 ウォン称賛15 ビューに14万+を

おすすめ

転載: blog.csdn.net/TDGX2004/article/details/7955864