网络编程实用教程-第1章_第1页
网络编程实用教程-第1章_第2页
网络编程实用教程-第1章_第3页
网络编程实用教程-第1章_第4页
网络编程实用教程-第1章_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、网络程序设计课程介绍日常的网络应用基本上是通过使用网络应用软件来完成的应用软件:是专门为某一应用目的而编制的程序集合网络应用软件:具有网络通信功能的应用软件网络应用软件的特点网络通信层的功能功能实现层调用网络协议栈的服务实现网络通信的“接口”。网络通信层需要解决的问题包括:通过什么样的“接口”?如何使用这些“接口”?本课程的重点(学习使用网络通信层)“接口”是什么?有哪些常用类型?如何定义这些“接口”?有哪些常用的“接口”使用方式?实际应用中如何选择?第1章 网络编程基础本章介绍网络编程相关的基本概念,包括进程通信的概念因特网中网间进程的标识方法网络协议的特征TCP/IP中用户数据报协议UDP

2、和传输控制协议TCP的特点 目前的网络编程现状网络应用程序的客户服务器交互模式 1.1 网络编程相关的基本概念1.1.1 网络编程与进程通信1进程与线程的基本概念 进程是处于运行过程中的程序实例,是操作系统调度和分配资源的基本单位。一个进程实体由程序代码、数据和进程控制块三部分构成。 各种计算机应用程序在运行时,都以进程的形式存在。网络应用程序也不例外。 每个进程都有独立的代码和数据空间(进程上下文),进程切换的开销大。线程:进程中程序代码的一个执行序列。同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。多进程:在操作系统中,能同时运行多个任务(程序)

3、。多线程:在同一应用程序中,有多个顺序流同时执行。图示:线程和进程单进程、单线程如:MS-DOS多进程、每个进程一个线程如:UNIX单进程、多线程如:Java多进程、每个进程多个线程如:Windows2000、Solaris、Linux、Mach和OS/2 Windows系统不但支持多进程,还支持多线程。 当创建一个进程时,系统会自动创建它的第一个线程,称为主线程。然后,该线程可以创建其他的线程,而这些线程又能创建更多的线程。 图1.1 单CPU分时地运行进程中的各个线程2网络应用进程在网络体系结构中的位置 从计算机网络体系结构的角度来看,网络应用进程处于网络层次结构的最上层。 从功能上,可以

4、将网络应用程序分为两部分,一部分是专门负责网络通信的模块,它们与网络协议栈相连接,借助网络协议栈提供的服务完成网络上数据信息的交换。另一部分是面向用户或者作其他处理的模块,它们接收用户的命令,或者对借助网络传输过来的数据进行加工,这两部分模块相互配合,来实现网络应用程序的功能。 图1.2 网络应用程序在网络体系结构中的位置 网络应用程序最终要实现网络资源的共享,共享的基础就是必须能够通过网络轻松地传递各种信息。网络编程首先要解决网间进程通信的问题。然后才能在通信的基础上开发各种应用功能。3实现网间进程通信必须解决的问题 网间进程通信是指网络中不同主机中的应用进程之间的相互通信问题,网间进程通信

5、必须解决以下问题:(1)网间进程的标识问题(2)如何调用网络协议栈服务(3)多重应用协议的识别问题(4)不同的通信服务质量的问题1传输层在网络通信中的地位 网络应用程序在网络体系结构中的位置 1.1.2 因特网中网间进程的标识 按照OSI七层协议的描述,传输层与网络层在功能上的最大区别是传输层提供进程通信的能力。TCP/IP协议提出了传输层协议端口(protocol port,简称端口)的概念,成功地解决了通信进程的标识问题。 传输层是计算机网络中,通信主机内部进行独立操作的第一层,是支持端到端的进程通信的关键的一层。2端口的概念端口是TCP/IP协议族中,应用层进程与传输层协议实体间的通信接

