青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

focus on linux, c/c++, lua

sock代理服務(wù)原理(TCP穿透)[轉(zhuǎn)載]

sock代理分為sock4代理和 sock5代理。sock4支持TCP(事實僅支持TCP),無需用戶名、密碼驗證;sock5支持TCP和UDP,根據(jù)代理服務(wù)器設(shè)置是否需要用戶名、密碼認證。TCP和UDP代理工作原理產(chǎn)不多,UDP代理網(wǎng)上多的是,google一下即可。這里只講TCP代理工作原理。
sock代理工作原理大致如下:
1。[需要代理方]向服務(wù)器發(fā)出請求信息;
2。[代理方]應(yīng)答;
3。[需要代理方]接到應(yīng)答后發(fā)送向[代理方]發(fā)送目的ip和端口;
4。[代理方]與目的連接;
5。[代理方]將[需要代理方]發(fā)出的信息傳到目的方,將目的方發(fā)出的信息傳到[需要代理方];
6。代理完成。
下面對sock4和sock5的代理工作原理流程分別詳細說明,并給出示例代碼。
sock4的TCP代理工作流程:
1。我們首先還是連接服務(wù)器,然后發(fā)送數(shù)據(jù)給服務(wù)器。由于是無用戶密碼驗證,我們需要發(fā)送9個字節(jié)的數(shù)據(jù),展開寫為 04 01 + 目標端口(2字節(jié)) + 目標IP(4字節(jié)) + 00,其中目標端口和目標IP就是我們真正要連接的服務(wù)器端口和服務(wù)器地址;
2。代理服務(wù)器返回8字節(jié)的數(shù)據(jù),我們只要判斷第二字節(jié)是否為90即可,若是90連接成功,否則失敗.剩下的操作和不存在代理服務(wù)器一樣,可直接用發(fā)送\接受數(shù)據(jù)。
sock5的TCP代理工作流程:
1。向服務(wù)器的代理端口建立tcp連接。一般為1080;
2。向服務(wù)器發(fā)送  05 02 00 02(此為16進制碼,以下同),讓代理服務(wù)器選擇認證方式 ;
     05
     02 這里確認2種認證方式 無需認證和需要認證,只需要驗證一種方式,可以直接發(fā)送05 01 00查詢服務(wù)器是否支持無認證代理方式;
     00 不需要認證;
     02 需要認證;
3。如果接到 05 00 則是可以代理或則05 02需要認證,這里只需要判斷第二字節(jié)就行;
     如果需要認證,需要向服務(wù)器發(fā)送01 用戶名長度(2字節(jié))用戶名 密碼長度(2字節(jié))密碼,然后接收服務(wù)器返回數(shù)據(jù),如果第二字節(jié)為   00,則認證通過,否則無法認證,則連接失敗;
4。發(fā)送 05 01 00 01 + 目的地址(4字節(jié))+ 目的端口(2字節(jié)),目的地址和端口都是16進制碼(不是字符串)。
     例202.103.190.27 - 7201
     則發(fā)送的信息為:05 01 00 01 CA 67 BE 1B 1C 21
     (CA=202 67=103 BE=190 1B=27 1C21=7201)
5。接收代理服務(wù)器返回的數(shù)據(jù),我們只要判斷第二字節(jié)是否為00即表示代理連接完成;
6。以后操作和直接與目的方進行TCP連接相同。

