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

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 閱讀(7140) 評論(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>
            久久久亚洲午夜电影| 中文av一区二区| 男人的天堂亚洲在线| 欧美一区免费| 久久精品成人欧美大片古装| 欧美一区三区二区在线观看| 欧美一区二区三区在线播放| 欧美一区二区三区精品| 欧美在线播放| 久久理论片午夜琪琪电影网| 麻豆国产精品va在线观看不卡| 久久综合狠狠综合久久综青草| 牛人盗摄一区二区三区视频| 欧美日韩国产成人高清视频| 欧美日韩一区成人| 国产欧美一区二区精品性| 黄网动漫久久久| 亚洲娇小video精品| 中日韩美女免费视频网址在线观看 | 欧美色中文字幕| 国产精品夜色7777狼人 | 久久久久久9| 欧美精品一区二区高清在线观看| 欧美日韩三级视频| 韩日成人av| 亚洲天堂免费观看| 另类天堂av| 亚洲美女av网站| 在线观看欧美激情| 一本久道综合久久精品| 亚洲综合欧美日韩| 久久综合综合久久综合| 欧美视频在线一区二区三区| 国语自产精品视频在线看| 99热这里只有成人精品国产| 久久精品一区二区三区不卡牛牛 | 亚洲黄色在线看| 午夜精品一区二区三区在线| 欧美v日韩v国产v| 亚洲欧美成人在线| 欧美日韩精品免费在线观看视频| 国产精品成人在线观看| 亚洲国产一区二区三区a毛片| 亚洲欧美激情四射在线日| 欧美国产精品一区| 欧美一区二区三区啪啪| 欧美视频在线视频| 欧美午夜精品久久久久久超碰| 黄色日韩在线| 欧美在线不卡视频| 麻豆国产精品va在线观看不卡| 亚洲性xxxx| 国产精品久99| 亚洲视频1区2区| 亚洲精品日韩精品| 欧美精品激情在线| 亚洲日本无吗高清不卡| 久久永久免费| 久久精品在线免费观看| 国产乱码精品1区2区3区| 亚洲图中文字幕| 夜夜夜久久久| 国产精品jizz在线观看美国| 亚洲一级片在线看| 亚洲一区bb| 国产精品一区二区你懂的| 欧美一区二区视频97| 午夜在线成人av| 一区在线免费| 亚洲夫妻自拍| 欧美成人免费网站| 日韩午夜激情| 亚洲一区二区四区| 国产有码在线一区二区视频| 久久综合久久88| 欧美成人在线免费观看| 在线中文字幕一区| 亚洲在线视频免费观看| 国产主播一区二区三区四区| 免费亚洲电影在线| 欧美精品首页| 欧美一级视频| 久久在线免费视频| 在线一区视频| 欧美中文字幕视频| 影音先锋亚洲一区| 久久狠狠婷婷| 久久免费视频网站| 亚洲精品孕妇| 一区二区三区四区国产| 欧美精品二区三区四区免费看视频| 99综合在线| 一本色道88久久加勒比精品| 国产精品美女| 欧美在线欧美在线| 欧美一区二区三区四区在线| 亚洲毛片在线观看.| 日韩一二在线观看| 国产精品一区视频网站| 开心色5月久久精品| 久久综合电影一区| 夜夜嗨av一区二区三区四区| 亚洲国产另类久久久精品极度| 欧美激情一区二区三区高清视频 | 欧美日韩黄色一区二区| 亚洲男人第一av网站| 亚洲欧美综合一区| 国产在线观看91精品一区| 91久久久精品| 国产视频一区在线观看| 欧美激情一二三区| 国产精品私人影院| 欧美1区3d| 欧美调教vk| 久久久久在线观看| 欧美另类视频在线| 久久久国产精品一区二区中文 | 亚洲一区视频在线观看视频| 欧美一区亚洲| 国产综合久久久久久鬼色| 一区二区三区高清在线| 狠狠色噜噜狠狠色综合久| 91久久精品一区二区三区| 国产亚洲欧美日韩一区二区| 蘑菇福利视频一区播放| 欧美日韩一区自拍| 麻豆久久婷婷| 欧美性色aⅴ视频一区日韩精品| 久久久99爱| 国产精品成人在线| 亚洲国产婷婷| 激情成人综合网| 正在播放日韩| 99精品欧美| 欧美日本一区二区视频在线观看| 久久久99爱| 国产精品夜夜夜| 一本久久综合亚洲鲁鲁五月天 | 一二美女精品欧洲| 美女精品在线观看| 亚洲婷婷综合久久一本伊一区| 美国十次了思思久久精品导航| 亚洲免费在线观看视频| 亚洲乱码久久| 免费在线国产精品| 欧美 日韩 国产一区二区在线视频 | 亚洲激情自拍| 久久女同精品一区二区| 久久久欧美一区二区| 欧美午夜免费影院| 午夜精品久久久久影视| 亚洲欧美怡红院| 国产精品v日韩精品v欧美精品网站| 亚洲国产黄色| 最新热久久免费视频| 麻豆久久婷婷| 久久精品亚洲一区二区| 亚洲高清电影| 模特精品在线| 91久久精品www人人做人人爽| 亚洲激情成人网| 欧美aa在线视频| 亚洲精品久久在线| 欧美在线不卡视频| 亚洲午夜未删减在线观看| 国产欧美91| 久久精品免费看| 欧美顶级大胆免费视频| 亚洲国内自拍| 欧美精品免费播放| 一本色道88久久加勒比精品 | 久久大逼视频| 亚洲精品美女久久7777777| 中国女人久久久| 国产免费观看久久黄| 久久爱91午夜羞羞| 男人的天堂成人在线| 亚洲国产精品va在线观看黑人| 亚洲特级片在线| 亚洲高清不卡在线观看| 亚洲一级片在线观看| 国精品一区二区| 欧美暴力喷水在线| 在线亚洲欧美专区二区| 久久乐国产精品| 午夜日韩电影| 曰本成人黄色| 欧美日韩在线综合| 久久久久久亚洲精品不卡4k岛国| 亚洲国产1区| 欧美在线观看网址综合| 狠狠v欧美v日韩v亚洲ⅴ| 欧美大片18| 亚洲欧美日韩爽爽影院| 欧美大尺度在线观看| 亚洲欧美影音先锋| 亚洲精品一二| 亚洲国产一区在线观看| 国产精一区二区三区| 欧美精品在线观看一区二区|