毕业设计(论文)-基于Socket的网络数据多机协作采集研究.doc

上传人:来看看 文档编号:3283472 上传时间:2019-08-08 格式:DOC 页数:61 大小:3.72MB
返回 下载 相关 举报
毕业设计(论文)-基于Socket的网络数据多机协作采集研究.doc_第1页
第1页 / 共61页
毕业设计(论文)-基于Socket的网络数据多机协作采集研究.doc_第2页
第2页 / 共61页
毕业设计(论文)-基于Socket的网络数据多机协作采集研究.doc_第3页
第3页 / 共61页
毕业设计(论文)-基于Socket的网络数据多机协作采集研究.doc_第4页
第4页 / 共61页
毕业设计(论文)-基于Socket的网络数据多机协作采集研究.doc_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《毕业设计(论文)-基于Socket的网络数据多机协作采集研究.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于Socket的网络数据多机协作采集研究.doc(61页珍藏版)》请在三一文库上搜索。

1、南华大学计算机科学与技术学院毕业设计基于Socket的网络数据多机协作采集研究计算机科学与技术学院摘 要 随着Internet的普及,全球性信息化浪潮在给我们带来便利的同时,网络信息安全问题也日益彰显。因此,一些企业、机关、科研机构为了防止数据的泄密,常常需要利用网络数据包的截获与还原技术来监视从本单位传出的数据。然而,在一个大型局域网中,对大量的网络数据进行采集和监控可能需要通过多机协作技术来实现。本文首先对TCP/IP协议进行了阐述,并分析了多机协作和数据包采集技术,然后以Java为工具,实现了基于Socket的网络数据多机协作采集的有关技术和核心算法。关键词:TCP/IP;Socket;

2、多机协作;网络数据采集AbstractAlong with the Internet popularization, the global informationization tide while brings the convenience to us, the network information security question also day by day clear reveals. Therefore, some enterprises, the institution, the scientific research institution in order to pre

3、vent the data divulging a secret, needs frequently monitors the data using the network data packet monitoring and the return to original state technology which spreads from this unit. However, in a large-scale local area network, carries on capture and the monitoring to the massive network data poss

4、ibly needs to realize through multi computer cooperation technology. This article first has carried on the elaboration to the TCP/IP protocol, and has analyzed multi computer cooperation and the data packet capture technology, then take Java as the tool, has realized based on the socket network data

5、 multi computer cooperation capture related technology and the core algorithm.Keywords: TCP/IP;Socket;Multi computer cooperation;Network data capture目 录引 言1第1章 绪论21.1 网络技术发展所带来的问题21.2 网络数据监控的意义21.3 设计概述3第2章 TCP/IP网络体系结构42.1 TCP/IP体系结构42.2 以太网原理52.2.1 IEEE802.3和Ethernet62.2.2 透明网桥62.3 IP及其相关协议72.3.1

6、IP协议72.3.2 ARP和RARP82.3.3 ICMP协议92.4 TCP和UDP协议92.4.1 UDP协议102.4.2 TCP协议102.5 常见应用层协议122.5.1 HTTP协议122.5.2 FTP协议132.5.3 SMTP协议14第3章 开发环境及核心工具163.1 Java语言简介及其优势163.1.1 面向对象163.1.2 平台无关性173.1.3 分布式183.1.4 可靠性和安全性183.1.5 多线程193.1.6 关于JDK的阐述193.2 Java Socket编程203.2.1 什么是Socket203.2.2 基于连接的流式Socket213.2.3

7、 无连接的数据报Socket233.3 Java多线程编程243.3.1 什么是线程243.3.2 线程的状态与生命周期243.3.3 Java实现多线程的方法263.4 Jpcap介绍263.4.1 Jpcap中的方法263.4.2 Jpcap工作原理273.4.3 Winpcap介绍283.4.4 Jpcap的安装29第4章 系统的设计思想304.1 多机协作机制304.1.1 什么是多机协作304.1.2 多机协作的通信机制314.1.3 时间片事件驱动314.1.4 数据包数目事件驱动334.1.5 数据包种类事件驱动344.2 数据采集机制344.2.1 数据采集的方式344.2.2