6、口类似于进程ID号,每个端口都拥有一个叫作端口号(port number)的整数型标识符,端口号唯一标识了本机网络协议栈上的一个通信接口。 从实现的角度讲,端口是一种抽象的软件机制,包括一些数据结构和I/O缓冲区。 UDP与TCP的报文格式3端口号的分配机制 TCP/IP协议采用了全局分配(静态分配)和本地分配(动态分配)相结合的分配方法。对于TCP,或者UDP,将它们的全部65535个端口号分为保留端口号和自由端口号两部分。 保留端口的范围是01023,又称为众所周知的端口或熟知端口(well-known port),只占少数,采用全局分配或集中控制的方式,由一个公认的中央机构根据需要进行统

7、一分配,静态地分配给因特网上著名的众所周知的服务器进程,并将结果公布于众。 表1.1 一些典型的应用层协议分配到的保留端口 TCP的保留端口UDP的保留端口FTP21DNS53HTTP80TFTP69SMTP25SNMP161POP3110 其余的端口号,1024-65535,称为自由端口号,采用本地分配,又称为动态分配的方法。 总之,TCP或UDP端口的分配规则是: 端口0:不使用,或者作为特殊的使用; 端口1-255:保留给特定的服务,TCP和UDP均规定,小于256的端口号才能分配给网上著名的服务;端口256-1023:保留给其他的服务,如路由;端口1024-4999:可以用作任意客户的

8、端口;端口5000-65535:可以用作用户的服务器端口。 图1.5 客户与服务器的第一次通信 我们可以描述一下,在这样的端口分配机制下,客户进程C与服务器进程S第一次通信的情景。图1.5表示了客户与服务器第一次通信的情况。4进程的网络地址的概念 在因特网络中,用一个三元组可以在全局中唯一地标识一个应用层进程: 应用层进程地址=(传输层协议,主机的IP地址,传输层的端口号) 这样一个三元组,叫做一个半相关(half-association),它标识了因特网中,进程间通信的一个端点,也把它称为进程的网络地址。 5网络中进程通信的标识 一个完整的网间通信需要一个五元组在全局中唯一地来标识:(传输层

9、协议,本地机IP地址,本地机传输层端口,远地机IP地址,远地机传输层端口) 这个五元组称为一个全相关(association)。即两个协议相同的半相关才能组合成一个合适的全相关,或完全指定一对网间通信的进程。 1面向消息的协议与基于流的协议(1)面向消息的协议 面向消息的协议以消息为单位在网上传送数据,在发送端,消息一条一条地发送,在接收端,也只能一条一条地接收,每一条消息是独立的,消息之间存在着边界。 1.1.3 网络协议的特征图1.6 保护消息边界的数据报传输服务 (2)基于流的协议 基于流的协议不保护消息边界,将数据当作字节流连续地传输,不管实际消息边界是否存在。图1.7 无消息边界的流

10、传输服务2面向连接的服务和无连接的服务 一个协议可以提供面向连接的服务,或者提供无连接的服务。 面向连接服务是电话系统服务模式的抽象,即每一次完整的数据传输都要经过建立连接,使用连接,终止连接的过程。 无连接服务是邮政系统服务的抽象,每个分组都携带完整的目的地址,各分组在系统中独立传送。 3可靠性和次序性 可靠性保证了发送端发出的每个字节都能到达既定的接收端,不出错,不丢失,不重复,保证数据的完整性,称为保证投递。 次序性是指对数据到达接收端的顺序进行处理。保护次序性的协议保证接收端收到数据的顺序就是数据的发送顺序,称为按序递交。 1.1.4 高效的用户数据报协议UDP 传输层的用户数据报协议

11、(User Datagram Protocol,UDP)是一种尽力传送的无连接的不保障可靠的传输服务,是一种保护消息边界的数据的传输。 1.1.5 可靠的传输控制协议TCP1可靠性是很多应用的基础 2TCP为应用层提供的服务 传输控制协议 (Transmission Control Protocol,TCP)应用层进程提供一个面向连接的、端到端的、完全可靠的(无差错、无丢失、无重复或失序)全双工的流传输服务。 3TCP利用IP数据报实现了端对端的传输服务TCP被称作一种端对端(end to end)协议,这是因为它提供一个直接从一台计算机上的应用进程到另一远程计算机上的应用进程的连接。应用进程

