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

下载本文档

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

文档简介

1、网络编程基础 (A)山东理工大学山东理工大学理学院理学院殷殷 超超L52025 网络编程 通过使用套接字来达到通过使用套接字来达到进程间通信进程间通信目的编程就是网络目的编程就是网络编程。编程。windows提供的基于网络编程的是套接字也就是提供的基于网络编程的是套接字也就是winsock。 网络编程从大的方面说就是对信息的发送到接收,中网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用,编程人员可以不用考虑间传输为物理线路的作用,编程人员可以不用考虑 网络编程最主要的工作就是在发送端把信息通过规定网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照

2、规定好的协议把包进好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的!中间行解析,从而提取出对应的信息,达到通信的目的!中间最主要的就是最主要的就是数据包的组装,数据包的过滤,数据包的捕数据包的组装,数据包的过滤,数据包的捕获,数据包的分析获,数据包的分析,当然最后再做一些处理!,当然最后再做一些处理! 第第1章章 网络编程基础网络编程基础第第1章章 网络编程基础网络编程基础l本章介绍网络编程相关的基本概念,包括l进程通信的概念进程通信的概念l因特网中网间进程的标识方法因特网中网间进程的标识方法l网络协议的特征网络协议的特征lTCP/IP中用户数据报

3、协议中用户数据报协议UDP和传输和传输控制协议控制协议TCP的特点的特点 l目前的网络编程现状目前的网络编程现状l网络应用程序的客户服务器交互模式网络应用程序的客户服务器交互模式 1.1 网络编程相关的基本概念网络编程相关的基本概念1.1.1 网络编程与进程通信网络编程与进程通信1进程与线程的基本概念进程与线程的基本概念l 进程是处于运行过程中的程序进程是处于运行过程中的程序实例实例,是操,是操作系统调度和分配资源的基本单位。作系统调度和分配资源的基本单位。l 一个进程实体由程序代码、数据和进程控一个进程实体由程序代码、数据和进程控制块三部分构成。制块三部分构成。l 各种计算机应用程序在运行时

4、,都以进程的各种计算机应用程序在运行时,都以进程的形式存在。网络应用程序也不例外。形式存在。网络应用程序也不例外。 Windows系统不但支系统不但支持多进程,还支持多线程。持多进程,还支持多线程。 当创建一个进程时,系当创建一个进程时,系统会自动创建它的第一个线统会自动创建它的第一个线程,称为主线程。然后,该程,称为主线程。然后,该线程可以创建其他的线程,线程可以创建其他的线程,而这些线程又能创建更多的而这些线程又能创建更多的线程。线程。 图1.1 单CPU分时地运行进程中的各个线程2网络应用进程在网络体系结构中的位置网络应用进程在网络体系结构中的位置 从计算机网络体系结构的角度来看,从计算

5、机网络体系结构的角度来看,网络应用进网络应用进程程处于网络层次结构的最上层。处于网络层次结构的最上层。 从功能上,可以将网络应用程序分为两部分从功能上,可以将网络应用程序分为两部分: 一部分是专门负责网络通信的模块,它们与网络一部分是专门负责网络通信的模块,它们与网络协议栈相连接,借助网络协议栈提供的服务完成网络协议栈相连接,借助网络协议栈提供的服务完成网络上数据信息的交换。上数据信息的交换。 另一部分是面向用户或者作其他处理的模块,它另一部分是面向用户或者作其他处理的模块,它们接收用户的命令,或者对借助网络传输过来的数据们接收用户的命令,或者对借助网络传输过来的数据进行加工,这两部分模块相互

6、配合,来实现网络应用进行加工,这两部分模块相互配合,来实现网络应用程序的功能。程序的功能。 图1.2 网络应用程序在网络体系结构中的位置 网络应用程序最终要实现网络资源的网络应用程序最终要实现网络资源的共享,共享的基础就是必须能够共享,共享的基础就是必须能够通过网络通过网络轻松地传递各种信息轻松地传递各种信息。 网络编程首先要解决网间进程通信的网络编程首先要解决网间进程通信的问题。然后才能在通信的基础上开发各种问题。然后才能在通信的基础上开发各种应用功能。应用功能。3实现网间进程通信必须解决的问题实现网间进程通信必须解决的问题 网间进程通信是指网络中不同主机中的应网间进程通信是指网络中不同主机

7、中的应用进程之间的相互通信问题,网间进程通信必用进程之间的相互通信问题,网间进程通信必须解决以下问题:须解决以下问题: 网间进程的标识问题网间进程的标识问题 进程进程ID 如何与网络协议栈连接的问题如何与网络协议栈连接的问题 套接字编程接口套接字编程接口 多重协议的识别问题多重协议的识别问题 地址格式地址格式 不同的通信服务的问题不同的通信服务的问题TCP/IP 可靠数据流、不可靠数据报可靠数据流、不可靠数据报(1)-(4)1传输层在网络通信中的地位传输层在网络通信中的地位 图图1.3说明了基于说明了基于TCP/IP协议栈的进程协议栈的进程之间的通信的情况。之间的通信的情况。 图1.3 网络应

