ImageVerifierCode 换一换
格式:DOC , 页数:24 ,大小:503KB ,
资源ID:1271702      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-1271702.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于网络的虚拟实验平台—VLP2P通信库的设计与实现——毕业论文.doc)为本站会员(滴答)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

基于网络的虚拟实验平台—VLP2P通信库的设计与实现——毕业论文.doc

1、 基于网络的虚拟实验平台 VLP2P 通信库的设计与实现 摘 要 随着信 息技术的发展,网络无疑为我们带了更多的便利,因此一个好的系统 要具有网络功能 。针对虚拟实验台系统的实际功能,采用 P2P 技术作为其网络通讯基础具有很大的优势:降低服务器资源占用,提高通讯传输效率。但由于 NAT 的广泛使用,使得不同的内网间系统通讯 比较困难。希望 P2P 通讯 具有实用价值 ,穿透 NAT 实现不同内网间的系统通讯是一个需要解决的重要问题 。 在基于网络的 虚拟实验平台 中,有很多功能涉及到网络通讯,为了提高系统的模块化程度,减少系统重复开发量, 将 网络通信部分 独立出来 , 设计实现名为 VLP

2、2P 的 P2P 通讯库 。 设计中,也设计了通讯库的测试程序。经实际测试,基本达到预期设计目标。 关键词 :虚拟实验平台 ; P2P 技术 ; UDP; 穿透 NAT; Scoket 编程 Network-based Virtual Experimental Platform Design and Implementation of VLP2P Communication Library Abstract With the development of information technology, networks will provide us with more convenience

3、 undoubtedly. Therefore, a good system must have network functions. According to real functions of the virtual experiment platform, P2P technology has powerful benefits to decrease probability of using server resources and upgrade the transmission efficiency, as a base of networking communication. W

4、hile, because of the existence of NAT issues, it is difficult to communicate among different local networks. To make P2P communication get values in real application, an important problem required to solve is the system communication among different networks by penetrating NAT. There are many functi

5、ons related to network communication in the virtual experiment platform based on network. For improve modularization of the system and decrease repetitive developing work, the network communication is extracted as an independent part to design and implement P2P communication library named VLP2P. In

6、the thesis, the testing program for communication library is also designed. With real testament, it has proven that the communication library has achieved the initial purpose. Key words: Virtual Experiment Platform; P2P Technology; UDP; Penetrating NAT; Socket programming目录 论文总页数: 20 页 1 引言 . 1 1.1.

7、 项目背景 . 1 1.2. 项目介绍 . 1 1.2.1 虚拟实验平台 . 1 1.2.2 平台网络通信 . 1 1.3. 项目要求 . 1 1.3.1 功能要求 . 1 1.3.2 B/S 与 C/S . 2 1.3.3 通信协议的选择 . 2 1.4. 项目难点及解决方法 . 2 1.4.1 IP 处理问题 . 2 1.4.2 Client 之间的通信问题 . 2 2. 网络基础知识介绍 . 2 2.1. SOCKET 编程 . 2 2.2. P2P 网络简介 (INTRODUCTION) . 3 3. 项目网络通信的实现过程 . 4 3.1. NAT 的一些基本概念 . 4 3.2.

8、通信过程 . 4 3.3. 通信过程总结 . 7 4. 实现代码 及其效果简介 . 8 4.1. 程序主要功能介绍 . 8 4.2. 主要代码介绍 . 8 4.3.1 服务器监听过程主要代码 . 8 4.3.2 客户端连接过程主要代码 . 8 4.3.3 下载实验文本(客户端主要代码) . 9 4.3.4 下载实验文本(服务器端主要代码) . 9 4.3.5 P2P 下载实验文本(客户端主要代码) . 10 4.3.6 客户端 P2P 下载实验文本(服务器端主要代码) .11 4.3. 效果演示 . 12 4.3.1 开启服务及客户端登陆 . 12 4.3.2 通过服务器下载实验文本 . 13