12、能请求TCP构造一个连接,通过这个连接发送和接收数据,以及关闭连接。由TCP提供的连接叫做虚连接(virtual connection),虚连接是由软件实现的。图1.8 TCP是一个端到端的传输协议 4三次握手 为确保连接的建立和终止都是可靠的,TCP使用三次握手(3-way handshake)的方式来建立连接,SYN, SEQ = x主机 BSYN, ACK, SEQ = y, ACK= x 1ACK, SEQ = x + 1, ACK = y 1被动打开主动打开确认确认主机 A连接请求建立 TCP 连接A 的 TCP 向 B 发出连接请求报文段,其首部中的同步比特 SYN 应置为 1,并

13、选择序号 x,表明传送数据时的第一个数据字节的序号是 x。B 的 TCP 收到连接请求报文段后,如同意,则发回确认。B 在确认报文段中应将 SYN 置为 1,其确认号应为 x 1,同时也为自己选择序号 y。A 收到此报文段后,向 B 给出确认,其确认号应为 y 1。A 的 TCP 通知上层应用进程,连接已经建立。当运行服务器进程的主机 B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程,连接已经建立。 TCP 连接释放的过程 FIN, SEQ = xACK, SEQ = y, ACK= x 1ACK, SEQ = x + 1, ACK = y 1应用进程释放连接A 不再发送报文FIN

14、, ACK, SEQ = y, ACK = x + 1主机 B主机 A通知主机应用进程应用进程释放连接B 不再发送报文确认确认从 A 到 B 的连接就释放了,连接处于半关闭状态。相当于 A 向 B 说:“我已经没有数据要发送了。但你如果还发送数据,我仍接收。” 至此,整个连接已经全部释放。1.2.1 基于TCP/IP协议栈的网络编程 基于TCP/IP协议栈的网络编程是最基本的网络编程方式,主要是使用各种编程语言,利用操作系统提供的套接字网络编程接口,直接开发各种网络应用程序。本书主要讲解这种网络编程的相关技术。1.2.2 基于WWW应用的网络编程 WWW应用(Web应用)是因特网上最广泛的应用

15、。基于WWW应用的网络编程技术,包括所见即所得的网页制作工具,和动态服务器页面的制作技术。 1.2 三类网络编程1.2.3 基于.NET框架的Web Services网络编程1关于.NET平台 Web服务从由简单网页构成的静态服务网站,发展到可以交互执行一些复杂步骤的动态服务网站,这些服务可能需要一个Web服务调用其他的Web服务,并且像一个传统软件程序那样执行命令。这就需要和其他服务整合,例如:需要多个服务能够一起无缝地协同工作,需要能够创建出与设备无关的应用程序,需要能够容易地协调网络上的各个服务的操作步骤,容易地创建新的用户化的服务。 微软公司推出的.NET系统技术正是为了满足这种需求。

16、微软公司在2000年7月公布了.NET平台开发框架,.NET将Internet本身作为构建新一代操作系统的基础,并对Internet和操作系统的设计思想进行了延伸,使开发人员能够创建出与设备无关的应用程序,容易地实现Internet连接。.NET开发平台是一组用于建立Web服务器应用程序和Windows桌面应用程序的软件组件(综合类库),用该平台创建的应用程序在Common Language Runtime(CLR)(通用语言运行环境)(底层)的控制下运行。综合类库提供了使应用程序可以读写XML数据、在Internet上通信、访问数据库等的代码。所有的类库都建立在一个基础的类库之上,它提供管理