8、用程序在网络体系结构中的位置 1.1.2 因特网中网间进程的标识因特网中网间进程的标识 按照按照OSI七层协议的描述,传输层与网络七层协议的描述,传输层与网络层在功能上的最大区别是传输层提供进程通层在功能上的最大区别是传输层提供进程通信的能力。信的能力。TCP/IP协议提出了传输层协议协议提出了传输层协议端口(端口(protocol port,简称端口)的概念,简称端口)的概念,成功地解决了通信进程的标识问题。成功地解决了通信进程的标识问题。 传输层是计算机网络中,通信主机内部进传输层是计算机网络中,通信主机内部进行独立操作的第一层,是支持端到端的进程行独立操作的第一层,是支持端到端的进程通信

9、的关键的一层。通信的关键的一层。lOSI是是Open System Interconnect的缩的缩写,意为开放式系统互联。国际标准组织写,意为开放式系统互联。国际标准组织(国际标准化组织)制定了(国际标准化组织)制定了OSI模型。这模型。这个模型把网络通信的工作分为个模型把网络通信的工作分为7层,分别层,分别是物理层、数据链路层、网络层、传输层、是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。会话层、表示层和应用层。 传输层与网络层在功能上的最大区别是传输层与网络层在功能上的最大区别是传输层提供进程通信的能力。传输层提供进程通信的能力。TCP/IP协议协议提出了传输层协议端口(

10、提出了传输层协议端口(protocol port,简称端口)的概念,成功地解决了通信进程简称端口)的概念,成功地解决了通信进程的标识问题。的标识问题。 传输层是计算机网络中,通信主机内部进传输层是计算机网络中,通信主机内部进行独立操作的第一层,是支持端到端的进程行独立操作的第一层,是支持端到端的进程通信的关键的一层。通信的关键的一层。2端口的概念端口的概念l端口是端口是TCP/IP协议族中,应用层进程与协议族中,应用层进程与传输层协议实体间的通信接口传输层协议实体间的通信接口l类似于文件描述符,每个端口都拥有一个类似于文件描述符,每个端口都拥有一个叫作端口号(叫作端口号(port number

11、)的整数型标)的整数型标识符识符 从实现的角度讲,端口是一种抽象的软件机从实现的角度讲,端口是一种抽象的软件机制,制,包括一些数据结构和包括一些数据结构和I/O缓冲区。缓冲区。 图1.4 UDP与TCP的报文格式TCP 协议为终端设备提供了面向连接的、可靠的网络服务,协议为终端设备提供了面向连接的、可靠的网络服务, Transmission Control Protocol 传输控制协议传输控制协议UDP 协议为终端设备提供了无连接的、不可靠的数据报服务。协议为终端设备提供了无连接的、不可靠的数据报服务。 User Datagram Protocol 用户数据包协议用户数据包协议从上图可以看出

12、,从上图可以看出,TCP 协议为了保证数据传输的可靠性,相对于协议为了保证数据传输的可靠性,相对于UDP 报文,报文,TCP 报文头部有更多的字段选项。报文头部有更多的字段选项。首先让我们来看一下首先让我们来看一下 TCP 的报文头部主要字段:的报文头部主要字段: 每个每个 TCP 报文头部都包含源端口号(报文头部都包含源端口号(source port)和目的端口)和目的端口号(号(destination port),用于标识和区分源端设备和目的端设备),用于标识和区分源端设备和目的端设备的应用进程。在的应用进程。在TCP/IP 协议栈中,源端口号和目的端口号分别与协议栈中,源端口号和目的端口

13、号分别与源源IP 地址和目的地址和目的IP 地址组成套接字(地址组成套接字(socket),唯一的确定一条),唯一的确定一条TCP 连接。连接。 序列号(序列号(Sequence number)字段用来标识)字段用来标识TCP 源端设备向目源端设备向目的端设备发送的字节流的端设备发送的字节流TCP连接中传送的数据流中的每一个字节都连接中传送的数据流中的每一个字节都编上一个序号。序列号字段的值是指本报文段所发送的数据的第一编上一个序号。序列号字段的值是指本报文段所发送的数据的第一个字节的序号。序列号是一个个字节的序号。序列号是一个32bits 的数。的数。 既然每个传输的字节都被计数,确认序号(

14、既然每个传输的字节都被计数,确认序号(Acknowledgement number,32bits)是期望收到对方的下一个报文段的数据的第一)是期望收到对方的下一个报文段的数据的第一个字节的序号。因此,确认序号应该是上次已成功收到的数据字节个字节的序号。因此,确认序号应该是上次已成功收到的数据字节序列号加序列号加1。 TCP 的流量控制由连接的每一端通过声明的窗口大小的流量控制由连接的每一端通过声明的窗口大小(windows size)来提供。窗口大小用数据包来表示,例如)来提供。窗口大小用数据包来表示,例如Windows size=3, 表示一次可以发送三个数据包。窗口大小起始表示一次可以发送

