



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 基于TCP隧道技术的研究 摘要:本文从应用的角度出发,介绍了TCP穿越NAT,使不同局域网内的端点进行直连式通信。在远程会议项目应用中大大改观了传统模式的实时流媒体数据因从服务器中转而造成延时、丢帧等现象,使单位服务器为更多的端点提供服务,也使服务质量有了明显的提高。关键词:TCP隧道NATP2P一、引言随着Internet的迅速发展以及IPv4 地址数量的限制使得网络地址翻译(NAT, Network Address Trans2lation)设备得到广泛应用。NAT设备允许处于同一NAT后的多台主机共享一个公网(本文将处于同一NAT后的网络称为私网,处于NAT前的网络称为公网) IP 地
2、址。一个私网IP 地址通过NAT设备与公网的其他主机通信。公网和私网IP地址域,如下图简单所示:一般来说都是由私网内主机(例如上图中“电脑A-01(192.168.0.2)”)主动发起连接,并将数据包经过NAT地址转换后送给公网(外网)上的服务器(例如上图中的“Server”),连接建立以后就可以进行双向数据传送了。而NAT设备允许私网(内网)内主机主动向公网内主机发送数据,但却禁止反方向的主动传递,此时的数据将会被NAT认为是非法数据而被抛弃,从而通信不能正常进行。但在一些特殊的场合又非常需要不同私网内的主机进行互联(例如P2P软件、网络视频会议、视频传输等等),那么TCP穿越NAT的问题必
3、须解决。二、NAT的类型NAT(Network Address Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT分为两大类,基本的NAT和NAPT(Network Address/Port Translator)。NAT设备的类型对于TCP穿越NAT,有着十分重要的影响,根据端口映射方式,NAT可分为如下4类,前3种NAT类型可统称为cone类型。1、全克隆(Full Cone): NAT把所有来自相同内部IP地址和端口的请求映射到相同的外部IP地址和端口。任何一个外部主机均可通过该映射发送IP包到该内部主机。2、
4、限制性克隆(Restricted Cone): NAT把所有来自相同内部IP地址和端口的请求映射到相同的外部IP地址和端口。但是,只有当内部主机先给IP地址为X的外部主机发送IP包,该外部主机才能向该内部主机发送IP包。3、端口限制性克隆(Port Restricted Cone): 端口限制性克隆与限制性克隆类似,只是多了端口号的限制,即只有内部主机先向IP地址为X,端口号为P的外部主机发送1个IP包,该外部主机才能够把源端口号为P的IP包发送给该内部主机。4、对称式NAT(Symmetric NAT):这种类型的NAT与上述3种类型的不同,在于当同一内部主机使用相同的端口与不同地址的外部主
5、机进行通信时,NAT对该内部主机的映射会有所不同。对称式NAT不保证所有会话中的私有地址和公开IP之间绑定的一致性。相反,它为每个新的会话分配一个新的端口号。三、TCP隧道技术TCP隧道(NAT端口映射)通俗的名字为网络打洞,主要解决不同局域网的端点之间的直连式通信,也就是比较流行的P2P通信,此技术的应用能使中心服务器的载荷大大减轻,从而使原有的服务器能够为更多的端点提供服务。我们先假设一下:有一个服务器(S)在公网上有一个IP,两个私网分别由NAT-A和NAT-B连接到公网,NAT-A后面有一台客户端A,NAT-B后面有一台客户端B,现在,我们需要借助S将A和B建立直接的TCP连接,即由B
6、向A打一个洞,让A可以沿这个洞直接连接到B主机,就好像NAT-B不存在一样。流程实现如下:1、S启动两个网络侦听,一个叫【主连接】侦听,一个叫【协助打洞】的侦听。2、A和B分别与S的【主连接】保持联系。3、当A需要和B建立直接的TCP连接时,首先连接S的【协助打洞】端口,并发送协助连接申请。同时在该端口号上启动侦听。注意由于要在相同的网络终端上绑定到不同的套接字上,所以必须为这些套接字设置 SO_REUSEADDR属性(允许重用),否则侦听会失败。4、S的【协助打洞】连接收到A的申请后通过【主连接】通知B,并将A经过NAT-A转换后的公网IP地址和端口等信息告诉B。5、B收到S的连接通知后首先
7、与S的【协助打洞】端口连接,随便发送一些数据后立即断开,这样做的目的是让S能知道B经过NAT-B转换后的公网IP和端口号。6、B尝试与A的经过NAT-A转换后的公网IP地址和端口进行connect,根据不同的路由器会有不同的结果,有些路由器在这个操作就能建立连接(例如我用的TPLink R402),大多数路由器对于不请自到的SYN请求包直接丢弃而导致connect失败,但NAT-A会纪录此次连接的源地址和端口号,为接下来真正的连接做好了准备,这就是所谓的打洞,即B向A打了一个洞,下次A就能直接连接到B刚才使用的端口号了。7、客户端B打洞的同时在相同的端口上启动侦听。B在一切准备就绪以后通过与S
8、的【主连接】回复消息“我已经准备好”,S在收到以后将B经过NAT-B转换后的公网IP和端口号告诉给A。8、A收到S回复的B的公网IP和端口号等信息以后,开始连接到B公网IP和端口号,由于在步骤6中B曾经尝试连接过A的公网IP地址和端口,NAT-A纪录了此次连接的信息,所以当A主动连接B时,NAT-B会认为是合法的SYN数据,并允许通过,从而直接的TCP连接建立起来了。四、用C语言编写P2P直连,参考源码如下BOOL Handle_SrvReqDirectConnect(t_SrvReqDirectConnectPkt *pSrvReqDirectConnectPkt)CSocket Sock;
9、if(!Sock.Socket()return FALSE;UINT nOptValue = 1;if(!Sock.SetSockOpt(SO_REUSEADDR,&nOptValue ,sizeof(UINT)return FALSE;if(!Sock.Bind(g_nHolePort)return FALSE;for(int ii=0; iiszInvitedIP, pSrvReqDirectConnectPkt-nInvitedPort) Sleep (100);else break;if(WaitForSingleObject(g_hEvt_ConnectOK,0) != WAIT_O
10、BJECT_0)if(HANDLE_IS_VALID(g_hEvt_ConnectOK)SetEvent (g_hEvt_ConnectOK);char szRecvBufferNET_BUFFER_SIZE =0;int nRecvBytes =0;for(int i=0;i0)memset(szRecvBuffer,0,sizeof(szRecvBuffer);SLEEP_BREAK(1);elseSLEEP_BREAK ( 300 );return TRUE;此段代码功能描述:服务器要求主动端(客户端A)直接连接被动端(客户端B)的外部IP和端口号。五、结论以上是TCP隧道的实现方法,能够提供不同局域网的端点之间进行直连式通信。使外网数据能够避开路由器的阻栏,顺利的到达内网的目的主机,从而使不同内网的端点通信变成现实。TCP隧道技术的应用从经济角度看能够大大节省服务器投入成本,充分利用现有的网络资源更好的服务于用户。Reference:1向隅.计算机网络基础及应用M.西安电子科技大学出版社
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年上海市户外广告发布合同范本
- 2025年度2月医疗影像云存储系统集成分包合同
- 书虫英语测试题及答案
- 新技术时代的专利申请特点分析试题及答案
- 善用文化产业管理证书考试试题及答案的辅助
- 处理母猪疾病的护理考查试题及答案
- 心理咨询师的案例分析能力提升试题及答案
- 2024年护士资格证考试心理健康护理知识试题及答案
- 2024年文化产业管理的综合分析试题及答案
- 教师资格笔试的复习技巧及试题与答案
- 2025届湖北省武汉市高考数学一模试卷含解析
- 人教统编版高中语文必修下册第一单元(单元总结)
- GB∕T 26255-2022 燃气用聚乙烯(PE)管道系统的钢塑转换管件
- 煤矿新工人培训教案全新
- 人防工程施工常见质量问题及质量通病案例
- 景区防火应急预案
- 压疮的预防措施及护理
- lNG-CNG加气站土建施工组织设计
- 诊断试验和筛检试验的评价
- (修正版)压实度自动计算表
- 气柜施工方案
评论
0/150
提交评论