8、 数据采集的原理35第5章 系统的实现375.1 多机协作系统的实现375.1.1 多机协作系统的工作流程375.1.2 多机协作系统核心代码385.2 数据采集系统的实现435.2.1 数据采集系统的工作流程435.2.2 数据采集系统核心代码445.3 系统的使用方法515.3.1 Server端的使用方法515.3.2 Client端的使用方法53第6章 论文总结与进一步工作546.1 论文总结546.2 进一步工作54参考文献55谢 辞56第57页 引 言随着Internet的普及,全球性信息化浪潮在给我们带来便利的同时,网络信息安全问题也日益彰显。因此,一些企业、机关、科研机构为了防

9、止数据的泄密,常需要网络监视系统来监视从本单位传出的数据。网络监视系统的关键技术有包捕获技术、包过滤技术和协议分析技术等。包捕获技术研究如何捕获网络上的数据报,并采取措施降低丢包率。包过滤技术研究如何从大量网络数据流中实时过滤出符合特定条件的数据帧,这些条件包括协议、IP地址等。协议分析技术应用于对捕获的数据流按协议进行解码分析,以提取数据流中包含的信息。因为网络监视系统涉及面很广,所以通常设计的网络监视系统都针对某种特定的应用。同时,在一个大型的局域网中,面对大量的网络数据,用一台计算机作为网络监视系统来监控整个网络的方法显然行不通。因为一台计算机的处理能力和带宽毕竟有限,无法在监控所有的网

10、络数据,因此,本文提出了一个基于Socket的多机协作网络数据采集系统的模型。由多台计算机共同采集网络数据,为网络监控提供基础。并在Windows环境下实现了该系统。网络数据包的采集技术是一个难点,然而也是网络监控系统的基础。本系统是通过编程将网卡设为混杂模式,来实现网络数据采集的目的。同时,多机协作的技术是本系统的一个难点,也是本系统的重点。为了实现多机协作技术,首先可以采用Socket编程的方式解决多台计算机之间的通信问题。然后根据事先规定的好的方式,来实现多机协作。最后,本文不但通过Java编程在Windows平台下实现了以时间片为事件驱动的基于Socket的网络数据多机协作采集系统,还

11、提出了其他的一些多机协作方式。如以数据包数量为事件驱动的多机协作方式等。希望能通过本系统达到加强内部网络安全的目的。第1章 绪论1.1 网络技术发展所带来的问题人类已经进入21世纪,无处不在计算机网络连接了科研、文化、经济与国防等各个领域,数字化、信息化、网络化正在冲击、影响、改变着人类社会的各个方面。以Internet为代表的全球性信息化浪潮日益深刻,网络信息技术的应用正日益普及和广泛,应用层次正在深入。伴随网络的普及,安全问题日益成为影响网络效能的重要因素。而Internet所具有的开放性、国际性和自由性在增加应用自由度的同时,对安全提出了更高的要求。这主要表现在:开放性的网络,导致网络技

12、术是全开放的,任何个人或团体都可能获得,因而网络所面临的破坏和攻击可能是多方面的,如可能来自物理传输线路的攻击,也可以对网络通信协议和实现实施攻击,可以是对软件实施攻击,也可以是对硬件实施攻击。随着计算机及网络技术的飞速发展,网络中不安全的因素也在增加。1.2 网络数据监控的意义计算机网络系统的飞速发展在给人类生活带来极大方便的同时,也给人类带来了新的安全威胁。防火墙技术作为目前实现网络安全的一种手段,是结构总体安全策略的有机组成部分,它通过控制和监测网络之间的信息交换和访问行为来实现对网络安全的有效管理:拒绝未经授权的用户访问,阻止未经授权的的用户存取敏感信息,在很大程度上提高了网络安全性能