15、三个数据包。窗口大小起始于确认字段指明的值,是一个于确认字段指明的值,是一个16bits 字段。窗口大小可以调节。字段。窗口大小可以调节。 校验和(校验和(checksum)字段用于校验)字段用于校验TCP 报头部分和数据部分报头部分和数据部分的正确性。的正确性。 最常见的可选字段是最常见的可选字段是 MSS(Maximum Segment Size,最大报,最大报文大小)。文大小)。MSS指明本端所能够接收的最大长度的报文段。当一个指明本端所能够接收的最大长度的报文段。当一个TCP 连接建立时,连接的双方都要通告各自的连接建立时,连接的双方都要通告各自的MSS 协商可以传输协商可以传输的最大

16、报文长度。我们常见的的最大报文长度。我们常见的MSS有有1024(以太网可达(以太网可达1460 字节)字节)字节。字节。 相对于相对于 TCP 报文,报文,UDP 报文只有少量的字段:源端口号、报文只有少量的字段:源端口号、目的端口号、长度、校验和等,各个字段功能和目的端口号、长度、校验和等,各个字段功能和TCP 报文相应字报文相应字段一样。段一样。 UDP 报文没有可靠性保证和顺序保证字段,流量控制字段等,报文没有可靠性保证和顺序保证字段,流量控制字段等,可靠性较差。当然,使用传输层可靠性较差。当然,使用传输层UDP 服务的应用程序也有优势。服务的应用程序也有优势。正因为正因为UDP 协议

17、较少的控制选项,在数据传输过程中,延迟较小,协议较少的控制选项,在数据传输过程中,延迟较小,数据传输效率较高,适合于对可靠性要求并不高的应用程序。数据传输效率较高,适合于对可靠性要求并不高的应用程序。紧急标志紧急标志URG当URG1时,表明紧急指针字段有效。紧急指针是一个正的偏移量,和序列号字段中的值相加表示紧急数据最后一个字节的序号。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。确认标志确认标志ACK只有当ACK1时确认号字段才有效。当ACK0时,确认号无效。当ACK1时TCP报头内的确认号字段内包含的确认编号为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。推标志推标

18、志PSH 该标志置位时,接收端不将该数据进行队列处理,而是尽可能快的将数据转由应用处理。复位标志复位标志RST(Reset) 当RST1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立连接。同步标志同步标志SYN该标志仅在三次握手建立TCP连接时有效。它提示TCP连接的服务端检查序列号,该序列号为TCP连接初始端(一般是客户端)的初始序列编号。终止标志终止标志FIN(FINal)用来释放一个连接。当FIN1时,表明此报文段的发送端的数据已发送完毕,并要求释放连接,结束TCP回话。但对应端口仍处于开放状态,准备接收后续数据。3端口号的分配机制端口号的分配

19、机制 TCP/IP协议采用了全局分配(静态分配)协议采用了全局分配(静态分配)和本地分配(动态分配)相结合的分配方法。对和本地分配(动态分配)相结合的分配方法。对于于TCP,或者,或者UDP,将它们的全部,将它们的全部65535个端个端口号分为口号分为保留端口号保留端口号和和自由端口号自由端口号两部分。两部分。 保留端口的范围是保留端口的范围是01023,又称为,又称为众所周众所周知的端口知的端口或或熟知端口熟知端口(well-known port),),只占少数,采用全局分配或集中控制的方式,由只占少数,采用全局分配或集中控制的方式,由一个公认的中央机构根据需要进行统一分配,静一个公认的中央

20、机构根据需要进行统一分配,静态地分配给因特网上著名的众所周知的服务器进态地分配给因特网上著名的众所周知的服务器进程,并将结果公布于众。程,并将结果公布于众。 表1.1 一些典型的应用层协议分配到的保留端口 TCP的保留端口UDP的保留端口FTP21DNS53HTTP80TFTP69SMTP25SNMP161POP3110 其余的端口号,其余的端口号,1024-65535,称为自,称为自由端口号,采用本地分配,又称为动态分配由端口号,采用本地分配,又称为动态分配的方法。的方法。 总之,总之,TCP或或UDP端口的分配规则是:端口的分配规则是:端口端口0:不使用,或者作为特殊的使用;:不使用,或者