17、使用最为频繁的数据类型(例如数值或文本字符串)的功能,以及诸如文件输入/输出等底层功能。CLR是一个软件引擎,用来加载应用程序,确认它们可以没有错误地执行,进行相应的安全许可验证,执行应用程序,然后在运行完成后将它们清除。(1) .NET平台有四组产品 开发工具:一组语言:C#和VB.NET一组开发工具:Visual Studio.NET一个综合类库一个内置于框架中用于执行对象的公用语言运行期环境CLR 专用服务器:提供了一组.NET企业级服务器 Web 服务 设备:全新的.NET驱动的数字化智能设备(2).NET的策略是使软件成为一种服务,.NET顺应了软件工业的趋势,包括以下几个方面: 分

18、布式计算: 组件化: 企业级别的服务: WEB 范型转移: (3) .NET平台由三层软件构成 顶层是全新的开发工具VS.NET, 中间层包括三部分:.NET服务器、.NET服务构件和.NET框架。 底层是WINDOWS操作系统。 (4) .NET框架的设计要支持的目标 简化组件的使用:编写.NET类不用考虑底层代码 实现语言的集成:公共类型系统规范CTS 支持Internet的互操作: 使用SOAP协议 简化软件的开发: 提供了一套框架类 简化组件的部署:采用全局配件缓冲GAC机制注册 提高可靠性:支持运行期的类型识别,内容转储。 提高安全性:保护对于可执行代码的某部分的访问 2关于Web服

19、务 什么是Web服务?Web服务是松散耦合的可复用的软件模块,在Internet上发布后,能通过标准的Internet 协议在程序中访问,具有以下的特点:(1)可复用: (2)松散耦合: (3)封装了离散:(4)Web服务可以在程序中访问(5)Web服务在Internet上发布 Web 服务是一种可以用来解决跨网络应用集成问题的开发模式,这种模式为实现“软件作为服务”提供了技术保障。“软件作为服务”实质上是一种提供软件服务的机制,这种机制可以在网络上暴露可编程接口,并通过这些接口来共享站点开放出来的功能。从技术角度来讲,Web 服务实现了最广泛的应用软件集成,弥补了传统分布式软件开发模型的限制

20、。传统的分布式软件开发模型各自为政,所以只能被用来开发紧耦合类型的Web分布式应用系统。所谓紧耦合,就是指客户端必须按照特定的规范去访问服务端提供的服务,而这种规范只在一个有限的范围内通用。为了可以在整个因特网中实现对服务的自由访问,有必要提供一种崭新的模式或信息交换手段来达到这个目的。于是,微软提出了Web 服务。Web 服务的主要特点之一是,客户端访问Web 服务只需要通过因特网标准协议,如HTTP或XML,以及SOAP,不需要专门的协议。因为HTTP协议和XML都是与平台无关的标准协议,因此,可以被任何主流操作系统正确理解和解释。另外,更为关键的特性是,Web 服务可以被XML语言进行详

21、尽的描述。这就是说,提供Web服务的站点可以提供一个(或多个)该站点可以对外提供服务的描述文件,这个文件的内容可以被访问者理解。更进一步说,就是客户端可以从网络上直接得到代码! 假设开发人员需要搭建一个商务网站,这个网站需要一个验证客户合法身份的功能。为了实现这个功能,下面分别描述了可以采用的办法。 由开发人员自己编写安全验证所需的全部代码。这样做显然不现实,一个安全验证程序涉及到诸多专业知识,并需要相当长的时间才能够完成。 购买这段程序(通常是一个ActiveX组件)。在收到组件之后,首先将组件注册在自己的机器上,然后根据组件类型库产生接口文件。在实际编程中就可以使用这个接口文件来访问组件服

22、务。很明显,这种方式在目前使用得最为广泛。 有了Web 服务,情况就不同了,只需要在自己的程序中通过访问某个服务的URL地址,得到一份XML描述,并使用这个描述文件产生一个接口文件。然后,在实际编程中,只需要通过这个接口文件来访问服务就可以了。一定要注意,这个服务可不是运行在我们机器上的,是运行在因特网上URL地址所指向的地方。如果这个网站需要更多的功能,而这些功能在一些网站上已经被开发出来,并以各种方式(免费或收费)公开出来供所有需要它们的开发人员来使用,那么,尽量使用它们好了。当然,如果开发人员所在的公司,也想成为Web 服务提供者的话,同样可以轻松地将他们编写的Web 服务在网络上公布出

