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

focus on linux, c/c++, lua

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

sock代理分為sock4代理和 sock5代理。sock4支持TCP(事實僅支持TCP),無需用戶名、密碼驗證;sock5支持TCP和UDP,根據(jù)代理服務(wù)器設(shè)置是否需要用戶名、密碼認(rèn)證。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的代理工作原理流程分別詳細(xì)說明,并給出示例代碼。
sock4的TCP代理工作流程:
1。我們首先還是連接服務(wù)器,然后發(fā)送數(shù)據(jù)給服務(wù)器。由于是無用戶密碼驗證,我們需要發(fā)送9個字節(jié)的數(shù)據(jù),展開寫為 04 01 + 目標(biāo)端口(2字節(jié)) + 目標(biāo)IP(4字節(jié)) + 00,其中目標(biāo)端口和目標(biāo)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進(jìn)制碼,以下同),讓代理服務(wù)器選擇認(rèn)證方式 ;
     05
     02 這里確認(rèn)2種認(rèn)證方式 無需認(rèn)證和需要認(rèn)證,只需要驗證一種方式,可以直接發(fā)送05 01 00查詢服務(wù)器是否支持無認(rèn)證代理方式;
     00 不需要認(rèn)證;
     02 需要認(rèn)證;
3。如果接到 05 00 則是可以代理或則05 02需要認(rèn)證,這里只需要判斷第二字節(jié)就行;
     如果需要認(rèn)證,需要向服務(wù)器發(fā)送01 用戶名長度(2字節(jié))用戶名 密碼長度(2字節(jié))密碼,然后接收服務(wù)器返回數(shù)據(jù),如果第二字節(jié)為   00,則認(rèn)證通過,否則無法認(rèn)證,則連接失敗;