21、作为特殊的使用;端口端口1-255:保留给特定的服务:保留给特定的服务,TCP和和UDP均规均规 定定,小于小于256的端口号才能分配给网上著名的服务;的端口号才能分配给网上著名的服务;端口端口256-1023:保留给其他的服务,如路由;:保留给其他的服务,如路由;端口端口1024-4999:可以用作任意客户的端口;:可以用作任意客户的端口;端口端口5000-65535:可以用作用户的服务器端口。:可以用作用户的服务器端口。 我们可以描述一下,在这样的端口分我们可以描述一下,在这样的端口分配机制下,客户进程配机制下,客户进程C与服务器进程与服务器进程S第第一次通信的情景。图一次通信的情景。图1

22、.5表示了客户与服表示了客户与服务器第一次通信的情况。务器第一次通信的情况。 图1.5 客户与服务器的第一次通信4进程的网络地址的概念进程的网络地址的概念 在因特网络中,用一个三元组可以在全在因特网络中,用一个三元组可以在全局中唯一地标识一个应用层进程:局中唯一地标识一个应用层进程: 应用层进程地址应用层进程地址=(传输层协议,主机(传输层协议,主机的的IP地址,传输层的端口号)地址,传输层的端口号) 这样一个三元组,叫做一个半相关这样一个三元组,叫做一个半相关(half-association),它标识了因特网),它标识了因特网中,进程间通信的一个端点,也把它称为进中,进程间通信的一个端点,

23、也把它称为进程的网络地址。程的网络地址。 5网络中进程通信的标识网络中进程通信的标识 一个完整的网间通信需要一个五元组在一个完整的网间通信需要一个五元组在全局中唯一地来标识:全局中唯一地来标识:(传输层协议,本地机传输层协议,本地机IP地址,本地机传输地址,本地机传输层端口,远地机层端口,远地机IP地址,远地机传输层端口地址,远地机传输层端口) 这个五元组称为一个全相关这个五元组称为一个全相关(association)。即两个协议相同的半)。即两个协议相同的半相关才能组合成一个合适的全相关,或完全相关才能组合成一个合适的全相关,或完全指定一对网间通信的进程。指定一对网间通信的进程。 1面向消息

24、的协议与基于流的协议面向消息的协议与基于流的协议(1)面向消息的协议)面向消息的协议 面向消息的协议以消息为单位在网上传面向消息的协议以消息为单位在网上传送数据,在发送端,消息一条一条地发送,送数据,在发送端,消息一条一条地发送,在接收端,也只能一条一条地接收,每一条在接收端,也只能一条一条地接收,每一条消息是独立的,消息之间存在着边界。消息是独立的,消息之间存在着边界。 1.1.3 网络协议的特征网络协议的特征图1.6 保护消息边界的数据报传输服务 (2)基于流的协议)基于流的协议 基于流的协议不保护消息边界,将数据当基于流的协议不保护消息边界,将数据当作字节流连续地传输,不管实际消息边界是

25、否作字节流连续地传输,不管实际消息边界是否存在。存在。图1.7 无消息边界的流传输服务2面向连接的服务和无连接的服务面向连接的服务和无连接的服务 一个协议可以提供面向连接的服务,或一个协议可以提供面向连接的服务,或者提供无连接的服务。者提供无连接的服务。 面向连接服务是电话系统服务模式的抽面向连接服务是电话系统服务模式的抽象,即每一次完整的数据传输都要经过建立象,即每一次完整的数据传输都要经过建立连接,使用连接,终止连接的过程。连接,使用连接,终止连接的过程。 无连接服务是邮政系统服务的抽象,每无连接服务是邮政系统服务的抽象,每个分组都携带完整的目的地址,各分组在系个分组都携带完整的目的地址,

26、各分组在系统中独立传送。统中独立传送。 3可靠性和次序性可靠性和次序性 可靠性可靠性保证了发送端发出的每个字节都保证了发送端发出的每个字节都能到达既定的接收端,不出错,不丢失,不能到达既定的接收端,不出错,不丢失,不重复,保证数据的完整性,称为保证投递。重复,保证数据的完整性,称为保证投递。 次序性次序性是指对数据到达接收端的顺序进是指对数据到达接收端的顺序进行处理。保护次序性的协议保证接收端收到行处理。保护次序性的协议保证接收端收到数据的顺序就是数据的发送顺序,称为按序数据的顺序就是数据的发送顺序,称为按序递交。递交。 l1.1.4 高效的用户数据报协议高效的用户数据报协议UDP 传输层的传

