4. Requests (リクエスト)
メソッド依存のサブネゴシエーションが完了すると、クライアントはリクエストの詳細を送信します。ネゴシエートされたメソッドに、完全性チェック (Integrity Checking) および/または機密性 (Confidentiality) を目的としたカプセル化 (Encapsulation) が含まれる場合、これらのリクエストは、メソッド依存のカプセル化でカプセル化されなければなりません (MUST)。
SOCKSリクエスト (SOCKS Request) は次のように形成されます:
+----+-----+-------+------+----------+----------+
|VER | CMD | RSV | ATYP | DST.ADDR | DST.PORT |
+----+-----+-------+------+----------+----------+
| 1 | 1 | X'00' | 1 | Variable | 2 |
+----+-----+-------+------+----------+----------+
各フィールドの説明:
- VER プロトコルバージョン (Protocol Version): X'05'
- CMD コマンド (Command)
- CONNECT X'01'
- BIND X'02'
- UDP ASSOCIATE X'03'
- RSV 予約 (RESERVED)
- ATYP 後続アドレスのアドレスタイプ (Address Type)
- IP V4 address: X'01'
- DOMAINNAME: X'03'
- IP V6 address: X'04'
- DST.ADDR 目的の宛先アドレス (Desired Destination Address)
- DST.PORT ネットワークオクテット順の目的の宛先ポート (Desired Destination Port in Network Octet Order)
SOCKSサーバーは、通常、送信元アドレスと宛先アドレスに基づいてリクエストを評価し、リクエストタイプに適した1つ以上の応答メッセージ (Reply Message) を返します。