13、,但它也不是万能的,防火墙的弱点在于,它总是把内部网络作为信任的,因此,对与内部攻击行为、IP盗用等活动无能为力。然而事实上据统计60%以上的网络安全问题来自内部网络。同时网上信息鱼龙混杂,除了有大量有用的资源外,还充斥着大量的色情,反动内容混杂在各类网站,论坛,网络社区中,严重污染了网络空间。为了阻止内部网络中的攻击行为、防止内部网络中的用户浏览Internet中的反动、色情内容以及及时发现内部网络中感染木马、病毒的计算机防止影响内部网络的正常运行,必须要有一种机制来对内部网络中的信息进行监管。由于防火墙只能阻止大部分来自外部网络的入侵、攻击行为,对于内部网络的安全却无能为力。因此,我们必须

14、对内部网络中的数据进行监控,及时发现网络中的问题。我们可以通过监视并统计网路数据发现一些攻击行为。如内部网络中突然出现大量短包或是大量没有数据的包,可能就是受到了攻击或是内部网络中有某些计算机感染了病毒。同时,我们还可以将采集的网络数据还原出来,从而达到监视内部网络的信息安全的问题,可以及时发现内部网络中正在浏览反动、色情等敏感信息,或是正在通过电子邮件、即时通信软件等手段泄露单位机密信息的行为。通过网络数据的监控不但可以及时发现上述的这些问题,还能及时采取相应措施,妥善解决这些问题。从而达到保护内部网络的安全、提高内部网络的性能,减少技术外泄或网络故障发生的目的。1.3 设计概述为了实现该系

15、统,本人首先系统地学习了TCP/IP协议族的各种常见协议,然后系统地研究了各方面各层次的网络监控技术。在对网络通讯方面,才用了Socket编程实现多机协作系统中多台计算机间的通信。根据对多机协作系统的研究和分析,提出了多种多机协作的方式,并实现了以时间片为事件驱动的多机协作方式。最后将多机协作系统和网络数据采集系统整合从而实现了基于Socket的网络数据多机协作采集系统。本系统是实时网络信息流监控与分析工具,希望本系统能成为是企业管理内部人员的网络行为的有效工具。第2章 TCP/IP网络体系结构2.1 TCP/IP体系结构TCP协议最早由斯坦福大学的两名研究人员于1973年提出。1983年,T

16、CP/IP被Unix 4.2BSD系统采用。随着Unix的成功,TCP/IP逐步成为Unix机器的标准网络协议。Internet的前身ARPANET最初使用NCP(Network Control Protocol)协议,由于TCP/IP协议具有跨平台特性,ARPANET的实验人员在经过对TCP/IP的改进以后,规定连入ARPANET的计算机都必须采用TCP/IP协议。随着ARPANET逐渐发展成为Internet,TCP/IP协议就成为Internet的标准连接协议。很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但TCP/IP协议族允许它们互相进行通信。这一点很让人感到吃惊,

17、因为它的作用已远远超出了起初的设想。TCP/IP起源于60年代末美国政府资助的一个分组交换网络研究项目,到90年代己发展成为计算机之间最常应用的组网形式。它是一个真正的开放系统,因为协议族的定义及其多种实现可以不用花钱或花很少的钱就可以公开地得到。它成为被称作“全球互联网”或“英特网(Internet)”的基础,该广域网(WAN)已包含超过数亿台遍布世界各地的计算机。网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如TCP/IP,是一组不同层次上的多个协议的组合。TCP/IP通常被认为是一个四层协议系统,如图2-1所示:每一层负责不同的功能:链路层,有时也称作数据链

18、路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。网络层,有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Internet组管理协议)。传输层,主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。TCP为两台主机提供高可靠性的数据通信,它的工作包括把应用程序交给它的数据分成合适的小