27、输层的用户数据报协议(用户数据报协议(User Datagram Protocol,UDP)是一种尽力传送的无连接的是一种尽力传送的无连接的不不保障可靠保障可靠的的传输传输服务,服务,是一种保护消息边界的数据是一种保护消息边界的数据的传输。的传输。 1.1.5 可靠的传输控制协议可靠的传输控制协议TCP1可靠性是很多应用的基础可靠性是很多应用的基础 2TCP为应用层提供的服务为应用层提供的服务l 传输控制协议传输控制协议 (Transmission Control Protocol,TCP)应用层进程应用层进程提提供一个面向连接的、供一个面向连接的、端到端的、端到端的、完全可靠完全可靠的(无差

28、错、无丢失、无重复或失序)的(无差错、无丢失、无重复或失序)全全双工双工的流传输服务。的流传输服务。 l全双工全双工是通讯传输的一个术语是通讯传输的一个术语 l单工单工就是在同一时间只允许一方向另一方传送信息,而就是在同一时间只允许一方向另一方传送信息,而另一方不能向一方传送另一方不能向一方传送 l全双工全双工(Full Duplex)是)是 在微处理器与外围设备之间在微处理器与外围设备之间采用发送线和接受线各自独立的方法,可以使数据在两个方采用发送线和接受线各自独立的方法,可以使数据在两个方向上同时进行传送操作。指在发送数据的同时也能够接收数向上同时进行传送操作。指在发送数据的同时也能够接收

29、数据,两者同步进行,这好像我们平时打电话一样,说话的同据,两者同步进行,这好像我们平时打电话一样,说话的同时也能够听到对方的声音。目前的网卡一般都支持全双工。时也能够听到对方的声音。目前的网卡一般都支持全双工。 l半双工半双工(Half Duplex),所谓半双工就是指一个时间),所谓半双工就是指一个时间段内只有一个动作发生,举个简单例子,一条窄窄的马路,段内只有一个动作发生,举个简单例子,一条窄窄的马路,同时只能有一辆车通过,当目前有两量车对开,这种情况下同时只能有一辆车通过,当目前有两量车对开,这种情况下就只能一辆先过,等到头儿后另一辆再开,这个例子就形象就只能一辆先过,等到头儿后另一辆再

30、开,这个例子就形象的说明了半双工的原理。早期的对讲机是基于半双工的产品。的说明了半双工的原理。早期的对讲机是基于半双工的产品。随着技术的不断进步,半双工会逐渐退出历史舞台。随着技术的不断进步,半双工会逐渐退出历史舞台。 3TCP利用利用IP数据报实现了端对端的传输服务数据报实现了端对端的传输服务 TCP被称作一种端对端(被称作一种端对端(end to end)协)协议,这是因为它提供一个直接从一台计算机上的议,这是因为它提供一个直接从一台计算机上的应用进程到另一远程计算机上的应用进程的连接。应用进程到另一远程计算机上的应用进程的连接。应用进程能请求应用进程能请求TCP构造一个连接,通过这个连构

31、造一个连接,通过这个连接发送和接收数据,以及关闭连接。由接发送和接收数据,以及关闭连接。由TCP提供提供的连接叫做虚连接(的连接叫做虚连接(virtual connection),),虚连接是由软件实现的。事实上,底层的因特网虚连接是由软件实现的。事实上,底层的因特网系统并不对连接提供硬件或软件支持,只是两台系统并不对连接提供硬件或软件支持,只是两台机器上的机器上的TCP软件模块通过交换消息来实现连接软件模块通过交换消息来实现连接的幻象。的幻象。 图1.8 TCP是一个端到端的传输协议 4三次握手三次握手 为确保连接的建立和终止都是可靠的,为确保连接的建立和终止都是可靠的,TCP使用三次握手(

32、使用三次握手(3-way handshake)的方式来)的方式来建立连接,建立连接,图1.9 TCP的三次握手过程 TCP握手协议握手协议 在在TCP/IP协议中,协议中,TCP协议提供协议提供可靠可靠的连接的连接服务,采用三次握手建立一个连接。服务,采用三次握手建立一个连接。 SYN同步标志同步标志 ACK确认确认l第一次握手:第一次握手:建立连接时,客户端发送建立连接时,客户端发送syn包包(syn=j)到服务器,到服务器,并进入并进入SYN_SEND状态,等待服务器确认;状态,等待服务器确认;l 第二次握手:第二次握手:服务器收到服务器收到syn包,必须确认客户的包,必须确认客户的SYN

33、(ack=j+1),同时自己也发送一个),同时自己也发送一个SYN包(包(syn=k),即),即SYN+ACK包,此时服务器进入包,此时服务器进入SYN_RECV状态;状态; l第三次握手:第三次握手:客户端收到服务器的客户端收到服务器的SYNACK包,向服务器发包,向服务器发送确认包送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入,此包发送完毕,客户端和服务器进入ESTABLISHED(连接已建立的)状态,完成三次握手。(连接已建立的)状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据完成三次握手,客户端与服务器开始传送数据.1.2.1 基于基于TCP/IP协议

