2.本课题的基本内容,可能遇到的困难,提出解决问题的方法和措施
尽管IPv6比IPv4具有明显的先进性,但是要想在短时间内将Internet和各个企业网络中的所有系统全部从 IPv4升级到IPv6是不可能的。IPv6与IPv4系统在Internet中长期共存是不可避免的现实。因此,实现由IPv4向IPv6的平稳过渡是导入IPv6的基本前提。确保过渡期间IPv4网络与IPv6网络互通是至关重要的。
目前解决过渡问题基本技术主要有三种:双协议栈 ( Dual Stack)。采用该技术的节点上同时运行IPv4和IPv6两套协议栈,这是使IPv6节点保持与纯IPv4节点兼容最直接的方式;隧道技术 ( Tunnel)。隧道技术提供了一种以现有IPv4路由体系来传递IPv6数据的方法:将IPv6的分组作为无结构意义的数据,封装在IPv4数据报中,被IPv4网络传输;NAT-PT。转换网关除了要进行IPv4地址和IPv6地址转换,还要包括协议并翻译。转换网关作为通信的中间设备,可在IPv4和IPv6网络之间转换IP报头的地址,同时根据协议不同对分组做相应的语义翻译,从而使纯IPv4和纯IPv6站点之间能够透明通信。
隧道技术适用于在不能使用IPv6链路的情况下;协议转换适用于纯IPv6和纯IPv4主机之间的通信;双栈适用于IPv6/IPv4主机和纯IPv6或者纯IPv4 的主机通信。鉴于目前IPv4与IPv6并存的现状且双栈简单直接的特点,本设计采用双协议栈技术。拥有双重协议栈的主机的一个基本特性就是:其上运行的IPV6服务器既能应付IPV4客户,又能应付IPV6客户,这是通过使用IPV4映射的IPV6地址实现的。如上图所示,当IPV6客户向服务器发送数据包时,不需额外转换,服务器即可顺利接受与回应;当IPV4客户向服务器发起连接时,发送的仍是IPV4数据报,但服务器的协议栈会把客户方的地址转换成一个IPV4映射的IPV6地址,因为IPV6服务器处理的是IPV6套接口地址结构。
本程序是在Socket套接口上实现的,Socket接口是TCP/IP网络的API,定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。Socket数据传输是一种特殊的I/O,也是一种文件描述符,具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式Socket和数据报式Socket。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。Socket利用网间通信设施实现进程通信,但对通信设施的细节毫不关心,如右图所示。
FTP是面向连接的TCP服务应用,分为服务器与客户端。服务器首先调用socket函数创建一个Socket,然后调用bind函数将其与本机地址以及一个本地端口号绑定,然后调用listen在相应的socket上监听,当accpet接收到一个连接服务请求时,将生成一个新的socket,用于请求应答,结束后关闭该socket。 客户端程序创建一个socket,调用connect函数与服务器建立连接,连接成功之后与服务器进行数据的请求与应答,最后关闭socket。FTP使用两个TCP连接,一个TCP连接用于控制信息(控制连接),一个TCP连接用于实际的数据传输(数据连接)。
本次毕业设计总体来说会遇到不少困难,譬如FTP提供两种登陆方式:匿名与非匿名,在实现时还需考虑到用户权限,网络安全等问题。目前所掌握的都是一些基础的网络理论知识,在涉及编程方面尚有不足,最大的难题在于对Java网络编程接口的认识上。
在Java中,有专门的Socket类来处理用户的请求和响应。利用Socket类的方法,就可以实现两台计算机之间的通讯。在Java中Socket可以理解为客户端或者服务器端的一个特殊的对象,这个对象有两个关键的方法,一个是getInputStream方法,另一个是getOutputStream方法。getInputStream方法可以得到一个输入流,客户端的Socket对象上的getInputStream方法得到的输入流其实就是从服务器端发回的数据流。GetOutputStream方法得到一个输出流,客户端Socket对象上的getOutputStream方法返回的输出流就是将要发送到服务器端的数据流,(其实是一个缓冲区,暂时存储将要发送过去的数据)。
FTP 的主要操作都是基于各种命令基础之上的。常用的命令有:
设置传输模式,它包括ASCⅡ(文本) 和BINARY 二进制模式;
目录操作,改变或显示远程计算机的当前目录(cd、dir/ls 命令);
连接操作,open命令用于建立同远程计算机的连接;close命令用于关闭连接;
发送操作,put命令用于传送文件到远程计算机;mput 命令用于传送多个文件到远程计算机;
获取操作,get命令用于接收一个文件;mget命令用于接收多个文件。
根据FTP 的工作原理,在主函数中建立一个服务器套接字端口,等待客户端请求,一旦客户端请求被接受,服务器程序就建立一个服务器分线程,处理客户端的命令。如果客户端需要和服务器端进行文件的传输,则建立一个新的套接字连接来完成文件的操作。客户端则是在用户建一个任务时,就开一个线程。
本设计须建立在对IPv6及FTP协议的认识基础之上,因此需要花费一定的时间精力去学习相关知识,当然对于Java编程环境及Java语言的熟知程度同样重要。
|