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

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久久精品色噜噜导演| 欧美日产一区二区三区在线观看| 免播放器亚洲一区| 亚洲二区在线视频| 亚洲国产高清高潮精品美女| 亚洲欧美一区二区三区久久| 国产欧美日韩一级| 久热re这里精品视频在线6| 久久久另类综合| 亚洲精品一区在线观看| 日韩一二三区视频| 国产欧亚日韩视频| 免费亚洲视频| 欧美三区在线视频| 欧美在线不卡| 久久九九精品| 99精品欧美一区二区三区| 99精品欧美一区二区三区| 国产日韩欧美精品综合| 亚洲成人在线免费| 亚洲精品一区二区三区四区高清 | 国产一区二区三区四区在线观看 | 久久精品理论片| 日韩亚洲精品视频| 亚洲欧洲99久久| 亚洲人体一区| 亚洲欧美美女| 日韩亚洲不卡在线| 久久精品国产欧美亚洲人人爽| 亚洲高清在线视频| 亚洲一区三区电影在线观看| 亚洲国产欧美国产综合一区| 亚洲午夜精品| 亚洲免费观看高清完整版在线观看| 日韩一级黄色大片| 在线精品亚洲| 亚洲欧美日本另类| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲一级二级| 一区二区三区久久久| 久久米奇亚洲| 久久精品国产清高在天天线| 欧美日韩一级大片网址| 久久综合精品国产一区二区三区| 欧美三日本三级三级在线播放| 免费中文日韩| 国产麻豆精品久久一二三| 亚洲韩国精品一区| 亚洲国产成人午夜在线一区| 欧美亚洲网站| 亚洲国产精品久久久久婷婷老年| 欧美日韩ab| 欧美二区在线| 影院欧美亚洲| 欧美一区免费视频| 亚洲第一网站| 亚洲欧美日韩一区二区在线| 亚洲一区自拍| 欧美视频中文字幕在线| 亚洲欧洲综合| 亚洲欧洲一区二区在线播放| 久久精品三级| 久久影院午夜片一区| 国产一区二区三区四区三区四| 亚洲一区精品电影| 亚洲欧美国产精品专区久久| 欧美日韩在线三级| 一区二区三区精品视频在线观看 | 欧美性大战久久久久久久蜜臀| 亚洲欧洲精品一区二区精品久久久| 亚洲国产精品精华液2区45| 久久久久久穴| 亚洲成人在线网站| 亚洲精品美女久久7777777| 欧美sm极限捆绑bd| 亚洲肉体裸体xxxx137| 日韩写真在线| 国产精品久久久久久一区二区三区 | 一本久久综合亚洲鲁鲁| 影音先锋中文字幕一区| 久久久欧美一区二区| 欧美不卡一区| 最新高清无码专区| 欧美国产综合视频| 一本久久a久久免费精品不卡| 亚洲男女自偷自拍| 国产综合视频| 欧美黄色免费网站| 亚洲视频一区二区| 久久国产主播精品| 亚洲国产一区二区三区高清| 欧美日韩精品一区视频| 欧美亚洲一区二区在线| 欧美www在线| 亚洲一区二区三区影院| 国产一区二区欧美| 欧美日韩成人在线播放| 亚洲欧美日韩一区在线观看| 欧美成人一区二区在线| 亚洲一区二区三区精品在线观看| 国产日韩精品在线播放| 欧美大片一区二区| 午夜激情一区| 亚洲精品一区二区三区四区高清| 欧美一区二区私人影院日本 | 亚洲欧洲日韩在线| 欧美日韩在线不卡| 午夜伦理片一区| 亚洲黄色有码视频| 久久久天天操| 亚洲在线成人| 亚洲精品精选| 狠狠色丁香久久婷婷综合丁香| 欧美精品v日韩精品v国产精品 | 香蕉av777xxx色综合一区| 在线观看日韩| 国产伦精品一区二区三区视频孕妇| 老司机凹凸av亚洲导航| 亚洲天堂av电影| 亚洲第一伊人| 老牛影视一区二区三区| 欧美一级片在线播放| 99在线热播精品免费| 在线免费日韩片| 国产欧美日韩免费| 欧美午夜视频一区二区| 欧美国产日韩视频| 麻豆精品视频在线观看视频| 性欧美激情精品| 亚洲在线免费| 亚洲天堂成人在线视频| 亚洲精品一区二区在线| 亚洲国产成人精品久久久国产成人一区| 欧美在线三级| 欧美一区二区三区四区在线 | 一本色道久久88综合日韩精品| 亚洲国产国产亚洲一二三| 激情久久五月天| 国产一区二区三区四区在线观看| 国产精品日日摸夜夜摸av| 国产精品高清在线观看| 国产精品久久久91| 国产精品色午夜在线观看| 国产精品久久9| 国产精品视频不卡| 国产区欧美区日韩区| 国产麻豆成人精品| 国产一区二区av| 狠狠色伊人亚洲综合成人| 狠狠色噜噜狠狠狠狠色吗综合| 一区二区在线视频播放| 亚洲国产精品精华液2区45| 亚洲精品一区二区网址| 日韩视频三区| 亚洲在线一区| 久久久亚洲综合| 欧美国产三级| 一区二区久久| 欧美在线电影| 女人香蕉久久**毛片精品| 欧美美女操人视频| 国产精品久久久久一区| 国产一区自拍视频| 最新国产乱人伦偷精品免费网站| 亚洲精品视频免费观看| 亚洲小少妇裸体bbw| 久久九九99视频| 欧美高清一区| 一区二区三区欧美| 久久国内精品视频| 欧美激情视频一区二区三区不卡| 欧美日韩国语| 黄色成人免费网站| 99国产精品国产精品久久| 午夜免费日韩视频| 欧美成人免费一级人片100| 亚洲精品欧美极品| 欧美一级片久久久久久久| 你懂的国产精品永久在线| 国产精品久久久久久久一区探花| 精品999在线观看| 亚洲欧美国产另类| 美日韩丰满少妇在线观看| 99国产一区| 久久综合网络一区二区| 国产精品色婷婷| 一二美女精品欧洲| 欧美.日韩.国产.一区.二区| 亚洲视频精选在线| 欧美成人国产| 一区二区三区在线高清| 亚洲女人小视频在线观看| 亚洲美女中文字幕| 亚洲欧美在线观看| 亚洲国产精品ⅴa在线观看| 午夜精品理论片| 国产精品99免视看9| 亚洲国产精品专区久久| 久久久最新网址| 一区二区av|