34、栈的网络编程协议栈的网络编程 基于基于TCP/IP协议栈的网络编程是最基本的协议栈的网络编程是最基本的网络编程方式,主要是使用各种编程语言,利用网络编程方式,主要是使用各种编程语言,利用操作系统提供的套接字网络编程接口,直接开发操作系统提供的套接字网络编程接口,直接开发各种网络应用程序。本课程主要讲解这种网络编各种网络应用程序。本课程主要讲解这种网络编程的相关技术。程的相关技术。1.2 三类网络编程三类网络编程1.2.2 基于基于WWW应用的网络编程应用的网络编程l WWW应用是因特网上最广泛的应用,应用是因特网上最广泛的应用,称为万维网称为万维网l 基于基于WWW应用的网络编程技术,包应用的

35、网络编程技术,包括所见即所得的网页制作工具,和动态服括所见即所得的网页制作工具,和动态服务器页面的制作技术。务器页面的制作技术。 l如:如:Frontpage、Flash、ASP、JSP、PHP等等1.2.3 基于基于.NET框架的框架的Web Services网络编程网络编程1关于关于.NET平台平台 微软公司在微软公司在2000年年7月公布的月公布的.NET平台是一平台是一个全新的开发框架,集成了微软二十世纪九十年代个全新的开发框架,集成了微软二十世纪九十年代后期的许多技术,后期的许多技术, (1) .NET平台有四组产品平台有四组产品 P13 开发工具开发工具 专用服务器专用服务器 We

36、b 服务服务 设备设备(2) MS.NET顺应了软件工业的趋势,包括以顺应了软件工业的趋势,包括以下几个方面:下几个方面: 分布式计算:分布式计算: 组件化:组件化: 企业级别的服务:企业级别的服务: WEB 范型转移:范型转移: (3) .NET平台由三层软件构成:平台由三层软件构成: 顶层是全新的开发工具顶层是全新的开发工具VS.NET, 中间层包括三部分:中间层包括三部分:.NET服务器、服务器、.NET 服务构件和服务构件和.NET框架。框架。 底层是底层是WINDOWS操作系统。操作系统。 (4) .NET框架的设计要支持的目标框架的设计要支持的目标 简化组件的使用:简化组件的使用:

37、 实现语言的集成:实现语言的集成: 支持支持Internet的互操作:的互操作: 简化软件的开发:简化软件的开发: 简化组件的部署:简化组件的部署: 提高可靠性:提高可靠性: 提高安全性:提高安全性: (1)-(7)2关于关于Web服务服务 什么是什么是Web服务?服务?Web服务是松散耦合的可服务是松散耦合的可复用的软件模块,在复用的软件模块,在Internet上发布后,能通过上发布后,能通过标准的标准的Internet 协议在程序中访问,具有以下的协议在程序中访问,具有以下的特点:特点:P14(1)可复用:)可复用: (2)松散耦合:)松散耦合: (3)封装:)封装:(4)Web服务可以在

38、程序中访问服务可以在程序中访问(5)Web服务在服务在Internet上发布上发布 (1)-(5) 本节着重于因特网上的高级服务,以及提供本节着重于因特网上的高级服务,以及提供这些服务的应用软件。讨论网络应用软件的客户这些服务的应用软件。讨论网络应用软件的客户服务器交互模式,并说明网络协议操作的方式服务器交互模式,并说明网络协议操作的方式为什么需要这种模式。为什么需要这种模式。 这是构筑所有网络应用的基础。这是构筑所有网络应用的基础。1.3 客户服务器交互模式客户服务器交互模式l1.3.1 网络应用软件的地位和功能网络应用软件的地位和功能 因特网仅仅提供一个通用的通信构架,它只因特网仅仅提供一

39、个通用的通信构架,它只负责传送信息,而对于信息传过去干什么用,利负责传送信息,而对于信息传过去干什么用,利用因特网究竟提供什么服务,由哪些计算机来运用因特网究竟提供什么服务,由哪些计算机来运行这些服务,如何确定服务的存在,如何使用这行这些服务,如何确定服务的存在,如何使用这些服务等等问题,都要由应用软件和用户解决。些服务等等问题,都要由应用软件和用户解决。 网络应用进程通信时,普遍采用客户服务网络应用进程通信时,普遍采用客户服务器交互模式(器交互模式(client-server paradigm of interaction),简称),简称C/S模式。模式。这是因特网上这是因特网上应用程序最常

40、用的通信模式。应用程序最常用的通信模式。 1.3.2 客户服务器模式客户服务器模式l C/S模式过程中服务器处于被动服务的地位。模式过程中服务器处于被动服务的地位。首先服务器方要先启动,并根据客户请求提供首先服务器方要先启动,并根据客户请求提供相应服务,服务器的工作过程是:相应服务,服务器的工作过程是: (1)打开一通信通道,并告知服务器所在)打开一通信通道,并告知服务器所在的主的主 机,它愿意在某一公认的地址上(熟知知机,它愿意在某一公认的地址上(熟知知端口,如端口,如FTP为为21)接收客户请求。)接收客户请求。 (2)等待客户的请求到达该端口。)等待客户的请求到达该端口。 (1)-(5)

