史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   網路軟硬體架設技術文件 (http://forum.slime.com.tw/f133.html)
-   -   socks 5 傳輸協定 介紹 (http://forum.slime.com.tw/thread51513.html)

psac 2003-07-19 02:28 AM

socks 5 傳輸協定 介紹
 
如果您的機器具有一個合法的 Internet IP 位址, 或者您利用自己機器
上的調製解調器撥號上網, 可以自由和 Internet 上任何主機溝通, 那麼您
通常不必關心 SOCKS5 傳輸協定。

SOCKS5 傳輸協定對於處在內部網路中的機器, 需要透過網路中某些可以聯通
外部 Internet 的機器訪問外部時,有用。

SOCKS5 是一個代理傳輸協定,它在使用 TCP/IP傳輸協定通訊的前端機器和伺服器
機器之間扮演一個中介角色,使得內部網中的前端機器變得能夠訪問Internet
網中的伺服器,或者使通訊更加安全。

SOCKS5 伺服器通過將前端發來的請求轉發給真正的目標伺服器, 模擬了
一個前端的行為。在這裡,前端和SOCKS5之間也是通過TCP/IP傳輸協定進行通訊,
前端將原本要傳送給真正伺服器的請求傳送給SOCKS5伺服器,然後SOCKS5服務
器將請求轉發給真正的伺服器。SOCKS5伺服器在將通訊請求傳送給真正伺服器
的程序中,對於請求資料包本身不加任何改變。SOCKS5伺服器接收到真正服務
器的回應後,也原樣轉發給前端。

因此,SOCKS5 傳輸協定是一種代理傳輸協定,對於各種關於 TCP/IP的套用層傳輸協定
都能夠適應,幾乎是萬能的。它雖然不能理解自己轉發的資料的內部結構,但
是它能夠忠實地轉發通訊包,完成傳輸協定本來要完成的功能。

與SOCKS5傳輸協定不同,HTTP代理是通過HTTP傳輸協定進行的,HTTP代理伺服器軟
件瞭解通訊包的內部結構,在轉發程序中還要對通訊進行某種程序的修改和轉
換。和HTTP代理傳輸協定不同,SOCKS5實際上是一個傳輸層的代理傳輸協定。

我們可以想像,如果每個具體的套用層傳輸協定都要設計對應的代理傳輸協定表達
辦法,一個特定的代理伺服器無論如何也支持不過來那麼多新出現的傳輸協定。因
此,可以說SOCKS5的出現緩解了各種具體傳輸協定需要專門設計代理傳輸協定的困難局
面。

不過,並不是凡是使用關於TCP/IP傳輸協定的套用傳輸協定的軟體,都可以無條件
地透過SOCKS5伺服器進行通訊,還要求前端軟體本身具有SOCKS5的接頭,才能
利用SOCKS5代理伺服器。

一個支持SOCKS5傳輸協定的前端,通常具有兩種執行狀態:
1)直接通訊狀態,不使用SOCKS5接頭。這時的通訊是針對最終伺服器進行
的。

2)SOCKS5 狀態。 使用 SOCKS5 接頭將本來要傳送給最終伺服器的請求發
送給 SOCKS5 伺服器。在前端和 SOCKS5 伺服器進行啟始化會話的時候,前端
告訴了 SOCKS5 伺服器關於最終伺服器的 IP 位址和連接阜信息,所以 SOCKS5
伺服器能夠忠實按照前端的要求啟動和最終伺服器的通訊程序。
SOCKS 5
SOCKS 5和SOCKS4相比有所不同,具體流程如下:
三步握手建立TCP連接====》客戶端向伺服器詢問認證方法====》伺服器選項一種返回給客戶端====》連接請求====》連接回應。包結構如下:
客戶端向伺服器詢問認證方法
-----------------------------------
字元 意義 值
-----------------------------------
1 版本 4或5
2 方法數目
3-257 方法
-----------------------------------
%方法值說明:00,無需認證;01,GSSAPI;02,需要用戶名和PASSWORD;03-7F。IANA賦予的數字;80-FE,保留空間;FF,沒有可接受的方法。%

伺服器選項一種返回給客戶端
-----------------------------------
字元 意義 值
-----------------------------------
1 版本 5
2 選項的方法 其中一種,0xFF表示沒有可接受的方法
-----------------------------------

連接請求
----------------------------------------------------
字元 意義 值
----------------------------------------------------
1 版本 0
2 指令 1
3 保留 0
4 位址類型 1=IPv4,3=DNS,4=IPng
5+ IP位址或DNS名  可變
最後2個字元 TCP/UDP連接阜號    可變
----------------------------------------------------

連接回應
----------------------------------------------------
字元 意義 值
----------------------------------------------------
1 版本 0
2 回應 00-08
3 保留 0
4 位址類型 1=IPv4,3=DNS,4=IPng
5+ IP位址或DNS名   可變
最後2個字元 TCP/UDP連接阜號   可變
----------------------------------------------------
回應值說明:00,成功;01,SOCKS伺服器故障;02,規則不允許連接;03,網路不可訪問;04,主機不可訪問;05,拒絕連接;06,TTL過期;07,不支持指令;08,不支持位址類型。%

SOCKS 5 支持新增UDP代理,但是其原理我也不清楚,請高手補充。下面提供UDP請求包的結構:
----------------------------------------------------
字元 意義 值
----------------------------------------------------
1-2 保留 0x0000
3 分段數目 可變,0表示不分段
4 位址類型 1=IPv4,3=DNS,4=IPng
5+ IP位址或DNS名  可變
最後2個字元 TCP/UDP連接阜號  可變
資料 用戶資料 由客戶端應用程式決定
----------------------------------------------------

SOCK 5 有RFC1928定義,有興趣的可以看看

ken042082 2003-07-19 08:48 AM

thx... it's useful

羅迪 2003-07-19 09:39 AM

衷心銘感,謝謝賜教!
:)

ttteak 2003-07-19 10:32 AM

好文章謝謝分享


所有時間均為台北時間。現在的時間是 05:12 AM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2022, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1