//代理服務(wù)器登錄
CString g_proxyserver = "";
int  g_proxyport = 1080;
CString g_proxyuser 
= "";
CString g_proxypwd 
= "";
int  g_proxyid = 3;  //2 - sock4代理 3 - sock5代理
char server_name[100]= {0};  //真正的服務(wù)器地址
int  server_port=8000;   //真正的服務(wù)器端口
SOCKET ConnecToProxyServer()
{
 SOCKADDR_IN ToAddr;
 SOCKET m_hSocketpop 
= socket(AF_INET, SOCK_STREAM ,0);  // SOCK_DGRAM;
 memset(&ToAddr, 0sizeof(ToAddr));
 ToAddr.sin_family 
= AF_INET;
 ToAddr.sin_addr.s_addr 
= inet_addr(g_proxyserver);//這是我的SOCKS服務(wù)器
 ToAddr.sin_port = htons(g_proxyport); 
 
int retErr = connect(m_hSocketpop,(SOCKADDR*)&ToAddr,sizeof(ToAddr));
 
if(retErr == SOCKET_ERROR)
 
{
  closesocket(m_hSocketpop);
  
return -1;
 }

 
char buf[100= {0};
 
if(g_proxyid == 3//sock5 代理方式
 {
  
// 讓PROXY選擇認證方法
  buf[0= 0x05;
  buf[
1= 0x02//確認2種認證方式 無需認證和需要認證
  buf[2= 0x00// 無需認證
  buf[3= 0x02// 需要認證
  if(send(m_hSocketpop,(const far char*)buf,4,0== SOCKET_ERROR)
  
{
   closesocket(m_hSocketpop);
   
return -1;
  }

  Sleep(
100);
  
if(recv(m_hSocketpop,buf,10,0== SOCKET_ERROR)
  
{
   closesocket(m_hSocketpop);
   
return -1;
  }

  
if(buf[1== 0x02)
  
{//需要認證
   char userStr[128= {0};
   userStr[
0]=0x01;
   userStr[
1]=g_proxyuser.GetLength();
   strcpy(userStr
+2,g_proxyuser);
   userStr[
2+g_proxyuser.GetLength()]=g_proxypwd.GetLength();
   strcpy(userStr
+3+g_proxyuser.GetLength(),g_proxypwd);
   
int result=send(m_hSocketpop,userStr,strlen(userStr), 0);
   
if(result == SOCKET_ERROR)
   
{
    closesocket(m_hSocketpop);
    
return -1;
   }

   Sleep(
100);
   
char validateChar[2= {1};
   result
=recv(m_hSocketpop,validateChar,20);
   
if(result == SOCKET_ERROR)
   
{
    closesocket(m_hSocketpop);
    
return -1;
   }

   
if(validateChar[1]!='\x00')
   
{//認證失敗
    closesocket(m_hSocketpop);
    
return -1;
   }

  }

  
// 向PROXY服務(wù)器發(fā)送CONNECT 請求,
  memset(buf, 0100);
  buf[
0= 0x05;
  buf[
1= 0x01// connection request.
  buf[2= 0x00// reserved!
  buf[3= 0x01// address type:Ip V4 ;
  *((ULONG*)(buf+4))=inet_addr(server_name);
  
*((USHORT*)(buf+8))=htons(server_port);
  
if(send(m_hSocketpop,(const far char*)buf,10,0== SOCKET_ERROR)
  
{
   closesocket(m_hSocketpop);
   
return -1;
  }

  Sleep(
100);
  
// 接收PROXY服務(wù)器返回的REPLY
  memset(buf, 1100);
  
if(recv(m_hSocketpop,buf, 20,0== SOCKET_ERROR)
  
{
   closesocket(m_hSocketpop);
   
return -1;
  }

  
if(buf[1!= 0// 只有當?shù)诙€字節(jié)為0時,才表示成功。
  {
//   printf("Cannot connect to the remote server!\n");
   closesocket(m_hSocketpop);
   
return -1;
  }

//  theApp.m_ClientSocket.Attach(m_hSocketpop);
 }

 
if(g_proxyid == 2//sock4 代理方式
 {
  
int result;
  memset(buf, 
0100);
  buf[
0= 0x04;
  buf[
1= 0x01// connection request.
  *((USHORT*)(buf+2))=htons(server_port);
  
*((ULONG*)(buf+4))=inet_addr(server_name);
  buf[
8= 0x00;
  result 
= send(m_hSocketpop, (const far char*)buf, 90);
  
if(result == SOCKET_ERROR)
  
{
   closesocket(m_hSocketpop);
   
return -1;
  }

  Sleep(
100);
  
char EchoStr[10];
  memset(EchoStr,
0,10);
  result
=recv(m_hSocketpop,EchoStr,80);
  
if(result == SOCKET_ERROR)
  
{
   closesocket(m_hSocketpop);
   
return -1;
  }

  
if(EchoStr[1!= 90)
  
{
   closesocket(m_hSocketpop);
   
return -1;
  }

//  theApp.m_ClientSocket.Attach(m_hSocketpop);
 }

 
return m_hSocketpop;
}

調(diào)用方式:
  strcpy(server_name, theApp.m_ServerIP);
  server_port 
= 8080;
  SOCKET m_socket 
= ConnecToProxyServer();
  
if(m_socket == -1)
  
{
        
return 0;
  }

  
int type = 1000;
  send(m_socket, (
char*)&type, sizeof(int), 0);


SOCK5如何用代理UDP連接

1。向服務(wù)器的1080端口建立tcp連接

2。向服務(wù)器發(fā)送 05 01 00

3。如果接到 05 00 則是可以代理

4。發(fā)送 05 03 00 01 00 00 00 00 + 本地UDP端口(2字節(jié))

5。服務(wù)器返回 05 00 00 01 +服務(wù)器地址+端口

7.需要申請方發(fā)送
00 00 00 01 +目的地址IP(4字節(jié))+目的端口 +所要發(fā)送的信息

8。當有數(shù)據(jù)報返回時
向需要代理方發(fā)出00 00 00 01 +來源地址IP(4字節(jié))+來源端口 +接受的信息
 
使用sock5代理時TCP數(shù)據(jù):
客戶端   sock5服務(wù)器
SYN
   ACKSYN
ACK
05 01 00 00 00 00
   05 00 00 00 00 00
05 01 00 03 0E 31 39 32 2E 31 36 38 2E 37 35 2E 31 31 34 00 6E (.....192.168.75.114.n)
   05 00 00 01 C0 A8 4D 56 08 D4
ACK
   +OK X1 NT-POP3 Server iflytek.com (IMail 8.15 228888-9)..
USER hjma..
   +OK send your password..
PASS xxxxxxx..
   +OK maildrop locked and ready..
STAT..
   +OK 0 0..
QUIT..
   +OK POP3 Server saying Good-Bye..
ACKFIN
   ACK
   ACKFIN
ACK  

posted on 2010-06-08 13:36 zuhd 閱讀(7135) 評論(0)  編輯 收藏 引用 所屬分類: c/c++

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲午夜一二三区视频| 国产一区香蕉久久| 一区二区三区福利| 亚洲啪啪91| 免费不卡在线观看| 久久综合给合久久狠狠色| 久久久www成人免费毛片麻豆| 久久精品噜噜噜成人av农村| 欧美综合国产| 久久嫩草精品久久久精品| 欧美1区免费| 亚洲日韩欧美一区二区在线| 亚洲一区二区精品视频| 欧美一区二区高清在线观看| 亚洲欧美日韩在线观看a三区| 久久er99精品| 免费在线一区二区| 日韩午夜黄色| 先锋影音国产精品| 你懂的视频欧美| 欧美日本韩国在线| 国产美女精品视频免费观看| 伊人久久婷婷色综合98网| 亚洲精品之草原avav久久| 在线视频亚洲欧美| 久久蜜桃资源一区二区老牛 | 欧美激情91| 一本色道88久久加勒比精品 | 午夜在线电影亚洲一区| 免费成人黄色| 一区二区精品国产| 久久久www成人免费精品| 欧美日本二区| 国产综合久久| 亚洲欧美激情视频| 亚洲激情视频网站| 久久高清一区| 欧美午夜精品久久久久久孕妇| 精品成人久久| 久久国产精品一区二区三区| 亚洲精品一区二区三| 麻豆精品在线观看| 国产亚洲二区| 亚洲欧美精品| 日韩一级欧洲| 欧美绝品在线观看成人午夜影视 | 欧美日韩福利在线观看| 在线精品视频一区二区三四| 久久精品五月婷婷| 亚洲综合成人在线| 欧美亚州韩日在线看免费版国语版| 亚洲国产专区| 欧美成人午夜免费视在线看片| 午夜精品久久久久久久久久久久| 国产精品扒开腿做爽爽爽软件| 亚洲美女精品一区| 欧美激情女人20p| 久久久午夜电影| 国产女主播一区| 午夜精品久久久久久久蜜桃app| 99re8这里有精品热视频免费| 欧美精品激情| 亚洲午夜在线| 在线视频亚洲一区| 欧美午夜免费影院| 亚洲综合成人在线| 韩国av一区二区| 亚洲国产美女久久久久| 久久精品99国产精品酒店日本| 亚洲一区激情| 国产一区99| 久久最新视频| 乱中年女人伦av一区二区| 亚洲国产精品一区二区www在线 | 久久久999| 欧美在线视频免费播放| 国产亚洲精品bt天堂精选| 久久精品视频免费播放| 欧美一区二区视频网站| 国产视频观看一区| 麻豆久久精品| 欧美精品在线视频观看| 中文久久乱码一区二区| 一本一本久久a久久精品综合妖精| 国产精品久久久亚洲一区| 亚洲欧美在线播放| 欧美一区二区在线| 亚洲日本成人网| 99在线精品视频| 国产人妖伪娘一区91| 蜜桃av综合| 欧美日韩精品在线视频| 欧美中文日韩| 欧美高清在线一区| 欧美一级黄色录像| 另类亚洲自拍| 亚洲午夜一区| 久久精品亚洲热| 在线一区二区三区做爰视频网站| 亚洲影院一区| 亚洲精品欧洲| 性做久久久久久久免费看| 最新国产成人av网站网址麻豆| 亚洲视频在线观看网站| 激情av一区| 亚洲夜晚福利在线观看| 伊人成人开心激情综合网| 亚洲精品久久| 狠狠久久亚洲欧美| 亚洲午夜高清视频| 99v久久综合狠狠综合久久| 欧美在线3区| 亚洲一区久久久| 免费亚洲一区| 久久综合色8888| 欧美视频福利| 欧美 日韩 国产一区二区在线视频 | 欧美巨乳波霸| 美日韩免费视频| 国产女精品视频网站免费| 亚洲国产老妈| 亚洲国产精品久久| 欧美一级在线播放| 亚洲男女自偷自拍图片另类| 欧美成人精品福利| 欧美色视频一区| 一区二区三区久久| 欧美丰满少妇xxxbbb| 久久综合九色九九| 国产亚洲欧美日韩美女| 一本色道久久综合亚洲二区三区| 亚洲精品偷拍| 女同一区二区| 免费亚洲电影| 在线观看日韩av| 久久久av网站| 久久亚洲美女| 精品成人久久| 久久久999精品| 免费亚洲电影在线观看| 亚洲第一在线| 蜜桃久久精品一区二区| 欧美黄在线观看| 亚洲美女视频| 欧美日韩国产综合久久| 91久久久久久| 亚洲一区在线观看视频| 久久久久久久久久久成人| 国产一区二区三区四区| 久久久亚洲精品一区二区三区| 久久亚洲综合| 亚洲精品国产精品国自产在线 | 亚洲欧美在线免费| 国产亚洲一区在线播放| 久久久91精品| 亚洲国产精品久久久| 中日韩视频在线观看| 国产精品成人aaaaa网站| 亚洲综合日韩| 美脚丝袜一区二区三区在线观看| 亚洲黑丝一区二区| 欧美视频在线观看免费| 亚洲欧美一级二级三级| 玖玖在线精品| 亚洲狠狠婷婷| 国产精品国产三级国产普通话蜜臀| 亚洲欧美日韩在线不卡| 美女被久久久| 一本色道久久综合精品竹菊 | 亚洲欧美日韩国产一区二区三区| 久久久久国产一区二区三区四区 | 久久久久久69| 亚洲日本成人女熟在线观看| 欧美日韩午夜在线视频| 性久久久久久久| 亚洲欧洲在线看| 久久久999成人| 日韩一本二本av| 国产视频在线观看一区二区| 美女尤物久久精品| 亚洲影视在线| 亚洲国产片色| 久久久91精品国产| 亚洲一区二区不卡免费| 欧美激情aⅴ一区二区三区| 影音先锋日韩资源| 欧美日韩一区视频| 久久亚洲一区二区| 中文欧美在线视频| 亚洲国产成人高清精品| 久久久精品国产免大香伊| 91久久精品一区| 国产在线观看精品一区二区三区| 欧美激情一区二区在线| 久久久999精品免费| 亚洲一区精品电影| 亚洲人www| 欧美激情一区在线观看| 久久久久久久久一区二区| 午夜日韩福利|