19、块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。这两种运输层协议分别在不同的应用程序中有不同的用途。应用层,负责处理特定的应用程序细节。常见的应用层协议包括:l HTTP 超文本传输协议。l FTP 文件传输协议。l SMTP 简单邮件传输协议。l SNMP简单网络管理协议。2.2 以太网原理在TCP/IP协议族中,链路层主要有三个目的:(1

20、)为IP模块发送和接收IP数据报;(2)为ARP模块发送ARP请求和接收ARP应答;(3)为RARP发送RARP请求和接收RARP应答。TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网、令牌环网、FDDI(光纤分布式数据接口)及RS-232串行线路等。其中以太网应用最为广泛,因此本文讨论的数据采集系统将以以太网为基础。2.2.1 IEEE802.3和EthernetIEEE802.3和Ethernet实际上是同一种局域网协议,只不过由于历史的原因,它们的数据封装方法有细微的区别。它们都遵循着CSMA/CD(Carrier Sense, Multiple Access w

21、ith Collision Detection)这种媒体访问方式。两个或多个站竞争使用物理媒体,一次仅允许一个站发送数据。在传输前,每个主机首先监听传输媒体以便确定媒体是否为空或忙(载波侦听)。如果媒体忙,就继续监听,如果媒体空闲,则立即发送数据。如果多个主机试图在同一时间发送便会产生冲突。因此,每个主机要监视自已的传输,才能检测到可能的冲突。检测到冲突后,发送一简短的冲突加强信号,确保所有站都意识到冲突的发生。为了避免所有站同时重传它们的帧,所有冲突检测站要运行一个截断二进制指数后退算法,计算各自的重传延迟,称为后退延迟。由于以太网采用了共享总线的 CSMA/CD媒体访问方法,这就为网络监控

22、系统提供了采集整个冲突域(冲突域是指这样的一个网段,其上任意两台主机同时发送以太网数据报时必然产生冲突)内所有主机产生的网络数据报的可能性。实际上所有的以太网Sniffer软件都是基于这种原理。2.2.2 透明网桥采用了串联数据采集方式的网络数据采集系统建立在透明网桥的基础之上,因此在这里有必要介绍一下透明网桥的原理。顾名思义,透明网桥是完全透明的:它的接入无需改变网络任何已有的设置,只需接入网线,插上电源即可在接入的多个LAN中转发必须转发的帧。透明网桥以混杂方式工作,它接收与之连接的所有LAN传送的每一帧。当一帧到达时,网桥必须决定将其丢弃还是转发。如果要转发,则必须井定发往哪个LAN。这

23、需要通过查询网桥中一张大型散列表里的目的地址而作出决定。该表可列出每个可能的目的地,以及它属于哪一条输出线路(LAN)。在插入网桥之初,所有的散列表均为空。由于网桥不知道任何目的地的位置,因而采用扩散算法(flooding algorithm):把每个到来的、目的地不明的帧输出到连在此网桥的所有LAN中(发送该帧的LAN除外)。随着时间的推移,网桥将了解每个目的地的位置。一旦知道了目的地位置,发往该处的帧就只放到适当的LAN上,而不再散发。透明网桥采用的算法是逆向学习法。网桥按混杂的方式工作,故它能看见所连接的任一LAN上传送的帧。查看源地址即可知道在哪个LAN上可访问哪台机器,于是在散列表中

24、添上一项。当计算机和网桥加电、断电或迁移时,网络的拓扑结构会随之改变。为了处理动态拓扑问题,每当增加散列表项时,均在该项中注明帧的到达时间。每当目的地已在表中的帧到达时,将以当前时间更新该项。这样,从表中每项的时间即可知道该机器最后帧到来的时间。网桥中有一个进程定期地扫描散列表,清除时间早于当前时间若干分钟的全部表项。于是,如果从LAN上取下一台计算机,并在别处重新连到LAN上的话,那么在几分钟内.它即可重新开始正常工作而无须人工干预。这个算法同时也意味着,如果机器在几分钟内无动作,那么发给它的帧将不得不散发,一直到它自己发送出一帧为止。到达帧的路由选择过程取决于发送的LAN(源LAN)和目的