9、 4.3.3 退出连接 . 14 结 论 . 14 参考文献 . 14 附 录 . 16 致 谢 . 19 声 明 . 20 第 1 页 共 20 页 1 引言 Internet 进行访问。 NAT 技术可以为 TCP、 UDP 以及 ICMP 的部分信息进行透明中继。 NAT 技术具体实现方法是通过 IP 地址映射来实现 IP 地址的复用。NAT 网关充当了路由器的角色 ,所有外出的网络包都必须路由到 NAT 网关;同样 ,所有由外网发往内网的网络包也必须经过 NAT 网关。 NAT 网关通过一定的规则 ,将由内部网向外部网发送的数据包中的源地址映射为一个 Internet 合法地址 ,而将

10、由外向内的数据包中的目的地址替换成相应的内网 IP 地址。 NAT 网关有内网接口和外网接口 ,其中外网接口和 Internet 相连 ,必须拥有合法 IP 地址 ,内网接口则和内网相连 ,可以分配任意指定的一个内网 IP 地址 ,一般情况下 ,这个 IP地址就是内部主机的默认网关。 1.1. 项目背景 随着信息技术的发展,网络无疑为我们带了更多的便利,因此一个好的系统必须要具有网络 功能,这个功能不仅局域网,那就存在一个穿透 NAT 的问题,伴随着 P2P 技术的出现, 利用 UDP 实现 P2P 网络穿越 NAT 的即时通讯技术, 我们不在为此而烦恼。 1.2. 项目介绍 1.2.1 虚拟

11、实验平台 虚拟实验平台是通过软件编程仿真各种电子器件,可以做各种电路实验及设计性实验、 基本电路实验、 直流电路、 交流电路、 动态电路、 这些功能模块成为虚拟平台与实验者之间的桥梁, 共同构成网上虚拟实验室系统,起到帮助学生完成实验任务。 1.2.2 平台网络通信 实现虚拟实验平台具有网络基本功能,实现虚拟实验平台具有网络基本功能,客户机和主机,客户机和 客户机之间的即时通讯、文件的传输。由于采用了最新的 P2P 穿透 NAT 的技术,因此可以实现冲破局域网的限制,实现真正的异地连接,同学可以在家里利用一台普通的能够上网的 PC,就能把老师布置的实验作业完成,并且,老师可以通过服务器端,了解

12、进度情况,并且可以适时的指导其实验。 1.3. 项目要求 1.3.1 功能要求 实现虚拟实验平台具有网络基本功能,客户机和主机,客户机和客户机之间的即时通讯、文件的传输。 第 2 页 共 20 页 1.3.2 B/S 与 C/S 目前的软件系统体系结构一般分为两种形式,一种为大家所熟识的 C/S 结构,另一种为 B/S 结构。 C/S 结构,即 Client/Server(客户端 /服务器 )结构,通过将任务合理分配到 Client 端和 Server 端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。 B/S 结构,即 Browse /Server(浏览器 /服务器 )结构,就是只安

13、装维护一个服务器,而客户端采用浏览器运行软件,进行浏览、访问、操作数据。最初的管理信息系统基本上是采用 C/S 模式开发的,但随着 WWW 的广泛应用,目前的管理信息系统已经逐渐开始从 C/S 模式向浏览器 /服务器B/S 模式转变。 B/S 结构的软件所有的维护、升级工作都只在服务器上 进行,而客户端能立刻获得最新版本的软件。 1.3.3 通信协议的选择 主机与客户机之间采用 TCP 协议,保证其可靠性。 客户机之间采用 UDP 非连接,不可靠的通讯协议,相对于 tcp 来说,虽然可靠性不及,但传输效率较高 。对于即时通信的系统,选择 UDP,就是要保证较高的传输效率。 1.4. 项目难点及

14、解决方法 1.4.1 IP 处理问题 由于涉及到各种局域网,因此需要处理各种私有 IP 的访问问题。 解决方法:采用 NAT 技术实现私有地址转换成公共有效的地址。 1.4.2 Client 之间的通信问题 解决方法 :利用服务器的打洞原理 (后详 ) 2. 网络基础知识介绍 2.1. SOCKET 编程 什么是 socket?它是使用 标准 Unix 文件描述符 (file descriptor) 和其它程序通讯的方式。 Unix 程序在执行任何形式的 I/O 的时候,程序是在读或者写一个文件描述符。一个文件描述符只是一个和打开的文件相关联的整数。但是 (注意后面的话 ),这个文件可能是一个

