程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#實現Socket5代理協議通訊(2)

C#實現Socket5代理協議通訊(2)

編輯:關於C語言

· VER 協議版本: X’05’

· CMD

· CONNECT:X’01’

· BIND:X’02’

· UDP ASSOCIATE:X’03’

· RSV 保留

· ATYP 後面的地址類型

· IPV4:X’01’

· 域名:X’03’

· IPV6:X’04’'

· DST.ADDR 目的地址

· DST.PORT 以網絡字節順序出現的端口號

SOCKS服務器會根據源地址和目的地址來分析請求,然後根據請求類型返回一個或多個應答。

ATYP字段中描述了地址字段(DST.ADDR,BND.ADDR)所包含的地址類型:

· X'01'

基於IPV4的IP地址,4個字節長

· X'03'

基於域名的地址,地址字段中的第一字節是以字節為單位的該域名的長度,沒有結尾的NUL字節。

· X'04'

基於IPV6的IP地址,16個字節長。

Variable表示該域的長度是可變的。

以最常用的IP表示法為例,加入我們的代理服務器地址是10.10.1.254,現在我們要通過代理服務器訪問192.168.1.2這個IP地址,這裡不要看做局域網地址,因為是通過代理進行訪問的,

前期傳遞了IP對象IPEndPoint destIP;

byte [] data = new byte[10];

data[0]=5;data[1]=1;data[2]=0;data[3]=1;//前4個字節

Array.Copy(destIP.Address.GetAddressBytes(), 0, data, 4, 4); //IP地址

Array.Copy(BitConverter.GetBytes(

IPAddress.HostToNetworkOrder(destIP.Port)), 2, data, 8, 2); //端口號

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved