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

focus on linux, c/c++, lua

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

sock代理分為sock4代理和 sock5代理。sock4支持TCP(事實(shí)僅支持TCP),無(wú)需用戶(hù)名、密碼驗(yàn)證;sock5支持TCP和UDP,根據(jù)代理服務(wù)器設(shè)置是否需要用戶(hù)名、密碼認(rèn)證。TCP和UDP代理工作原理產(chǎn)不多,UDP代理網(wǎng)上多的是,google一下即可。這里只講TCP代理工作原理。
sock代理工作原理大致如下:
1。[需要代理方]向服務(wù)器發(fā)出請(qǐng)求信息;
2。[代理方]應(yīng)答;
3。[需要代理方]接到應(yīng)答后發(fā)送向[代理方]發(fā)送目的ip和端口;
4。[代理方]與目的連接;
5。[代理方]將[需要代理方]發(fā)出的信息傳到目的方,將目的方發(fā)出的信息傳到[需要代理方];
6。代理完成。
下面對(duì)sock4和sock5的代理工作原理流程分別詳細(xì)說(shuō)明,并給出示例代碼。
sock4的TCP代理工作流程:
1。我們首先還是連接服務(wù)器,然后發(fā)送數(shù)據(jù)給服務(wù)器。由于是無(wú)用戶(hù)密碼驗(yàn)證,我們需要發(fā)送9個(gè)字節(jié)的數(shù)據(jù),展開(kāi)寫(xiě)為 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)證方式 無(wú)需認(rèn)證和需要認(rèn)證,只需要驗(yàn)證一種方式,可以直接發(fā)送05 01 00查詢(xún)服務(wù)器是否支持無(wú)認(rèn)證代理方式;
     00 不需要認(rèn)證;
     02 需要認(rèn)證;