23、来,供大家使用。与紧耦合服务概念相对,由于Web 服务具备通信协议标准性和服务自描述性,所以,使用Web 服务可以开发出松耦合的分布式应用程序来。这也是Web 服务要实现的最根本的设计目标。Web 服务的体系如图所示。 本节着重于因特网上的高级服务,以及提供这些服务的应用软件。讨论网络应用软件的客户服务器交互模式,并说明网络协议操作的方式为什么需要这种模式。这是构筑所有网络应用的基础。1.3 客户服务器交互模式1.3.1 网络应用软件的地位和功能因特网仅仅提供一个通用的通信构架,它只负责传送信息,而对于信息传过去干什么用,利用因特网究竟提供什么服务,由哪些计算机来运行这些服务,如何确定服务的存

24、在,如何使用这些服务等等问题,都要由应用软件和用户解决。 网络应用进程通信时,普遍采用客户服务器交互模式(client-server paradigm of interaction),简称C/S模式。这是因特网上应用程序最常用的通信模式,即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务。C/S模式的建立基于以下两点:首先,网络中软硬件资源、运算能力和信息分布的不对等;网间进程通信完全是异步的,需要一种机制为通信的进程之间建立联系,为二者的数据交换提供同步。 1.3.2 客户服务器模式 C/S模式过程中服务器处于被动服务的地位。首先服务器方要先启动,并根据客户请求提供相应服务,服务

25、器的工作过程是:(1)打开一通信通道,并告知服务器所在的主机,它愿意在某一公认的地址上(熟知知端口,如FTP为21)接收客户请求。(2)等待客户的请求到达该端口。 (3)服务器接收到服务请求,处理该请求并发送应答信号。为了能并发地接收多个客户的服务请求,要激活一个新进程或新线程来处理这个客户请求(如UNIX系统中用fork、exec)。服务完成后,关闭此新进程与客户的通信链路,并终止。(4)返回第二步,等待并处理另一客户请求。(5)在特定的情况下,关闭服务器。 客户方采取的是主动请求方式,其工作过程是:(1)打开一通信通道,并连接到服务器所在主机的特定监听端口。(2)向服务器发送请求报文,等待

26、并接收应答;继续提出请求,与服务器的会话按照应用协议进行。(3)请求结束后,关闭通信通道并终止。从上面的描述可知:客户机和服务器都是运行于计算机中的网络协议栈之上的应用进程,借助网络协议栈进行通信。服务器运行于高档的服务器类计算机之上,借助网络,可以为成千上万的客户机服务。客户机软件运行在用户的PC上,有良好的人机界面,通过网络请求并得到服务器的服务,共享网络信息和资源。表1.2 一些著名的网络应用网络应用客户端软件服务器软件应用层协议电子邮件foxmail电子邮件服务器SMTP、Pop3文件传输cutFTP文件传输服务器FTPWWW浏览IE浏览器IIS服务器HTTP 客户软件和服务器软件通常

27、还具有以下一些主要特点: 1客户软件(1)在进行网络通信时临时成为客户,但它也可在本地进行其他的计算。(2)被用户调用,只为一个会话运行。在打算通信时主动向远地服务器发起通信。1.3.3 客户与服务器的特性(3)能访问所需的多种服务,但在某一时刻只能与一个远程服务器进行主动通信。(4)主动地启动与服务器的通信。 (5)在用户的计算机上运行,不需要特殊的硬件和很复杂的操作系统。 2服务器软件(1)是一种专门用来提供某种服务的程序,可同时处理多个远地客户的请求。(2)当系统启动时即自动调用,并且连续运行着,不断地为多个会话服务。(3)接受来自任何客户的通信请求,但只提供一种服务。(4)被动地等待并

