注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

BCB-DG's Blog

...

 
 
 

日志

 
 

TCP的P2P打洞方法  

2011-09-21 14:39:12|  分类: Socket |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
  因為工作需要,特別進行了TCP的P2P打洞驗證,但經過幾天的測試,發現網上介紹最多的那篇TCP打洞文章並不完全正確,感覺和UDP的打洞相比就只有2點差異。
  NAT限制:必須是非對稱型,UDP打洞可以是一方非對稱型,另一方可以是對稱型,這樣非對稱型方可以成功,但另一方卻不行。而對於TCP打洞而言,必須是雙方都是非對稱型NAT。當然,非對稱型NAT也是有差異的,有些會檢測SYN的來源IP和端口,有些只檢測來源IP。只檢測來源IP的NAT很容易打洞成功,檢測來源IP和端口的NAT就是和UDP處理最大的不同了。UDP打洞,NAT一般只檢測來源IP,而忽略端口,TCP則要做點處理才行(當然這點也有可能是NAT的差異造成的)。
  打洞流程:打洞服務S監聽某一端口,NAT1後的A,NAT2後的B。A和B首先連接S,通過S獲取對方的IP和端口,然後互相連接。主流程和UDP是一模一樣,但是,A和B在連接成功後要獲取自己的本地端口,在互相連接時同時要綁定到該端口上,否則必定失敗。連接成功後就成了TCP客戶端連接TCP客戶端了,不是普通的客戶端連接服務端,也不像其它文章說的要監聽本地端口,這個完全是多余的。
  评论这张
 
阅读(3090)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017