3。如果接到 05 00 則是可以代理或則05 02需要認(rèn)證,這里只需要判斷第二字節(jié)就行;
     如果需要認(rèn)證,需要向服務(wù)器發(fā)送01 用戶(hù)名長(zhǎng)度(2字節(jié))用戶(hù)名 密碼長(zhǎng)度(2字節(jié))密碼,然后接收服務(wù)器返回?cái)?shù)據(jù),如果第二字節(jié)為   00,則認(rèn)證通過(guò),否則無(wú)法認(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)證方式 無(wú)需認(rèn)證和需要認(rèn)證
  buf[2= 0x00// 無(wú)需認(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 請(qǐng)求,
  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ù)诙€(gè)字節(jié)為0時(shí),才表示成功。
  {
//   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.需要申請(qǐng)方發(fā)送
00 00 00 01 +目的地址IP(4字節(jié))+目的端口 +所要發(fā)送的信息

8。當(dāng)有數(shù)據(jù)報(bào)返回時(shí)
向需要代理方發(fā)出00 00 00 01 +來(lái)源地址IP(4字節(jié))+來(lái)源端口 +接受的信息
 
使用sock5代理時(shí)TCP數(shù)據(jù):
客戶(hù)端   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) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 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>
            欧美成人激情视频| 欧美色精品天天在线观看视频| 免费久久99精品国产自| 欧美日韩一区二区精品| 国产日韩欧美制服另类| 亚洲国产高清自拍| 亚洲欧美激情四射在线日| 久久久久久久波多野高潮日日 | 午夜精品久久久久久久99水蜜桃 | 美女主播一区| 日韩午夜av| 欧美一区二区三区在线观看 | 欧美剧在线观看| 国产午夜精品久久久久久久| 亚洲久久成人| 久久精品99无色码中文字幕| 亚洲高清在线视频| 亚洲香蕉伊综合在人在线视看| 美女视频黄免费的久久| 国产欧美欧美| av成人天堂| 噜噜噜91成人网| 亚洲一区二区综合| 欧美国产高潮xxxx1819| 国内外成人免费激情在线视频网站 | 欧美日韩亚洲国产精品| 尤物网精品视频| 欧美一区二区日韩| 亚洲精品久久| 免费欧美视频| 国内外成人免费激情在线视频网站 | 卡一卡二国产精品| 国产视频久久久久| 亚洲综合大片69999| 亚洲国产成人久久综合一区| 久久精品国产69国产精品亚洲| 欧美亚男人的天堂| 99国产精品久久久久久久久久| 久久五月天婷婷| 亚洲欧美日韩在线观看a三区| 欧美日韩国产首页| 亚洲精品乱码视频 | 免费观看30秒视频久久| 国内成人精品2018免费看| 亚洲综合第一| 一区二区激情小说| 欧美日韩成人在线| 亚洲精品视频免费观看| 欧美大片在线影院| 久久精品人人做人人爽电影蜜月| 国产精品视频精品| 亚洲欧美高清| 中文欧美字幕免费| 欧美视频不卡| 亚洲午夜三级在线| 亚洲美女中出| 欧美日韩直播| 亚洲午夜羞羞片| 99精品欧美一区| 欧美三级欧美一级| 亚洲特色特黄| 中日韩美女免费视频网站在线观看| 欧美人交a欧美精品| 日韩一区二区久久| 亚洲美女黄网| 欧美性淫爽ww久久久久无| 亚洲一区久久久| 亚洲香蕉成视频在线观看 | 国产精品一二三四区| 午夜精品久久久久久久99樱桃 | 久久九九国产| 久久精品在线| 亚洲大胆在线| 亚洲电影免费观看高清| 欧美激情一二区| 一区二区三区四区国产精品| 99爱精品视频| 国产精品亚洲欧美| 久久九九精品99国产精品| 久久黄色级2电影| 亚洲国产cao| 91久久精品国产91久久性色tv| 欧美精品一区三区在线观看| 一区二区欧美视频| 亚洲午夜电影网| 国产午夜精品久久久久久免费视| 久久五月天婷婷| 欧美v日韩v国产v| 国产精品99久久久久久人| 亚洲午夜精品一区二区| 国产亚洲一区二区三区| 蘑菇福利视频一区播放| 欧美成人免费小视频| 亚洲视频在线观看| 香蕉久久夜色精品国产使用方法| 激情av一区| 亚洲人成欧美中文字幕| 国产精品入口夜色视频大尺度| 久久免费视频这里只有精品| 欧美3dxxxxhd| 亚洲欧美影音先锋| 久久大逼视频| 日韩一二在线观看| 亚洲女人天堂成人av在线| 狠狠爱综合网| 亚洲看片网站| 国产亚洲a∨片在线观看| 欧美粗暴jizz性欧美20| 欧美日韩在线不卡| 久久夜色精品国产欧美乱| 欧美国产第一页| 欧美在线影院在线视频| 欧美va天堂va视频va在线| 亚洲综合导航| 美女精品国产| 欧美在线一区二区| 欧美极品在线观看| 久久精品91久久久久久再现| 麻豆国产精品777777在线| 亚洲欧美卡通另类91av| 久久亚洲高清| 小黄鸭精品密入口导航| 你懂的视频欧美| 久久九九国产精品怡红院| 欧美喷水视频| 你懂的视频一区二区| 国产精品国产三级国产aⅴ9色 | 在线日韩电影| 中文在线资源观看视频网站免费不卡| 国产亚洲毛片| 一本色道久久综合亚洲二区三区| 激情综合自拍| 亚洲一区二区精品在线观看| 亚洲激情综合| 欧美在线黄色| 亚洲一区二区三| 欧美成人亚洲成人日韩成人| 久久久人成影片一区二区三区观看 | 欧美日韩三区| 国产精品视频免费在线观看| 一区电影在线观看| 亚洲伦理网站| 亚洲国产91精品在线观看| 亚洲一区二区在线观看视频| 99这里有精品| 免费亚洲一区| 久久理论片午夜琪琪电影网| 国产精品久久久久久久久久久久| 亚洲丰满在线| 一区在线免费观看| 午夜精品一区二区三区在线播放| 在线综合亚洲欧美在线视频| 免费欧美在线视频| 久久久久久有精品国产| 国产精品亚洲人在线观看| 亚洲精品影视| 日韩小视频在线观看专区| 久久综合一区| 麻豆精品91| 精品不卡一区| 久久精品国产免费| 久久精品国产综合| 国产精品视频999| 亚洲一区二区免费在线| 亚洲一区二区高清视频| 欧美日韩免费在线视频| 最新国产精品拍自在线播放| 亚洲国产另类 国产精品国产免费| 久久国产一区二区| 久久精品国产精品亚洲综合| 国产精品永久免费观看| 亚洲综合日韩在线| 午夜免费日韩视频| 国产精品一区视频| 亚洲嫩草精品久久| 久久精品国产96久久久香蕉| 国产日韩欧美不卡| 欧美在线三级| 久久综合久久综合这里只有精品| 国内精品久久国产| 久久久久久久久岛国免费| 美女啪啪无遮挡免费久久网站| 在线观看视频一区二区欧美日韩| 久久米奇亚洲| 欧美激情影音先锋| 亚洲精品美女在线观看| 欧美另类变人与禽xxxxx| 日韩午夜av电影| 亚洲欧美日韩天堂一区二区| 国产精品亚洲精品| 久久精品成人欧美大片古装| 免费人成网站在线观看欧美高清| 在线免费一区三区| 欧美国产一区二区在线观看| 亚洲精品久久久一区二区三区| 亚洲视频在线看| 国产啪精品视频| 久久久91精品国产一区二区精品| 欧美va天堂| 在线视频精品一|