本備忘錄狀態:
本文檔講述了一種Internet社區的Internet標准跟蹤協議,它需要進一步進行討論和建議以得到改進。請參考最新版的“Internet正式協議標准” (STD1)來獲得本協議的標准化程度和狀態。本備忘錄的發布不受任何限制。
知識背景
這個備忘錄描述了從同一協議的前一版本(版本4[1])發展而來的一個協議。這個新的協議起源於當前的一些討論和原型的實現(active discussions and prototype implementations)。關鍵的貢獻人有:Marcus Leech: Bell-Northern Research, David Koblas: Independent Consultant, Ying-Da Lee: NEC Systems Laboratory, LaMont Jones: Hewlett-Packard Company, Ron Kuris: Unify Corporation, Matt Ganis: International Business Machines。
目錄
1.介紹
2.現有的協議
3.基於TCP協議的客戶
4.請求
5.地址
6.應答
7.基於UDP協議的客戶
8. 安全性考慮
9. 參考書目
1.介紹
利用網絡防火牆可以將組織內部的網絡結構從外部網絡如INTERNET中有效地隔離,這種方法在許多網絡系統中正變得流行起來。這種防火牆系統通常以應用層網關的形式工作在兩個網絡之間,提供TELNET、FTP、SMTP等的接入。隨著越來越多的使全球信息查找更容易的復雜的應用層協議的出現,有必要提供一個通用框架來使這些協議安全透明地穿過防火牆。而且在實際應用中還需要一種安全的認證方式用以穿越防火牆。這個要求起源於兩個組織的網絡中客戶/服務器關系的出現,這個關系需要得到控制並要求有安全的認證。
在這兒所描述的協議框架是為了讓使用TCP和UDP的客戶/服務器應用程序更方便安全地使用網絡防火牆所提供的服務所設計的。這個協議從概念上來講是介於應用層和傳輸層之間的“中介層(shim-layer)”,因而不提供如傳遞ICMP信息之類由網絡層網關的所提供的服務。
2.現有的協議
當前存在一個協議SOCKS 4,它為TELNET、FTP、HTTP、WAIS和GOPHER等基於TCP協議的客戶/服務器程序提供了一個不安全的防火牆。而這個新的協議擴展了SOCKS V4,以使其支持UDP、框架規定的安全認證方案、地址解析方案(addressing scheme)中所規定的域名和IPV6。為了實現這個SOCKS協議,通常需要重新編譯或者重新鏈接基於TCP的客戶端應用程序以使用SOCKS庫中相應的加密函數。
注意:
除非特別注明,所有出現在數據包格式圖中的十進制數字均以字節表示相應域的長度。如果某域需要給定一個字節的值,用X’hh’來表示這個字節中的值。如果某域中用到單詞’Variable’,這表示該域的長度是可變的,且該長度定義在一個和這個域相關聯(1 – 2個字節)的域中,或一個數據類型域中。
3.基於TCP協議的客戶
當一個基於TCP協議的客戶端希望與一個只能通過防火牆可以到達的目標(這是由實現所決定的)建立連接,它必須先建立一個與SOCKS服務器上SOCKS端口的TCP連接。通常這個TCP端口是1080。當連接建立後,客戶端進入協議的“握手(negotiation)”過程:認證方式的選擇,根據選中的方式進行認證,然後發送轉發的要求。SOCKS服務器檢查這個要求,根據結果,或建立合適的連接,或拒絕。
除非特別注明,所有出現在數據包格式圖中的十進制數字均以字節表示相應域的長度。如果某域需要給定一個字節的值,用X’hh’來表示這個字節中的值。如果某域中用到單詞’Variable’,這表示該域的長度是可變的,且該長度定義在一個和這個域相關聯(1 – 2個字節)的域中,或一個數據類型域中。
客戶端連到服務器後,然後就發送請求來協商版本和認證方法:
VERNMETHODSMETHODS111 to 255這個版本的SOCKS協議中,VER字段被設置成X'05'。NMETHODS字段包含了在METHODS字段中出現的方法標示的數目(以字節為單位)。
服務器從這些給定的方法中選擇一個並發送一個方法選中的消息回客戶端:
VERMETHOD11如果選中的消息是X’FF’,這表示客戶端所列出的方法列表中沒有一個方法被選中,客戶端必須關閉連接。