25、地所在的LAN(目的LAN),如下所示:l 如果源LAN和目的LAN相同,则丢弃该帧;l 如果源LAN和目的LAN不同,则转发该帧;l 如果目的LAN未知,则进行扩散。2.3 IP及其相关协议IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报传输。同时,ICMP、ARP和RARP和IP的关系密不可分,因此在这一并介绍。2.3.1 IP协议IP协议提供不可靠,无连接的数据传送服务。不可靠(unreliable)的意思是它不能保证IP数据报能成功地到达目的地。IP仅提供最好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单

26、的错误处理算法:丢弃该数据报,然后发送ICMP消息给信源端。任何要求的可靠性必须由上一层来提供(如TCP)。无连接(connectionless)这个术语的意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明,IP数据报可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此B可能在A之前先到达。IP数据报的格式如图2-2所示。普通的IP首部长为20个字节,除非含有选项字段。2.3.2 ARP和RARP尽管Internet上的每一台机器都有一个或多个IP地址,但是,真正在发

27、送数据帧时候使用的并不是IP地址,因为链路层并不理解Internet地址。而是采用48位的MAC地址来发送和接收数据帧。ARP(地址解析协议)和RARP(反向地址解析协议)为32bit的IP地址和数据链路层使用的任何类型的地址这两种不同的地址形式提供映射。两种协议如图2-1所示:ARP为IP地址到对应的硬件地址之间提供动态映射。之所以称为“动态”是因为这个过程是自动完成的,一般应用程序用户或系统管理员不必关心。RARP是被那些没有磁盘驱动器的系统使用(一般是无盘工作站或X终端),它需要系统管理员进行手工设置。2.3.3 ICMP协议ICMP(Internet控制消息协议)经常被认为是IP层的一

28、个组成部分。它传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或更高层协议(TCP或UDP)使用。一些ICMP协议要求把差错报文返回给用户进程。ICMP报文是封装在IP数据报内部被传输的。常见的ICMP消息类型如图2-4所示,不同类型由报文中的类型字段和代码字段来共同决定。ICMP报文分为查询报文和差错报文。因为对ICMP差错报文有时需要作特殊处理,因此需要对它们进行区分。例如,在对ICMP差错报文进行响应时,永远不会生成另一份ICMP差错报文(如果没有这个限制规则,可能会遇到一个差错产生另一个差错的情况,而差错再产生差错,这样会无休止地循环下去)。在众多种类的ICMP报文中,目的

29、不可达报文可用于网络监控系统的控制功能阻止两台主机之间的通讯。2.4 TCP和UDP协议Internet在传输层有两种主要的协议:一种是面向连接的协议,一种是无连接的协议。在下面将详细地进行讨论。面向连接的协议是TCP,无连接的协议是UDP。由于UDP基本上是在IP的基础上增加一个短的报头而得到的,且大多数应用协议都是建立在TCP上,因此这里将重点介绍TCP。2.4.1 UDP协议UDP(用户数据报协议)是一个简单的面向数据报的运输层协议。进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。这与面向流数据的协议不同,如TCP,应用程序触发的发送操作的次数和实际产生的I

30、P数据报的个数没有直接的关系,即可能是一对多,也可能是多对一,还可能是多对多。UDP不提供可靠性,它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地。应用程序应该关心封装UDP的IP数据报的长度,因为太长的IP数据报会在发送端或中途的路由器上产生分片,而分片的产生和分片的增多则会降低接收者IP数据报重新组装成功的可能性。UDP数据报的格式如图2-5所示:端口号用来标识发送进程和接收进程。因为同一个主机可能有多个不同的进程发送和接收不同应用类型的UDP数据报。UDP长度字段指的是UDP首部和UDP数据的字节长度。该字段的最小值为8字节(也就是说UDP的数据可以为空)。这个UDP长