15、网络连接, FIFO,管道,终端,磁盘上的文件或者什么其它的东西。 Unix 中所有的东西就是文件!所以,你想和Internet 上别的程序通讯的时候,你将要使用到文件描述符。你必须理解刚才的话。现在你脑海中或许冒出这样 的念头:“那么我从哪里得到网络通讯的文件描述符呢?”,这个问题无论如何我都要回答:你利用系统调用 socket(),它第 3 页 共 20 页 返回套接字描述符 (socket descriptor),然后你再通过它来进行 send() 和 recv()调用。“但是 .”,你可能有很大的疑惑,“如果它是个文件描述符,那么为什 么不用一般调用 read()和 write()来进

16、行套接字通讯?”。答案是:“你可以,但是使用 send()和 recv()让你更好的控制数据传输。”存在这样一个情况:在我们的世界上,有很多种套接字。有 DARPA Internet 地址 (Internet 套接字 ),本地节点的路径名 (Unix 套接字 ), CCITT X.25 地址 (你可以将 X.25 套接字完全忽略 )。也许在你的 Unix 机器上还有其它的。 2.2. P2P 网络简介 (introduction) P2P技术源于局域网共享,其目标是改变人们通过服务器中转交换文件的传统方式,达到自由交换资源的目的。 IBM为 P2P下了如下定义:系统由若干互联协作的计算机构成,

17、且至少具 有如下特征之一:系统依存于边缘化(非中央式服务器)设备的主动协作,每个成员直接从其他成员而不是从服务器的参 与中受益;系统中成员同时扮演服务器与客户端的角色;系统应用的用户能够意识到彼此的存在,构成一个虚拟或实际的群体。 P2P网络是互联网整体架构的基础,互联网最基本的 TCP/IP协议并没有客户端和服务器的概念,在通讯过程中,所有的设备都是平等的一端。 P2P 技术改变了 “ 内容 ” 所在的位置,使其正在从 “ 中心 ”走向 “ 边缘 ” ,也就是说不再如 CS模式将内容存于主要的服务器上,而是存在所有用户的 PC 机上。广义的 P2P 网络将 P2P网络划分为纯分散式 P2P网

18、络 (如gnutella模型 )、超级结点式网络和混合式 P2P网络等大类。 本文所讨论的通讯技术属于混合式 P2P网络,各节点之间可以直接建立连接,但网络的构建需要服务器,通过集中认证,建立索引机制。但是这里的服务器仅用于辅助对等节点之间建立连接,对等节点之间直接进行通信,这不同于 C/S 模式中的服务器。如图 1 p2p网络传输模型 所示: 第 4 页 共 20 页 图 1 p2p 网络传输模型 3. 项目网络通信的实现过程 3.1. NAT 的一些基本概念 NAT(Network Address Translators),网络地址转换:网络地址转换是在IP 地址日益缺乏的情况下产生的,它

19、的主要目的就是为了能够 地址重用。 NAT分为两大类,基本的 NAT 和 NAPT(Network Address/Port Translator)。最开始 NAT 是运行在路由器上的一个功能模块。 最先提出的是基本的 NAT,它的产生基于如下事实:一个私有网络(域)中的节点中只有很少的节点需要与外网连接。那么这个子网中其实只有少数的节点需要全球唯一的 IP 地址,其他的节点的 IP 地址应该是可以重用的。 因此,基本的 NAT 实现的功能很简单,在子网内使用一个保留的 IP 子网段,这些 IP 对外是不可见的。子网内只有少数一些 IP 地址可以对应到真正全球唯一的 IP 地址。如果这些节点需

20、要访问外部网络,那么基本 NAT 就负责将这个节点的子网内 IP 转化为一个全球唯一的 IP然后发送出去。(关于基本的 NAT 可以参看 RFC 1631) 3.2. 通信过程 另外一种 NAT 叫做 NAPT,从名称上我们也可以看得出, NAPT 不但会改变经过这个 NAT 设备的 IP 数据报的 IP 地址,还会改变 IP 数据报的 TCP/UDP 端口。基本 NAT 的设备可能我们见的不多, NAPT 才是我们真正讨论的主角。 见 图 2 NAPT端口映射 : 第 5 页 共 20 页 图 2 NAPT 端口映射 有一 个私有网络 10.*.*.*, Client A 是其中的一台计算机

