SOCKS


SOCKS (简体)

Free Web Hosting with Website Builder

SOCKS是一種網路協議,主要用於客戶端與外網伺服器之間通訊的中間傳遞。SOCKS是"SOCKetS"的縮寫[1]

防火牆後的客戶端要訪問外部的伺服器時,就跟SOCKS代理伺服器連接。這個代理伺服器控制客戶端訪問外網的資格,允許的話,就將客戶端的請求發往外部的伺服器。

這個協議最初由Devid Koblas開發,而後由NEC的Ying-Da Lee將其擴展到版本4。最新協議是版本5,與前一版本相比,增加支持UDP、驗證,以及IPv6

根據OSI模型,SOCKS是位於應用層傳輸層之間的中間層。

目錄

SOCKS 4 協議

下面是客戶端向SOCKS 4代理伺服器,發送的連接請求包的格式(以位元組為單位):

+----+----+----+----+----+----+----+----+----+----+....+----+
| VN | CD | DSTPORT |      DSTIP        | USERID       |NULL|
+----+----+----+----+----+----+----+----+----+----+....+----+
   1    1      2              4           variable       1
  • VN是SOCK版本,應該是4;
  • CD是SOCK的命令碼,1表示CONNECT請求,2表示BIND請求;
  • DSTRORT表示目的主機的埠;
  • DSTIP指目的主機的IP地址;
  • NULL是0;

代理伺服器而後發送回應包(以位元組為單位):

+----+----+----+----+----+----+----+----+
| VN | CD | DSTPORT |      DSTIP        |
+----+----+----+----+----+----+----+----+
   1    1      2              4
  • VN是回應碼的版本,應該是0;
  • CD是代理伺服器答覆,有幾種可能:
  • 90,請求得到允許;
  • 91,請求被拒絕或失敗;
  • 92,由於SOCKS伺服器無法連接到客戶端的identd(一個驗證身份的進程),請求被拒絕;
  • 93,由於客戶端程序與identd報告的用戶身份不同,連接被拒絕。
  • DSTPORT與DSTIP與請求包中的內容相同,但被忽略。

如果請求被拒絕,SOCKS伺服器馬上與客戶端斷開連接;如果請求被允許,代理伺服器就充當客戶端與目的主機之間進行雙向傳遞,對客戶端而言,就如同直接在與目的主機相連。

SOCKS 伺服器

部分SOCKS伺服器軟體:

SOCKS 客戶端

有不少客戶端的socksify[2]軟體,本地軟體從而可以通過SOCKS來與外網相連。

客戶端 許可證 版本 發布日期 平台 支持協議
Dante client BSD/CMU 1.1.18 09/2005 Linux v4, v5
FreeCap GPL 3.18 02/2005 Windows -
Hummingbird socks - - - Windows -
ProxyCap - 2.03 - Windows -
SocksCap Non-Comercial home use - - - v5
tsocks GPL 1.8 10/2002 - -
nylon - - 06/2003 OpenBSD -

註腳

  1. ^  詳見:http://www.hummingbird.com/products/nc/socks/faq.html#stand
  2. ^ sockify定義請見:http://mindprod.com/jgloss/socksify.html

參見

外部連結







Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History