《C01_JAVA与网络编程.pdf》由会员分享,可在线阅读,更多相关《C01_JAVA与网络编程.pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 第一章 第一章 JAVA与网络编程与网络编程 现代基于计算机网络的信息沟通成为当今社会信息交流的主要形式之一,其形式包括:实时消息系统、WEB 页面、电子邮件、信息管理系统、基于 IP 语音和视频、以及各类型的网络娱乐系统等。本章内容将从计算机网络的基本概念、网络编程的概念、JAVA 与网络编程等几个方面展开介绍计算机网络编程的基础概念。第一节 第一节 TCP/IP计算机网络体系结构计算机网络体系结构 1.1.1 计算机网络计算机网络 当今的互联计算机网络起源于上世纪冷战时间,计算机网络的目的在于共享远程设备上的信息储存资源和计算能力。1995 年美国克林顿政府制定的互联国家信息高速公路和国
2、际信息高速公路的规划方案极大的促进了全球互联网络的建设。我国比较著名的中国科技信息网NCFC、中国公用计算机网CHINANET、中国教育科研网CERNET和中国公用经济信息网CHINAGBN。计算机网络是通过电缆、电话线或无线通讯将两台以上的计算机互连起来的集合。准确定义是:若干台、拥有独立处理能力的计算机、通过通信设备连接、且通信软件支持、实现信息传输与交换的集合。其简单定义是:一些互相连接的、自治的计算机的集合。最简单的网络由两台计算机设备构成的两点一线模型通信,最庞大的网络是由多个计算机网络通过路由器互连而成因特网,也称为“网络的网络”。如图 1-1 所示。图 1-1 网络的网络 按计算
3、机联网的地理覆盖位置,从大到小可划分:WAN(Wide Area Network,广 域网)、MAN(Metropolitan Area Network,城域网)、LAN(Local Area Network,局域网)以及 PAN(Personal Area Network,个人局域网)。WAN 也叫远程网 RCN(Remote Computer Network),它的作用范围最大,一般可以从几十公里至几万公里,一个国家或国际间建立的网络都是广域网。在广域网内,用于通信的传输装置和传输介质可由电信部门提供。目前,世界上最大的信息网络Internet 已经覆盖了包括我国在内的 180 多个国家和
4、地区,连接了数万个网络,终端用户已达数千万并且以每月 15%的速度增长。MAN 作用范围在广域网和局域网之间,如作用范围为一个城市这种网络叫做城域网 MAN()。城域网的传输速率也在 1Mbps 以上,其作用距离约为 5km-50km。LAN 是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。局域网是封闭型的,可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成。LAN 是目前应用最为广泛的网络,例如:机关电大计算机网络是一个局域网,我们通常也把它称之为校园网或
5、驻地网。PAN 是用无线电或红外线代替传统的有线电缆,实现个人信息终端的智能化互联,组建个人化的信息网络。从计算机网络的角度来看,PAN 是一个局域网;从电信网络的角度来看,PAN 是一个接入网,因此有人把 PAN 称为电信网络最后一米的解决方案。PAN 定位在家庭与小型办公室的应用场合,其主要应用范围包括话音通信网关、数据通信网关、信息电器互联与信息自动交换等。PAN 的实现技术主要有:Bluetooth、IrDA、Home RF、ZigBee 与 UWB(Ultra-Wideband Radio)四种。1.1.2 TCP/IP体系结构体系结构 计算机网络由多个互连的结点组成,结点之间要不断
6、地交换数据和控制信息,要做到有条不紊地交换数据,每个结点就必须遵守一整套合理而严谨的结构化管理体系.计算机网络就是按照高度结构化设计方法采用功能分层原理来实现的,即计算机网络体系结构的内容.网络体系(Network Architecture)为了完成计算机间的通信合作,把每台计算机互连的功能划分成有明确定义的层次,并规定了同层次进程通信的协议及相邻之间的接口及服务。为了实现不同厂家生产的计算机系统之间以及不同网络之间的数据通信,就必须遵循相同的网络体系结构模型,否则异种计算机就无法连接成网络,这种共同遵循的网络体系结构模型就是国际标准-开放系统互连参考模型,即OSI/RM(Open Syste
7、m Interface/Reference Model,开放互联系统参考模型)七层体系结构。而在Internet中,网络通讯协议使用TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/因特网互联协议)四层体系结构。TCP/IP 定义了电子设备(比如计算机)如何 连入因特网,以及数据如何在它们之间传输的标准。图 1-2 TCP/IP 结构与 OSI/RM 结构对比 在 TCP/IP 中,应用层为协议的最高层,应用程序与该层协议相配合发送或接收数据。TCP/IP 协议集在应用层上有远程登录协议(Telnet)、文件传输协议(F
8、TP)、电子邮箱协议(SMTP)、域名系统(DNS)、超文本传输协议(HTTP)等,它们构成了TCP/IP 的基本应用程序。传输层上的主要协议是TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol,用户数据包协议)。正如网络层控制着主机之间的数据传递,传输层控制着那些将要进入网络层的数据。两个协议就是它管理这些数据的两种方式:TCP是一个基于连接的协议;UDP则是面向无连接服务的管理方式的协议。由于UDP不使用很繁琐的流控制或错误恢复机制,只当数据报的发送者和接收者,因此,UDP比TCP简单。网络层中的协议主要有 IP
9、,ICMP,IGMP 等,由于它包含了 IP 协议模块,所以它是所有基于 TCP/IP 协议网络的核心。在网络层中,IP 模块完成大部分功能。ICMP 和IGMP 以及其他支持 IP 的协议帮助 IP 完成特定的任务,如传输差错控制信息以及主机/路由器之间的控制电文等。网络层掌管着网络中主机间的信息传输。网络接口层实现与通信介质接口,完成数据在网络中的发送和接收,向上层协议屏蔽通信的详细过程。第二节 什么是网络编程第二节 什么是网络编程 1.2.1 网络编程网络编程 通常上,网络编程就是利用一门编程语言结合相应的网络接口 API,进行编写关于网络信息传输方面的程序,这个过程就叫做网络编程。如在
10、 Windows XP 环境下,利用 C+语言,根据 Microsoft 提供的 Winsock2 网络编程接口,编写相关的网络程序;又如利用 JAVA 语言,引用 类库和 java.io 类库等包,编写相关的网络程序。根据 TCP/IP 的分层体系结构,网络编程可划分:?用户功能设计,指包含了应用层和传输层两层在内的应用软件设计,通常根据应用软件中传输的数据要求不同以及用户需求,选择适当的传输层协议进行通信,主要完成某种特定的应用。?通信功能设计,包括传输层、网络层和媒体接入层在内,完成数据传输安全运输、数据传输效率等功能。在 TCP/IP 体系结构中,应用协议与传输层协议的关系如表 1-1
11、 所示。表 1-1 应用协议与传输协议的关系 应用 应用层协议 传输层协议 域名解析 DNS UDP 小文件传输 TFTP UDP 路由选择协议 RIP UDP IP 地址配置 BOOTP,DHCP UDP 网络管理 SNMP UDP 远程文件服务器 NFS UDP IP 电话 H.323 UDP 流式多媒体通信 RTP,RTCP UDP 多播 IGMP UDP 电子邮件 SMTP,POP TCP 远程终端接入 TELNET TCP WWW HTTP TCP 文件传送 FTP TCP 1.2.2 C/S架构和架构和B/S架构架构 在设计网络程序时,通常要根据用户需求而设计软件有两种架构:C/S
12、(Client/Server,客户服务器架构)和 B/S(Browser/Server,浏览器服务器架构)。C/S 架构是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到 Client 端和 Server 端来实现,降低了系统的通讯开销。它是一种典型的两层架构,也可以看做是胖客户端(Fat Client)架构,原因在于客户端需要实现绝大多数的业务逻辑和界面展示。客户端包含一个或多个在用户的电脑上运行的程序,该类架构中,作为客户端的部分需要承受很大的压力,因为显示逻辑和事务处理都包含在其中,通过与数据库的交互(通常是 SQL 或存储过程的实现)来达到持久化数据,以此满足实
13、际项目的需要。服务器端有两种:数据库服务器端,客户端通过数据库连接访问服务器端的数据;Socket 服务器端,服务器端的程序通过 Socket 与客户端的程序通信。常见的应用软件:管理信息系统、IM、娱乐软件等。如图 1-3 所示。图 1-3 C/S 架构 C/S 架构的优点:?C/S 架构的界面和操作可以很丰富;?安全性能可以很容易保证,实现多层认证也不难;?由于只有一层交互,因此响应速度较快。C/S 架构的缺点:?适用面窄,通常用于局域网中;?用户群固定,由于程序需要安装才可使用,因此不适合面向一些不可知的用户;?维护成本高,发生一次升级,则所有客户端的程序都需要改变。B/S 架构是 WE
14、B 兴起后的一种网络结构模式,WEB 浏览器是客户端最主要的应用软件。这种模式统一客户端,将系统功能实现的核心部分集中到服务器上,简化系统的开发、维护和使用。其中,Browser 指的是 Web 浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现;由于客户端包含的逻辑很少,因此也被称为瘦客户端(Thin Client)。由 Browser 客户端,WebApp 服务器端和 DB 端构成所谓的三层 架构。B/S 架构的系统无须特别安装,只有 Web 浏览器即可。B/S 架构中,显示逻辑交给了 Web 浏览器,事务处理逻辑在放在了 WebApp 上,这样就避免了庞大的胖客户端,减少客户
15、端的压力。如图 1-4 所示。图 1-4 B/S 架构 B/S 架构的优点是:?客户端无需安装,有 Web 浏览器即可;?BS 架构可以直接放在广域网上,通过权限控制实现多客户访问的目的,交互性较强;?BS 架构无需升级多个客户端,升级服务器即可。B/S 架构缺点是:?在跨浏览器上,BS 架构不尽如人意;?表现要达到 CS 程序的程度需要花费不少精力;?在速度和安全性上需要花费巨大的设计成本;?客户端服务器端的交互是请求-响应模式,通常需要刷新页面。由此,可见不论是 C/S 架构还是 B/S 架构,凭借自身的特点,在今后的时间内必然长期存在。1.2.3 C/S 与与 B/S 区别区别 硬件环境
16、不同硬件环境不同:C/S 一般建立在专用的网络上,局域网之间再通过专门服务器提供连接和数据交换服务;B/S 建立在广域网之上的,不必是专门的网络硬件环境,有比 C/S 更强的适应范围,一般只要有操作系统和浏览器就行。对安全要求不同对安全要求不同 C/S 一般面向相对固定的用户群,对信息安全的控制能力很强,高度机密的信息系统采用 C/S 结构适宜;B/S 建立在广域网之上,对安全的控制能力相对弱,可能面向不可知的用户。对程序架构不同对程序架构不同 C/S 程序可以更加注重流程,可以对权限多层次校验,对系统运行速度可以较少考虑;B/S 对安全以及访问速度的多重的考虑,建立在需要更加优化的基础之上,
17、从 MS 的.Net 系列的 BizTalk 2000 Exchange 2000 等,全面支持网络的构件搭建的系统,SUN 和 IBM 推的 JavaBean 构件技术等。软件重用不同软件重用不同 C/S 程序可以不可避免的整体性考虑,构件的重用性不如在 B/S 要求下的构件的重用性好;B/S 对的多重结构,要求构件相对独立的功能,能够相对较好的重用。系统维护不同系统维护不同 C/S 程序由于整体性,必须整体考察,处理出现的问题必须整体系统升级;B/S 构件组成,方面构件个别的更换,实现系统的无缝升级.系统维护开销减到最小.用户从网上自己下载安装就可以实现升级。处理问题不同处理问题不同 C/
18、S 程序可以处理用户面固定,并且在相同区域,安全要求高需求,与操作系统相关,应该都是相同的系统;B/S 建立在广域网上,面向不同的用户群、分散地域,受操作系统平台影响最小。用户接口不同用户接口不同 C/S 多是建立的 Window 平台上,表现方法有限,对程序员普遍要求较高;B/S 建立在浏览器上,有更加丰富和生动的表现方式与用户交流.,并且大部分难度减低,减低开发成本。信息流不同信息流不同 C/S 程序一般是典型的中央集权的机械式处理,交互性相对低;B/S 信息流向可变化,B-B、B-C、B-G 等信息,流向的变化,更像交易中心。1.2.4 P2P P2P(Point to Point 或者
19、 Peer to Peer,对等设备),在以上 C/S 或者 B/S 架构中,都是以服务器作用中心,进行布局。伴随着计算机网络的迅速发展,硬件设备能力的提高,接入用户人数的增加,以服务器为核心模式,往往不能满足所有用户的需求。例如,一个提供视频的服务器,或者提供文件下载的服务器,无法应对众多用户的同时连接请求。于是,产生了点到点的方式,允许各个参与者之间相互分享数据。如图1-5 所示。图 1-5 P2P 模式 伴随着P2P研究的深入,有断言说对等联网是只读的网络的终结(Peer-to-peer is the end of the read-only Web)。使客户机摆脱了服务器的束缚,重新参
20、与互联网(Peer-to-peer allows you to participate in the Internet again)。其实,P2P 不是一个新思想,从某些角度看它甚至是整个最初创建互联网的最基本的思想。因为,互联网的初衷就是接入网络的设备共相资源之间互享。P2P 的常见应用有文件下载,例如 eMule,迅雷,BitTorrent,都是用于多点下载的 P2P 软件。还有各类网络娱乐应用,在线点播,视频游戏等。第三节第三节 JAVA与网络编程与网络编程 1.3.1 JAVA语言语言 1991 年,SUN 公司成立一个专门为消费电子产品而设立了独立研发小组”GREEN”,以 C 编译
21、器为基础,设计和开发了一个新的编程语言.”Write Once,Run Anywhere”;1993 年,在一系列基础研究 成功的基础上 SUN 成立了一个FirstPerson 的子公司.这时的语言被称为 Oak;1994 年,Oak 开始以和 WWW 相结合为目标设计;1995 年,正式改名为 JAVA,并且获得了广泛的认同和巨大的成功。经过多年的发展,JAVA 语言逐渐成为主流程序设计语言。最新的 JDK 版本为 J2SDK7。Java 其语言本身是基于 JVM(虚拟机)解释型,由于虚拟机机制,程序可以在各种平台上运行,即拥有较好的可移植性,更适合了网络时代的要求,夸张的说,网络上机器都
22、可以运行同一个 Java 程序。其编译运行如图 1-6 所示。图 1-6 Java 编译及运行图 从该图可以看到,经过编译的 CLASS 文件,通过网络下载到运行终端,经过校验,由终端的 JVM 解释执行,从而实现“一次编写,到处执行”。1.3.2 JAVA网络编程网络编程 Java 作为一门单纯的编程语言和网络没有直接关系的,只有当你掌握了 Java 的网络类库(J 和 Java.io)后,就能开始网络编程了。.net 类库被 Java 用于封装用于网络相关类;.io 类库被 Java 用于封装数据流的输入和输出类。其实,在 Java 语言中用于网络编程的应用领域有很多,包括以下:?Appl
23、et 采用 Java 创建的基于 HTML 的程序。它是 Java 最早的应用在网络上的网页技术,浏览器将其暂时下载到用户的硬盘上,并在 Web 页打开时在客户端运行;?Socket 通常也称作套接字,用于描述通信协议、IP 地址和端口,是一个通信链的句柄。应用程序通过套接字向网络发出请求或者应答网络请求,它是网络编程中常用的技术;?Servlet 是一种独立于平台和协议的服务器端的 Java 应用程序,可以生成动态的 Web 页面。它担当 Web 浏览器或其他 HTTP 客户程序,与 HTTP 服务器上的数据库或应用程序之间的中间层,它允许开发者自定业务逻辑;?Jsp(JavaServer
24、Pages)是由 Sun Microsystems 公司倡导、许多公司参与的一种动态网页技术标准;?RMI(Remote Method Invocation)是 Java 的一组支持开发分布式应用程序的API。RMI 使用 Java 语言接口定义了远程对象,它集合了 Java 序列化和 Java远程方法协议(Java Remote Method Protocol),它的出现将 Java 的网络编程应 用提高了一个层次。在本课程中,将依次介绍 JAVA 与网络编程相关的知识包括:?与 URL 相关的类 InetAddress 与 URL;?与 TCP 相关的类 Socket 与 ServerSo
25、cket;?与 UDP 相关的类 DatagramSocket,DatagramPacket 与 MulticastSocket;?将类转化为字节流的序列化;?用于实现远程方法调用的 RMI;?用于安全传输层 SSL 构架。这些内容将在以后的章节里一一介绍,每章内容均包含了相关概念与程序举例,章节后加强记忆的概念题、以及实验指导等。课后作业:课后作业:1.什么是计算机网络?计算机网络按照覆盖范围可分为几类?2.什么是计算机网络体系结构,画出 TCP/IP 体系结构,并说明各层的作用。3.什么是网络编程?4.什么 Client/Server 结构和 Browser/Server 结构,说明各自的优缺点及相互的不同之处。5.Java 中与网络编程必须的类库包是哪两个?各自的作用是什么?6.预习 Java 中的 InetAddress,URL,Socket,ServerSocket,DatagramSocket,DatagramPacket,MulticastSocket 类的作用。
限制150内