28、接受来自多个远端客户的通信请求。(5)在共享计算机上运行,一般需要强大的硬件和高级的操作系统支持。(1)客户和服务器都是软件进程,C/S模式是网络上通过进程通信建立分布式应用的常用模型。(2)非对称性:服务器通过网络提供服务,客户通过网络使用服务,这种不对称性体现在软件结构和工作过程上。3基于因特网的C/S模式的应用程序的特点(3)对等性:客户和服务器必有一套共识的约定,必与以某种应用层协议相联,并且协议必须在通信的两端实现。比如浏览器和3W服务器就都基于HTTP超文本传输协议。 (4)服务器的被动性:服务器必须先行启动,时刻监听,日夜值守,及时服务,只要有客户请求,就立即处理并响应,回传信息

29、。但决不主动提供服务。(5)客户机的主动性:客户机可以随时提出请求,通过网络得到服务,也可以关机走人,一次请求与服务的过程是由客户机首先激发的。(6)一对多:一个服务器可以为多个客户机服务,客户机也可以打开多个窗口,连接多个服务器。(7)分布性与共享性:资源在服务器端组织与存储,通过网络分散在多个客户端使用。C/S模式优缺点优点:结构简单,系统中不同类型的任务分别由客户和服务器承担,有利于发挥不同机器平台的优势;支持分布式、并发环境,可以有效地提高资源的利用率和共享程度;服务器集中管理资源,有利于权限控制和系统安全。由于客户端实现与服务器的直接相连,没有中间环节,因此响应速度快。操作界面漂亮、

30、形式多样,可以充分满足客户自身的个性化要求。缺点:需要专门的客户端安装程序,分布功能弱,针对点多面广且不具备网络条件的用户群体,不能够实现快速部署安装和配置。兼容性差,对于不同的开发工具,具有较大的局限性。若采用不同工具,需要重新改写程序。开发成本较高,需要具有一定专业水准的技术人员才能完成。1服务器程序与服务器类计算机 服务器(server)这个术语来指那些运行着的服务程序。 服务器类计算机(server-class computer)这一术语来称呼那些运行服务器软件的强大的计算机。1.3.4 容易混淆的术语2客户与用户 “客户”(client)和服务器都指的是应用进程,即计算机软件。 “用

31、户”(user)指的是使用计算机的人。 图1.10说明了这些概念的区别。 图1.10 用户、客户、服务器、服务器类计算机 客户与服务器的通信过程一般是这样的:(1)通信之前,服务器应先行启动,并通知它的下层协议栈做好接收客户请求的准备,然后被动地等待客户的通信请求,称服务器处于监听状态。1.3.5 客户与服务器的通信过程(2)一般是先由客户向服务器发送请求,服务器向客户返回应答。客户随时可以主动启动通信,向服务器发出连接请求,服务器接收这个请求,建立了二者的通信关系。(3)客户与服务器的通信关系一旦建立,客户和服务器都可发送和接收信息。信息在客户与服务器之间可以沿任一方向或两个方向传递。在某些

32、情况下,客户向服务器发送一系列请求,服务器相应地返回一系列应答。 客户与服务器作为两个软件实体,它们之间的通信是虚拟的,是概念上的,实际的通信要借助下层的网络协议栈来进行。1.3.6 网络协议与CS模式的关系网络应用进程与应用层协议的关系:为了具体的应用问题而彼此通信的进程称为应用进程应用层协议并不解决用户的各种具体问题,而是规定了应用进程在通信时所必须遵循的约定从网络体系结构的角度来说,应用层协议位于应用进程之下,应用层协议是为应用进程提供服务的,帮助应用进程组织数据。应用层协议往往在应用进程中实现1.3.7 错综复杂的客户服务器交互在C/S模式中,存在着三种一个与多个的关系: (1)一个服务器同时为多个客户服务:(2)一个用户的计算机上同时运行多个连接不同服务器的客户 (3)一个服务器类的计算机同时运行多个服务器: 图1.11 一台计算机中的多个服务器被多个计算机的客户访问 并发性是客户服务器交互模式的基础,并发允许多

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论