31、度是冗余的,因为这个长度也可以通过IP数据报长度减去IP首部的长度得到。2.4.2 TCP协议尽管TCP和UDP都使用相同的网络层(IP), TCP却向应用层提供与UDP完全不同的服务。TCP提供一种面向连接的、可靠的字节流服务。随着时间的推移,检测出了各种各样的错误和不一致,并且在一些领域对TCP的要求也有所变化。面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。这一过程与打电话很相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁。这就是TCP的三次握手机制。如图2-6:在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于

32、TCP。TCP通过下列方式来提供可靠性:l 应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同。由TCP传递给IP的信息单位称为报文段或段(segment)。l 当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,重发这个报文段。这涉及TCP协议中自适应的超时及重传策略。l 当TCP收到发自TCP连接另一端的数据,它将发送确认信息。l TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。l 既然TCP报

33、文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。l 既然IP数据报会发生重复,TCP的接收端必须丢弃重复的数据。l TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。两个应用程序通过TCP连接交换8bit字节构成的字节流。TCP不在字节流中插入一记录标识符。这称为字节流服务。如果一方的应用程序先传10字节,又传20字节,再传50字节,连接的另一方将无法了解发

34、方每次发送了多少字节。收方可以分4次接收这80个字节,每次接收20字节。一端将字节流放到TCP连接上,同样的字节流将出现在TCP连接的另一端。另外,TCP对字节流的内容不作任何解释。TCP不知道传输的数据字节流是二进制数据,还是ASCII字符、EBCDIC字符或者其他类型数据。对字节流的解释由TCP连接双方的应用层解释。要实现TCP协议的功能,需要完成的机制包括:连接管理(如何建立和关闭连接)、滑动窗口机制、拥塞控制机制、定时器管理。2.5 常见应用层协议目前Internet上应用最多的几种应用层协议包括提供Web服务的HTTP协议、提供文件传输服务的FTP协议、发送E-Mail的SMTP协议

35、等。下面将分别简单介绍这几种协议。2.5.1 HTTP协议HTTP协议是目前Internet上应用最为广泛的一种应用层协议。它用于构建分布式的协作的超媒体信息系统,这种信息系统也被称为Web网络。整个Internet上的HTTP服务器通过URL(统一资源定位符)组成了一个相互连接的Web网络,用户可以通过点击Web浏览器中的URL在Web网络中遨游。不仅如此,Web网络可以通过提交表单生成应答网页完成针对特定用户定制的服务,客户端脚本更使得Web浏览器成为一种跨平台跨语言的运行平台,这种使用Web浏览器作为客户端运行平台的方式被称为B/S结构,这是当前极为流行的一种软件构建方式。HTTP协议中

36、客户与服务器交互的信息单位是类似于电子邮件的消息 (message),客户发出请求消息(request message),服务器返回应答消息(response message)。两种消息都是由开始行、可能有的一个或多个头字段、作为消息头和消息体分隔符的空行、可能有的消息体组成的。请求消息的开始行被称为请求行,应答消息的开始行被称为状态行。头字段类似于电子邮件中的头字段,由字段名、冒号“:”和字段值组成。请求行由方法、URL, HTTP版本组成,之间由空格隔开。方法表明了对URL施加的方法,常见方法包括Get和Post。 Get方法的含义是不改变URL对应资源并取回URL对应资源,方法为Get的

