socks5
模擬前端行為的代理協議
SOCKS5 是一個代理協議,它在使用TCP/IP協議通訊的前端機器和伺服器機器之間扮演一個中介角色,使得內部網中的前端機器變得能夠訪問Internet網中的伺服器,或者使通訊更加安全。SOCKS5 伺服器通過將前端發來的請求轉發給真正的目標伺服器,模擬了一個前端的行為。在這裡,前端和SOCKS5之間也是通過TCP/IP協議進行通訊,前端將原本要發送給真正伺服器的請求發送給SOCKS5伺服器,然後SOCKS5伺服器將請求轉發給真正的伺服器。
如果您的機器具有一個合法的 Internet IP 地址,或者您利用自己機器上的數據機撥號上網,可以自由和 Internet 上任何主機溝通,那麼您通常不必關心 SOCKS5 協議。SOCKS5 協議對於處在內部網路中的機器,需要透過網路中某些可以聯通外部 Internet 的機器訪問外部時,有用。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是一組由Internal工程工作小組(IETF)所開發出來的開放軟體開放標準,用來處理網路安全的事宜。SOCKS像一堵牆被夾在 Internal伺服器和客戶端之間,對於出入企業網路的資訊提供流量和安全的管理。SOCKS這個名詞並不是一組英文字頭的縮寫,而是一個和 TCP/IP的Socket埠有關的安全標準,一般防火牆系統通常是象網關(Gateway)一樣是作用在OSI模型的第七層也就是應用層上,對 TCP/IP的高級協議,如Telnet、FTP、HTTP和SMTP加以管制,而SOCKS作用在OSI模型的第五層也就是會話層上,象一個代理一樣對客戶端到伺服器端或伺服器和伺服器之間的數據聯繫提供安全上的服務。由於SOCKS作用在會話層上,因此它是一個提供會話層到會話層間安全服務的方案,不受高層應用程序變更的影響。 Socks代理只是簡單地傳遞數據包,而不必關心是何種應用協議(比如FTP、HTTP和NNTP請求),所以Socks代理伺服器比應用層代理伺服器要快。