- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
TCPIP路由穿透的方案的设计
TCPIP路由穿透的方案的设计
摘要:分析Sever/Client方式在实际应用中的重要的作用,使其在p2p发展迅速的网络应用中依然有一席之地;通过服务器以多线程管理客户端通信的方式稳定,高效,并且提供了单一或者多方备份与加密的可行性方案;Sever/Client穿透防火墙,路由的方式适用面广,信息传递准确性高,提高了连接效率和安全性.
关键词:Sever/Client;P2P;TCP;UDP;穿透;多线程
前言
随着P2P与NAT技术的日益发展与成熟,P2P网络在应用领域获得了巨大的成功,然而传统的Sever/Client的互联方式依然有着重要的实际应用作用?D?D企业的远程财务管理,企业的可调控视频会议,学校课程预约,手机短信息定向发送等等方面的工作从应用角度考虑更合适Sever/Client方式互联.
Sever/Client网络应用程序的设计都需要考虑路由穿透的问题,而基于UDP,TCP两种通讯都可以完成穿透工作,本文重点讨论TCP/IP穿透路由的技术方案.
一.概述
对于目标用户来说,管理服务总是可见的,它有一个固定的公网IP,目标用户可以通过
手动”登陆”或者后台工作等方式主动访问管理服务器,建立一个TCP/IP连接.利用这种方式目标用户可以在自己的终端 ― 计算机,手机等等客户端绕过防火墙,穿过路由器与管理服务器建立一条稳定可靠的”通道”,只至有一方动取消连接为止.
利用这些”通道”,管理服务器可以记录并管理这些目标用户的网络地址,并把即时消息,服务器指令,目标用户之间的通讯消息,目标用户的网络地址发给所有或者指定的目标用户,从而实现目标用户与管理服务器之这间的防火墙,路由穿透,目标用户之间的防火墙,路由目标穿透,达到无障碍阻通讯的目的.
二.目标用户客户端的设计
目标用户客户端的设计总方向为简化数据管理,加强数据处理,丰富人机交互.
C++,VC++中已经封装好的套接字CAsyncSocket, CSOCKET对于网络通讯编程来说,使用简单,然而效率和控制却不及原始套接字SOCKET.下面就以SOCKET为例说明客户端的设计方案。
对于套接字的阻塞通信方式,客户端可以启动一个线程来完成对服务器端口的监听接收和发送工作,在VC++中可以封装为一个网络收发线程类来使用,这样做可以保证网络数据的安全与正确,同时还兼顾到数据的实时性,方便扩展。
网络线程类主要工作分为四个部分:
1. 将各模块对服务器请求指令打包处理
主要将请求内容封装为网络数据,即在TCP/IP数据包的基础上对数据进行二次封装,便于程序处理。分为包头,包内容,包结束。包头一般包括长度,日期,类型等内容;包内容则是请求数据;包结束通常包含数据包的结束标志,或者数据是否分包发送,此为第几包等等内容。
2. 发送对服务器的请求
将封装好的数据包根据类型,调用不同函数发送至服务器――根据程序内容也可以
调用同一函数发送。
3. 监听接收服务器数据
采用阻塞式通信套接字,线程监听与服务器通信的端口,实时接收数据内容。
4. 将接收到服务器的数据分类发送至处理模块
根据数据包的类型,将数据包内容分门别类,取出数据包内容后通过消息机制发送给不同的数据处理模块进行工作。
目标用户客户端之间通讯时可以采用服务转发与直接通讯两种方式,前者更加方便实现管理记录功能但加重了管理服务器的工作负担;后者效率更高却比较难以管理记录,各有长短,设计者可以根据具体情况进行设计.
在目标客户端之间进行直接连接时,可以使用UDP连接,然而由于网关会动态改变UDP的端口映射,即使采用心跳数据包的方式也并不稳定,所以这种方案并不理想.
使用TCP连接由管理服务器中转发双方的IP地址,采用管理服务器伪造数据报,实现目标用户双手三次握手并连接的等方法.
三.管理服务器的设计
管理服务器的设计设计思路为采用多线程点对点方式强化数据管理。具体思路为创建一个管理线程,此线程的主要工作如下:
1. 监听与客户端的通讯端口
创建一个线程,在指定的通讯端口上监听连接,判断连接是否是的目标客户端进行连接,就可以得到一个针对此目标客户端的套接字,并分配与之对应的ID。
2. 创建通讯子线程
管理线程创建一个面向该用户的阻塞式通讯子线程,并向这个子线程分配ID与相应的通讯套接字,这个子线程就可以负责起与用户进行发接与收接网络数据的工作,达到实时准确地与目标客户进行接收发送数据的目的.
3. 实时管理通讯子线程组
利用分配ID的方式进行记录和管理,
您可能关注的文档
最近下载
- 普通高中音乐课程标准(2017年版2020年修订).docx
- T_JSFPSA -001-2022_全麦面包_标准.pdf VIP
- GB50702-2011砌体结构加固设计规范.docx VIP
- 《特高压电力管廊盾构隧道结构施工及运营期验收评估标准》.pdf VIP
- 15、推理综合 举一反三 2024—2025学年度 小学二年级奥数 教学课件PPT.pptx VIP
- 项目式学习在小学英语教学中的实践教学研究课题报告.docx
- matlab课件(西工大-孙蓬).pptx
- 香港上市(IPO)全流程介绍(最完整版).pdf VIP
- GBT50319-2013建设工程监理规范表格-全部[整理].doc VIP
- 09S302雨水斗选用及安装图集(清晰).pdf VIP
文档评论(0)