37、请求消息不包括消息体。Post方法的含义是提交表单并取回和URL相对应生成的资源,方法为Post的请求消息包括消息体。状态行由HTTP版本、3位十进制字符组成的状态代码、解释字符串组成,之间由空格隔开。每种状态代码都代表着一种应答结果或原因。请求消息和应答消息可以包含多种头字段,用来描述消息的属性和消息中包含的实体的属性。常见的头字段包括Content-Length,Content-Type,Content-Encoding,Transfer-Encoding等。l Content-Length指明了消息体的长度,正因为有了这个头字段,才使得HTTP的客户和服务器都能预先知道对方信息体的长度,

38、使得HTTP能传输任意的二进制数据。l Content-Type指明了实体的MIME类型,这种类型和电子邮件的MIME类型相比所有扩充,且不必编码成ASCII字符传输。l Content-Encoding指明了实体的编码方法。这种编码实际上是压缩方法,是为了减少数据在网络上的传输量。目前已有的压缩方法包括gzip,compress, deflate和identity。其中identity对原文不作任何改变。l Transfer-Encoding指明了消息体在传输时的编码方法。目前传输编码方法只有chunked一种。当消息体在发送时仍不能确定其长度,就需要使用此方法:每当发送者生成了一段数据,就

39、按照chunked的规范,在chunked的头部指明数据的大小,数据附加在头部的后面,一并发送出去,这种过程要重复多次直到数据发送完毕,最后发送一个长度为0的chunked头部表明消息体传输结束。HTTP是一种相当复杂的协议。它还包括缓存机制、认证机制、协商机制等等。2.5.2 FTP协议FTP是另一个常见的应用协议。它是用于文件传输的Internet标准。必须分清文件传送(file transfer)和文件存取(file access)之间的区别,前者是FTP提供的,后者是如操作系统提供的。由FTP提供的文件传送是将一个完整的文件从一个系统复制到另一个系统中。要使用FTP,就需要有登录服务器

40、的注册帐号,或者通过允许匿名FTP的服务器来使用。和其他大多数应用协议不同,FTP需要用到两个TCP连接。一个是控制连接(也称为控制通道),当客户向服务器发起并建立连接后,客户端发出命令服务器返回应答进行交互,首先进行客户的身份验证,然后用户可以多次查询和操作服务器端的文件,上传和下载服务器端的文件,直到用户发出退出的命令退出连接。一个是数据连接(也称为数据通道),当FTP需要传输目录信息或文件的数据时,数据连接马上建立起来并传输数据,数据传输完毕,数据连接马上断开,一个数据连接只能进行一次目录信息或文件数据的传输。数据连接即可以由服务器向客户发起(主动方式),也可以由客户向服务器发起(被动方

41、式)。常见的FTP命令有以下几种: l USER和PASS用于输入用户名和密码,进行身份认证。l CWD和CDUP用于改变工作目录。l PWD用于获取工作目录。l PORT, PASV, MODE, TYPE, STRU, REST用于规定传输参数。l STOR, STOU和APPE用于上传文件。l RETR用于下载文件。l LIST和NLST用于获取目录信息。l RNFR和RNTO用于文件的改名。l DELE用于删除文件。l RMD和MKD分别用于删除和创建目录。l ABORT用于中断当前的数据连接。l QUIT用于退出服务器。其中,上传文件、下载文件和获取目录信息的命令需要建立数据连接。2

42、.5.3 SMTP协议SMTP提供了一种邮件传输的机制,当收件方和发件方都在一个网络上时,可以把邮件直传给对方;当双方不在同一个网络上时,需要通过一个或几个中间服务器转发。SMTP首先由发件方提出申请,要求与接收方SMTP建立双向的通信渠道,收件方可以是最终收件人也可以是中间转发的服务器。收件方服务器确认可以建立连接后,双发就可以开始通信。SMTP是一个基于文本行的应用层协议,客户端和服务器端之间所有的数据交换都是以CRLF(即OxOd, OxOa)结束的文本行为单位。客户端发出命令,有包含参数的命令,也有不包含参数的命令,命令和参数之间有空格隔开。对应于每一个命令,服务器端发回应答,应答包括