41、 (3)服务器服务器接收到服务请求,处理该请求并发接收到服务请求,处理该请求并发送应答信号。为了能并发地接收多个客户的服务请送应答信号。为了能并发地接收多个客户的服务请求,要激活一个新进程或新线程来处理这个客户请求,要激活一个新进程或新线程来处理这个客户请求(如求(如UNIX系统中用系统中用fork、exec)。服务完成)。服务完成后,关闭此新进程与客户的通信链路,并终止。后,关闭此新进程与客户的通信链路,并终止。 (4)返回第二步,等待并处理另一客户请求。)返回第二步,等待并处理另一客户请求。 (5)在特定的情况下,关闭服务器。)在特定的情况下,关闭服务器。 客户方采取的是主动请求方式,其工

42、作过程是:客户方采取的是主动请求方式,其工作过程是:(1)打开一通信通道,并连接到服务器所在主)打开一通信通道,并连接到服务器所在主机的特定监听端口。机的特定监听端口。(2)向服务器发送请求报文,等待并接收应答;)向服务器发送请求报文,等待并接收应答;继续提出请求,与服务器的会话按照应用协议继续提出请求,与服务器的会话按照应用协议进行。进行。(3)请求结束后,关闭通信通道并终止。)请求结束后,关闭通信通道并终止。(1)-(3)表表1.2 一些著名的网络应用一些著名的网络应用网络应用客户端软件服务器软件应用层协议电子邮件电子邮件foxmail电子邮件服务电子邮件服务器器SMTP、Pop3文件传输

43、文件传输cutFTP文件传输服务文件传输服务器器FTPWWW浏浏览览IE浏览器浏览器IIS服务器服务器HTTP 客户软件和服务器软件通常还具有以下一些客户软件和服务器软件通常还具有以下一些主要特点:主要特点: 1客户软件客户软件(1)在进行网络通信时临时成为客户,但它也可)在进行网络通信时临时成为客户,但它也可在本地进行其他的计算。在本地进行其他的计算。(2)被用户调用,只为一个会话运行。在打算通)被用户调用,只为一个会话运行。在打算通信时主动向远地服务器发起通信。信时主动向远地服务器发起通信。1.3.3 客户与服务器的特性客户与服务器的特性(1)-(5)(3)能访问所需的多种服务,但在某一时

44、刻只)能访问所需的多种服务,但在某一时刻只能与一个远程服务器进行主动通信。能与一个远程服务器进行主动通信。(4)主动地启动与服务器的通信。)主动地启动与服务器的通信。(5)在用户的计算机上运行,不需要特殊的硬)在用户的计算机上运行,不需要特殊的硬件和很复杂的操作系统。件和很复杂的操作系统。 (1)是一种专门用来提供某种服务的程序,可同时处理多)是一种专门用来提供某种服务的程序,可同时处理多个远地客户的请求。个远地客户的请求。(2)当系统启动时即自动调用,并且连续运行着,不断地)当系统启动时即自动调用,并且连续运行着,不断地为多个会话服务。为多个会话服务。(3)接受来自任何客户的通信请求,但只提

45、供一种服务。)接受来自任何客户的通信请求,但只提供一种服务。(4)被动地等待并接受来自多个远端客户的通信请求。)被动地等待并接受来自多个远端客户的通信请求。(5)在共享计算机上运行,一般需要强大的硬件和高级的)在共享计算机上运行,一般需要强大的硬件和高级的操作系统支持。操作系统支持。2服务器软件服务器软件(1)-(5)(1)客户和服务器都是软件进程,)客户和服务器都是软件进程,C/S模式是模式是网络上通过进程通信建立分布式应用的常用模型。网络上通过进程通信建立分布式应用的常用模型。(2)非对称性:服务器通过网络提供服务,客)非对称性:服务器通过网络提供服务,客户通过网络使用服务,这种不对称性体

46、现在软件户通过网络使用服务,这种不对称性体现在软件结构和工作过程上。结构和工作过程上。3基于因特网的基于因特网的C/S模式的应用程序的特点模式的应用程序的特点(1)-(7)(3)对等性:客户和服务器必有一套共识的约对等性:客户和服务器必有一套共识的约定,必与以某种应用层协议相联,并且协议必定,必与以某种应用层协议相联,并且协议必须在通信的两端实现。比如浏览器和须在通信的两端实现。比如浏览器和3W服务器服务器就都基于就都基于HTTP超文本传输协议。超文本传输协议。 (4)服务器的被动性:服务器必须先行启动,服务器的被动性:服务器必须先行启动,时刻监听,日夜值守,及时服务,只要有客户时刻监听,日夜