4。發(fā)送 05 01 00 01 + 目的地址(4字節(jié))+ 目的端口(2字節(jié)),目的地址和端口都是16進(jìn)制碼(不是字符串)。
     例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。以后操作和直接與目的方進(jìn)行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選擇認(rèn)證方法
  buf[0= 0x05;
  buf[
1= 0x02//確認(rèn)2種認(rèn)證方式 無需認(rèn)證和需要認(rèn)證
  buf[2= 0x00// 無需認(rèn)證
  buf[3= 0x02// 需要認(rèn)證
  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)
  
{//需要認(rèn)證
   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')
   
{//認(rèn)證失敗
    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// 只有當(dāng)?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。當(dāng)有數(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 閱讀(7145) 評論(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>
            久久精品欧美| aa级大片欧美| 99热在线精品观看| 黄色成人在线免费| 一区二区三区国产在线| 黄色精品一区二区| 一区二区三区 在线观看视| 欧美freesex交免费视频| 亚洲一区二区三区中文字幕在线| 在线免费日韩片| 香蕉久久夜色精品国产| 一本大道av伊人久久综合| 国产精品国色综合久久| 性高湖久久久久久久久| 99精品免费视频| 老司机午夜免费精品视频| 午夜欧美精品| 欧美午夜一区二区三区免费大片 | 欧美 日韩 国产在线| 亚洲亚洲精品在线观看| 欧美国产专区| 亚洲国产综合视频在线观看| 欧美ed2k| 欧美激情一区二区三区在线视频观看 | 美国十次成人| 欧美亚洲在线播放| 国产精品男人爽免费视频1| 亚洲精品一区久久久久久| 最新成人av网站| 欧美va天堂在线| 久久全球大尺度高清视频| 极品日韩久久| 久久中文字幕导航| 欧美高清视频免费观看| 亚洲激情不卡| 欧美韩日一区二区| 亚洲精品一区二区三区福利| 日韩亚洲欧美一区二区三区| 欧美国产日本| 99精品福利视频| 欧美亚洲专区| 久久精品国产96久久久香蕉| 玖玖国产精品视频| 亚洲精品美女久久久久| 欧美精品18+| 亚洲一区二区在线视频| 国产精品久久久久免费a∨| 新狼窝色av性久久久久久| 国产日韩视频一区二区三区| 久久精品91久久久久久再现| 免费视频一区| 中日韩视频在线观看| 国产精品自在欧美一区| 久久久久国产精品午夜一区| 美女精品视频一区| 99热在线精品观看| 国产精品呻吟| 另类激情亚洲| 亚洲精品社区| 久久午夜激情| 一本色道88久久加勒比精品| 国产精品一区二区三区久久久| 亚洲高清视频一区二区| 日韩亚洲欧美成人| 国产日韩欧美不卡| 欧美www在线| 午夜精品一区二区三区在线播放| 久久久999精品| 日韩视频―中文字幕| 你懂的国产精品| 国产亚洲综合在线| 欧美精品久久一区二区| 欧美一级精品大片| 日韩午夜黄色| 免费在线观看日韩欧美| 午夜精品久久99蜜桃的功能介绍| 尤物yw午夜国产精品视频| 欧美日韩直播| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲一区综合| 亚洲三级电影在线观看| 另类欧美日韩国产在线| 亚洲欧美影院| aa亚洲婷婷| 亚洲国产免费| 狠狠色狠色综合曰曰| 夜夜狂射影院欧美极品| 亚洲国产精品美女| 久久―日本道色综合久久| 亚洲综合首页| 9色国产精品| 亚洲日本va在线观看| 欧美www视频| 欧美一二区视频| 亚洲小少妇裸体bbw| 亚洲精品一区在线观看| 一区二区三区欧美视频| 亚洲清纯自拍| 在线欧美日韩| 一区精品在线| 激情久久影院| 一区二区三区无毛| 韩国三级在线一区| 合欧美一区二区三区| 国产日产精品一区二区三区四区的观看方式 | 亚洲精品在线一区二区| 欧美成人午夜77777| 久久综合精品国产一区二区三区| 久久精品1区| 久久九九精品99国产精品| 美日韩精品免费| 亚洲美女在线看| 亚洲精品一区二区三区av| 亚洲日韩第九十九页| 亚洲精品欧洲精品| 99riav1国产精品视频| 亚洲精品国产系列| 日韩亚洲欧美中文三级| 一区二区三区回区在观看免费视频| 亚洲激情女人| 亚洲人成在线观看| 一本色道久久综合亚洲精品不| 一本色道久久综合狠狠躁的推荐| 一本色道久久88综合日韩精品| 一区二区三区欧美在线| 亚洲一级片在线观看| 国产亚洲人成a一在线v站| 久久精品亚洲国产奇米99| 久久一区免费| 日韩系列在线| 亚洲欧美日韩视频二区| 香蕉免费一区二区三区在线观看| 久久av资源网站| 欧美成人精品在线| 国产精品国产| 激情成人综合网| 亚洲字幕一区二区| 亚洲综合日韩在线| 久久午夜电影| 国产精品va在线播放| 国产日韩欧美在线播放| 亚洲国内精品在线| 午夜精品福利一区二区三区av| 久久爱www.| 亚洲国产日韩欧美| 亚洲男女自偷自拍图片另类| 久久久久久久999精品视频| 欧美精品少妇一区二区三区| 国产精品香蕉在线观看| 亚洲国产欧美在线| 午夜久久影院| 亚洲电影免费观看高清完整版| 在线视频精品一区| 久久久久久夜| 国产精品久久午夜夜伦鲁鲁| 在线观看视频一区二区| 国产精品av久久久久久麻豆网| 国产裸体写真av一区二区| 亚洲人成7777| 久久久久久久高潮| 在线综合亚洲欧美在线视频| 久久久精品欧美丰满| 国产精品免费看| 亚洲伦理中文字幕| 久久综合狠狠| 国产农村妇女精品一区二区| 久久av资源网| 亚洲精品久久久久久久久久久| 欧美一区午夜视频在线观看| 欧美区一区二区三区| 在线成人激情视频| 久久av红桃一区二区小说| 亚洲激情影视| 狂野欧美性猛交xxxx巴西| 国产日韩精品在线| 亚洲精品亚洲人成人网| 亚洲人成欧美中文字幕| 久久成年人视频| 亚洲视频二区| 欧美色大人视频| 99精品欧美一区二区三区综合在线 | 免费看av成人| 好吊妞**欧美| 久久久久久久久久久一区| 一区二区成人精品| 欧美日韩亚洲一区二区三区在线| 亚洲国产欧美在线人成| 国产精品免费福利| 国产精品欧美日韩| 亚洲综合视频1区| 亚洲一卡久久| 国产精品毛片在线| 欧美一级大片在线观看| 亚洲小说区图片区| 国产精品久久久久天堂| 亚洲欧美日韩第一区| 亚洲夜间福利| 国产亚洲综合性久久久影院| 久久精品国产一区二区三区| 亚洲欧美日韩天堂一区二区|