43、了一个3个十进制字符组成的代码和对代码进行解释的字符串,它们之间也由空格隔开。发件方SMTP向收件方发处MAIL命令,告知发件方的身份;如果收件方接受,就会回答OK。发件方再发出RCPT命令,告知收件人的身份,收件方SMTP确认是否接收或转发,如果同意就回答OK;接下来就可以进行数据传输了。通信过程中,发件方SMTP与收件方SMTP 采用对话式的交互方式,发件方提出要求,收件方进行确认,确认后才进行下一步的动作。整个过程由发件方控制,有时需要确认几回才可以。为了保证回复命令的有效,SMTP要求发件方必须提供接收方的服务器及邮箱。邮件的命令和答复有严格的语法定义,并且回复具有相应的数字代码。所有

44、的命令由ASCII码组成。命令代码是大小写无关的,如MAIL和 mail、mAIL是等效的。第3章 开发环境及核心工具3.1 Java语言简介及其优势据Sun公司的定义,Java是个“简单、强大、面向对象、平台独立、多线程、动态和统一的编程环境”。这个定义比较简单,使Java能够增长和扩展到面目全非的新境界。如今,只要有微处理器的地方,几乎就有Java,最大的企业和最小的设备中都有Java,桌面计算机和超大型计算机中都有Java。为了让Java支持这种千差万别的环境,Sun公司开发了大量API和不同版本,但都建立在一组共同的核心类型上。Java是一种跨平台,适合于分布式计算环境的面向对象编程语

45、言。具体来说,它具有如下特性:简单性、面向对象、分布式、解释型、可靠、安全、平台无关、可移植、高性能、多线程、动态性等。下面将重点阐述Java语言的面向对象、平台无关、分布式、多线程、可靠和安全等特性。3.1.1 面向对象面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以看作是对象。对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。如果说传统的过程式编程语言是以过程为中心以算法为驱动的话,面向对象的编程语言则是以对象为中心以消息为驱动。用公式表示,过程式编程语言为:程序=算法+数据;面向对象编程语言为:程序=对象+消息。所有面向对象

46、编程语言都支持三个概念:封装、多态性和继承,Java也不例外。现实世界中的对象均有属性和行为,映射到计算机程序上,属性则表示对象的数据,行为表示对象的方法(其作用是处理数据或同外界交互)。所谓封装,就是用一个自主式框架把对象的数据和方法联在一起形成一个整体。可以说,对象是支持封装的手段,是封装的基本单位。Java语言的封装性较强,因为Java无全程变量,无主函数,在Java中绝大部分成员是对象,只有简单的数字类型、字符类型和布尔类型除外。而对于这些类型,Java也提供了相应的对象类型以便与其他对象交互操作。多态性就是多种表现形式,具体来说,可以用“一个对外接口,多个内在实现方法”表示。举一个例

47、子,计算机中的堆栈可以存储各种格式的数据,包括整型,浮点或字符。不管存储的是何种数据,堆栈的算法实现是一样的。针对不同的数据类型,编程人员不必手工选择,只需使用统一接口名,系统可自动选择。运算符重载(operator overload)一直被认为是一种优秀的多态机制体现,但由于考虑到它会使程序变得难以理解,所以Java最后还是把它取消了。继承是指一个对象直接使用另一对象的属性和方法。事实上,遇到的很多实体都有继承的含义。例如,若把汽车看成一个实体,它可以分成多个子实体,如:卡车、公共汽车等。这些子实体都具有汽车的特性,因此,汽车是它们的“父亲”,而这些子实体则是汽车的“孩子”。Java提供给用户一系列类(class),Java的类有层次结构,子类可以继承父类的属性和方法。与另外一些面向对象编程语言不同,Java只支持单一继承。 3.1.2 平台无关性Java是平台无关的语言是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。平台无关有两种:源代码级和目标代码级。C和C+具有一定程度的源代码级平台无关,表明用C或C+写的应用程序

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1