47、值守,及时服务,只要有客户请求,就立即处理并响应,回传信息。但决不请求,就立即处理并响应,回传信息。但决不主动提供服务。主动提供服务。(5)客户机的主动性:客户机可以随时提出请求,)客户机的主动性:客户机可以随时提出请求,通过网络得到服务,也可以关机走人,一次请求与通过网络得到服务,也可以关机走人,一次请求与服务的过程是由客户机首先激发的。服务的过程是由客户机首先激发的。(6)一对多:一个服务器可以为多个客户机服务,)一对多:一个服务器可以为多个客户机服务,客户机也可以打开多个窗口,连接多个服务器。客户机也可以打开多个窗口,连接多个服务器。(7)分布性与共享性:资源在服务器端组织与存)分布性与

48、共享性:资源在服务器端组织与存储,通过网络分散在多个客户端使用。储,通过网络分散在多个客户端使用。1服务器程序与服务器类计算机服务器程序与服务器类计算机 服务器(服务器(server)这个术语来指那些运行着)这个术语来指那些运行着的服务程序。的服务程序。 服 务 器 类 计 算 机 (服 务 器 类 计 算 机 ( s e r v e r - c l a s s computer)这一术语来称呼那些运行服务器软)这一术语来称呼那些运行服务器软件的强大的计算机。件的强大的计算机。1.3.4 容易混淆的术语容易混淆的术语2客户与用户客户与用户 “客户客户”(client)和服务器都指的是应用和服务

49、器都指的是应用进程,即计算机软件。进程,即计算机软件。 “用户用户”(user)指的是使用计算机的人。指的是使用计算机的人。 图1.10说明了这些概念的区别。 图1.10 用户、客户、服务器、服务器类计算机 客户与服务器的通信过程一般是这样的:客户与服务器的通信过程一般是这样的:(1)通信之前,服务器应先行启动,并通)通信之前,服务器应先行启动,并通知它的下层协议栈做好接收客户请求的准备,知它的下层协议栈做好接收客户请求的准备,然后被动地等待客户的通信请求,称服务器然后被动地等待客户的通信请求,称服务器处于监听状态。处于监听状态。1.3.5 客户与服务器的通信过程客户与服务器的通信过程(1)-

50、(3)(2)一般是先由客户向服务器发送请求,服务器)一般是先由客户向服务器发送请求,服务器向客户返回应答。客户随时可以主动启动通信,向客户返回应答。客户随时可以主动启动通信,向服务器发出连接请求,服务器接收这个请求,向服务器发出连接请求,服务器接收这个请求,建立了二者的通信关系。建立了二者的通信关系。(3)客户与服务器的通信关系一旦建立,客户和)客户与服务器的通信关系一旦建立,客户和服务器都可发送和接收信息。信息在客户与服服务器都可发送和接收信息。信息在客户与服务器之间可以沿任一方向或两个方向传递。在务器之间可以沿任一方向或两个方向传递。在某些情况下,客户向服务器发送一系列请求,某些情况下,客

51、户向服务器发送一系列请求,服务器相应地返回一系列应答。服务器相应地返回一系列应答。 客户与服务器作为两个软件实体,它们之间客户与服务器作为两个软件实体,它们之间的通信是虚拟的,是概念上的,实际的通信要借的通信是虚拟的,是概念上的,实际的通信要借助下层的网络协议栈来进行。助下层的网络协议栈来进行。1.3.6 网络协议与网络协议与CS模式的关系模式的关系1.3.7 错综复杂的客户服务器交互 在在C/S模式中,存在着三种一个与多个的关系:模式中,存在着三种一个与多个的关系: (1)一个服务器同时为多个客户服务:)一个服务器同时为多个客户服务:(2)一个用户的计算机上同时运行多个连)一个用户的计算机上

52、同时运行多个连接不同服务器的客户接不同服务器的客户(3)一个服务器类的计算机同时运行多个)一个服务器类的计算机同时运行多个服务器:服务器: 图1.11 一台计算机中的多个服务器被多个计算机的客户访问 并发性是客户服务器交互模式的基础,并发并发性是客户服务器交互模式的基础,并发允许多个客户获得同一种服务,而不必等待服务器允许多个客户获得同一种服务,而不必等待服务器完成对上一个请求的处理。这样才能很好地同时为完成对上一个请求的处理。这样才能很好地同时为多个客户提供服务。多个客户提供服务。 图1.12 服务器创建多个线程来为多个客户服务 并发性是指两个或多个事件在同一时间间隔内发生。 1.3.8 服务器如何同时为多个客户服务服务器如何同时为多个客户服务 在一台服务器类的计算机中可以并发地运行在一台服务器类的计算机中可以并发地运行多个服务器进程。它们都要借助协议栈来交换信多个服务器进程。它们都要借助协议栈来交换信息,协议栈就是多个服务器进程传输数据的公用息,协议栈就是多个服务器进程传输数据的公用通道,通道, 这有了一个问题,既然在一个服务器类计算这有了一个问题,既然

温馨提示

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

评论

0/150

提交评论