21、,这个网络的网关(一个 NAT 设备)的外网 IP 是 155.99.25.11(应该还有一个内网的 IP 地址,比如 10.0.0.10)。如果 Client A 中的某个进程(这个进程创建了一个 UDP Socket,这个 Socket 绑定 1234 端口)想访问外网主机 18.181.0.31 的 1235 端口,那么当数据包通过 NAT 时会发生什么事情呢? 首先 NAT 会改变这个数据包的原 IP地址,改为 155.99.25.11。接着 NAT会为这个传输创建一个 Session( Session 是一个抽象的概念,如果是 TCP,也许 Session 是由一个 SYN 包开始,

22、以一个 FIN 包结束。而 UDP 呢,以这个 IP 的这个端口的第一个 UDP 开始,结束呢,呵呵,也许是几分钟,也许是几小时,这要看具体的实现了)并且给这个 Session 分配一个端口,比如 62000,然后改 变 这 个 数 据 包 的 源 端 口 为 62000 。 所 以 本 来 是( 10.0.0.1:1234-18.181.0.31:1235 )的数据包到了互联网上变为了( 155.99.25.11:62000-18.181.0.31:1235)。 一旦 NAT创建了 一个 Session后, NAT会记住 62000端口对应的是 10.0.0.1的 1234 端口,以后从 1

23、8.181.0.31 发送到 62000 端口的数据会被 NAT 自动的转发到 10.0.0.1 上。(注意:这里是说 18.181.0.31 发送到 62000 端口的数据会被转发,其他的 IP 发送到这个端口的数据将被 NAT 抛弃)这样 Client A 就与Server S1 建立以了一个连接。 呵呵,上面的基础知识可能很多人都知道了,那么下面是关键的部分了。看看下面的情况 , 见图 3 NAPT 转发过程 : Server S1 18.181.0.31:1235 | Session 1 (A-S1) | | 18.181.0.31:1235 | | v 155.99.25.11:62

24、000 v | | NAT 155.99.25.11 | Session 1 (A-S1) | | 18.181.0.31:1235 | | v 10.0.0.1:1234 v | | Client A 10.0.0.1:1234 第 6 页 共 20 页 图 3 NAPT 转发过程 接上面的例子,如果 Client A 的原来那个 Socket(绑定了 1234 端口的那个 UDP Socket)又接着向另外一个 Server S2 发送了一个 UDP 包,那么这个 UDP包在通过 NAT 时会怎么样呢? 这时可能会有两种情况发生,一种是 NAT 再次创建一个 Session,并且再次为这个

25、 Session 分配一个端口号(比如: 62001)。另外一种是 NAT 再次创建一个 Session,但是不会新分配一个端口号,而是用原来分配的端口号 62000。前一种 NAT 叫做 Symmetric NAT,后一种叫做 Cone NAT。我们期望我们的 NAT是第二种,呵呵,如果你的 NAT 刚好是第一种,那么很可能会有很多 P2P 软件失灵。(可以庆幸的是,现在绝大多数的 NAT 属于后者,即 Cone NAT) 好了,我们看到,通过 NAT,子网内的计算机向外连结是很容易的( NAT 相当于透明的,子网内的和外网的计算机不用知道 NAT 的情况)。 但是如果外部的计算机想访问子网

26、内的计算机就比较困难了(而这正是 P2P所需要的)。 那么我们如果想从外部发送一个数据报给内网的计算机有什么办法呢?首先,我们必须在内网的 NAT 上打 上一个“洞”(也就是前面我们说的在 NAT 上建立一个 Session),这个洞不能由外部来打,只能由内网内的主机来打。而且这个洞是有方向的,比如从内部某台主机(比如: 192.168.0.10)向外部的Server S1 Server S2 18.181.0.31:1235 138.76.29.7:1235 | | | | +-+-+ | Session 1 (A-S1) | Session 2 (A-S2) | 18.181.0.31:1235 | | | 138.76.29.7:1235 | v 155.99.25.11:62000 v | v 155.99.25.11:62000 v | Cone NAT 155.99.25.11 | Session 1 (A-S1) | Session 2 (A-S2) | 18.181.0.31:1235 | | | 138.76.29.7:1235 | v 10.0.0.1:1234 v | v 10.0.0.1:1234 v | Client A 10.0.0.1:1234

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。