网络程序设计-复习.ppt

上传人(卖家):三亚风情 文档编号:3223730 上传时间:2022-08-07 格式:PPT 页数:292 大小:8.99MB
下载 相关 举报
网络程序设计-复习.ppt_第1页
第1页 / 共292页
网络程序设计-复习.ppt_第2页
第2页 / 共292页
网络程序设计-复习.ppt_第3页
第3页 / 共292页
网络程序设计-复习.ppt_第4页
第4页 / 共292页
网络程序设计-复习.ppt_第5页
第5页 / 共292页
点击查看更多>>
资源描述

1、1网络编程相关的基本概念网络编程相关的基本概念1.1三类网络编程三类网络编程1.2客户机客户机/服务器交互模式服务器交互模式1.3P2PP2P模式模式 1.421.1.1 1.1.1 网络编程与进程通信网络编程与进程通信1 1进程与线程的基本概念进程与线程的基本概念n 进程是处于运行过程中的程序实例,是操作系统调度和分配资源的基本单位。n 一个进程实体由三部分构成。l程序代码:规定进程所做的计算。l数据:计算的对象。l进程控制块:是操作系统为了控制进程建立的数据结构,用来管理进程的内核对象,系统用来存放关于进程的统计信息。1.1网络编程相关的基本概念网络编程相关的基本概念3n操作系统给进程分配

2、内存空间:l静态分配空间:用来装入进程所有的可执行模块或动态链接库模块的代码及数据。l动态分配空间:栈区空间和堆区空间。n各种计算机应用程序在运行时,都以进程的形式存在,网络应用程序也不例外。nWindows系统不但支持多进程,还支持多线程。l进程是分配资源的单位;l线程是执行和调度的单位n由线程负责执行包含在进程的地址空间中的代码.1 1进程与线程的基本概念进程与线程的基本概念4n一个进程可以包含若干个线程,同时执行进程一个进程可以包含若干个线程,同时执行进程地址空间中的代码。地址空间中的代码。l当创建一个进程时,系统会自动创建它的第一当创建一个进程时,系统会自动创建它的第一个线程,称为主线

3、程。个线程,称为主线程。l然后,该线程可以创建其他的线程,而这些线然后,该线程可以创建其他的线程,而这些线程又能创建更多的线程。程又能创建更多的线程。l每个线程拥有自己的一组每个线程拥有自己的一组CPU寄存器和堆栈。寄存器和堆栈。l进程至少拥有一个线程,否则将被撤销。进程至少拥有一个线程,否则将被撤销。nWindows 2000能在有多个能在有多个CPU的计算机上运行,的计算机上运行,每个每个CPU上运行不同的线程,达到多线程同时上运行不同的线程,达到多线程同时运行。运行。1 1进程与线程的基本概念进程与线程的基本概念51 1进程与线程的基本概念进程与线程的基本概念图图1.1 1.1 单单CP

4、UCPU分时地运行进程中的各个线程分时地运行进程中的各个线程6n从计算机网络体系结构的角度来看,网络应用从计算机网络体系结构的角度来看,网络应用进程处于网络层次结构的最上层。进程处于网络层次结构的最上层。n从功能上,可以将网络应用程序分为两部分:从功能上,可以将网络应用程序分为两部分:l一部分是专门负责网络通信的模块,它们与一部分是专门负责网络通信的模块,它们与网络协议栈相连接,借助网络协议栈提供的服网络协议栈相连接,借助网络协议栈提供的服务完成网络上数据信息的交换。务完成网络上数据信息的交换。l另一部分是面向用户或者作其他处理的模块另一部分是面向用户或者作其他处理的模块,它们接收用户的命令,

5、或者对借助网络传输,它们接收用户的命令,或者对借助网络传输过来的数据进行加工。过来的数据进行加工。n这两部分模块相互配合,来实现网络应用程序这两部分模块相互配合,来实现网络应用程序的功能。的功能。2网络应用进程在网络体系结构中的位置网络应用进程在网络体系结构中的位置7图图1.2 网络应用程序在网络体系结构中的位置网络应用程序在网络体系结构中的位置2网络应用进程在网络体系结构中的位置网络应用进程在网络体系结构中的位置8n网络应用程序这两部分的关系:l通信模块,是网络分布式应用的基础;l其他模块,对网络交换的数据进行加工处理。l网络应用程序要实现网络资源的共享,共享的基网络应用程序要实现网络资源的

6、共享,共享的基础就是必须能够通过网络轻松地传递各种信息。础就是必须能够通过网络轻松地传递各种信息。l网络编程首先要解决网间进程通信的问题,然后才能在通信的基础上开发各种应用功能。2网络应用进程在网络体系结构中的位置网络应用进程在网络体系结构中的位置93实现网间进程通信必须解决的问题实现网间进程通信必须解决的问题 网间进程通信网间进程通信是指网络中不同主机中的应用进是指网络中不同主机中的应用进程之间的相互通信问题,必须解决以下问题:程之间的相互通信问题,必须解决以下问题:l网间进程的标识问题网间进程的标识问题(不能只用进程号标识);l如何与网络协议栈连接的问题如何与网络协议栈连接的问题(通过定义

7、套接字网络编程接口来解决);l多重协议的识别问题多重协议的识别问题(不同协议工作方式不同);l不同通信服务的问题不同通信服务的问题(要求不同,如文件传输要求可靠、无差错、无乱序、无丢失,网络聊天要求不高,可选TCP和UDP服务)。101传输层在网络通信中的地位传输层在网络通信中的地位nTCP/IP协议栈的特点是协议栈的特点是“两头大、中间小两头大、中间小”l应用层有多个应用进程,使用不同应用层协议;l网络接口层,有多种数据链路层协议,支持不同的物理网络连接;l网络层有IP协议,传输层有TCP和UDP协议。n按照按照OSI七层协议的描述,传输层与网络层在功七层协议的描述,传输层与网络层在功能上的

8、最大区别,是传输层提供进程通信的能力。能上的最大区别,是传输层提供进程通信的能力。nTCP/IP协议提出了协议提出了传输层协议端口传输层协议端口(简称端口)(简称端口)的概念,成功地解决了通信进程的标识问题。的概念,成功地解决了通信进程的标识问题。111传输层在网络通信中的地位传输层在网络通信中的地位 传输层是计算机网络中,通信主机内部进行独立传输层是计算机网络中,通信主机内部进行独立操作的第一层,是支持端到端的进程通信的关键的一操作的第一层,是支持端到端的进程通信的关键的一层。层。图图1.3 基于基于TCP/IP协议栈的进程间的通信协议栈的进程间的通信 122 2端口的概念端口的概念n端口是

9、TCP/IP协议族中,应用层进程与传输层协议实体间的通信接口n在OSI七层协议描述中,将其称为应用层进程与传输层协议实体间的服务访问点(SAP)。l应用层进程通过系统调用与某个传输层端口进行绑定,然后通过该端口接收或发送数据。l类似于文件描述符,每个端口都拥有一个叫作端口号(port number)的16位整数型标识符。l可以用端口标识通信的网络应用程序。132 2端口的概念端口的概念图1.4 UDP与TCP的报文格式n传输层TCP和UDP两个协议是完全独立的软件模块,因此各自的端口号也独立。l 使用时必须说明是UDP端口还是TCP端口,两种协议的端口间没有任何联系。l TCP 和UDP都可以

10、提供65536个端口。l 端口是操作系统可分配的一种资源。14n 从实现的角度讲,端口是一种抽象的软件机从实现的角度讲,端口是一种抽象的软件机 制,包括一些数据结构和制,包括一些数据结构和I/OI/O缓冲区。缓冲区。l进程通过系统调用与某端口建立绑定关系后,传输层传给该端口的数据都被相应进程接收,相应进程发给传输层的数据都通过该端口输出。n在在TCP/IP实现中端口操作类似于一般的实现中端口操作类似于一般的I/O操作。操作。l进程获取一个端口,相当于获取本地唯一的I/O文件,可以用一般的读写原语访问。2 2端口的概念端口的概念153端口号的分配机制端口号的分配机制n网络进程通信前必须获知对方的

11、进程地址。网络进程通信前必须获知对方的进程地址。l由于网络应用程序大多采用C/S模式开发,通信总是由客户机发起,因此事先只需让客户机知道服务器进程的端口号即可。lInternet中众所周知的服务是有限的。nTCP/IPTCP/IP协议采用了协议采用了全局分配(静态分配)全局分配(静态分配)和和本本地分配(动态分配)地分配(动态分配)相结合的分配方法。相结合的分配方法。n对于对于TCPTCP,或者,或者UDPUDP,将它们的全部,将它们的全部6553665536个端个端口号分为口号分为保留端口号保留端口号和和自由端口号自由端口号两部分。两部分。16n保留端口号保留端口号:范围是:范围是0-102

12、30-1023,又称为,又称为众所周知众所周知的端口的端口或或熟知端口熟知端口(well-known portwell-known port),只占),只占少数,采用全局分配或集中控制的方式,由一少数,采用全局分配或集中控制的方式,由一个公认的中央机构根据需要进行统一分配,静个公认的中央机构根据需要进行统一分配,静态地分配给因特网上著名的众所周知的服务器态地分配给因特网上著名的众所周知的服务器进程,并将结果公布于众。进程,并将结果公布于众。3端口号的分配机制端口号的分配机制TCP的保留端口UDP的保留端口FTP21DNS53HTTP80TFTP69SMTP25SNMP161POP3110 表1

13、.1 一些典型的应用层协议分配到的保留端口 17n自由端口号自由端口号:范围是范围是1024-655351024-65535,采用本地分配,又,采用本地分配,又称为动态分配的方法。称为动态分配的方法。nTCPTCP或或UDPUDP端口的分配规则是:端口的分配规则是:l端口端口0 0:不使用,或者作为特殊的用途;:不使用,或者作为特殊的用途;l端口端口1-2551-255:保留给特定的服务,:保留给特定的服务,TCPTCP和和UDPUDP均规均规定,小于定,小于256256的端口号才能分配给网上著名的服务;的端口号才能分配给网上著名的服务;l端口端口256-1023256-1023:保留给其他的

14、服务,如路由;:保留给其他的服务,如路由;l端口端口1024-49991024-4999:可以用作任意客户机的端口;:可以用作任意客户机的端口;l端口端口5000-655355000-65535:可以用作用户的服务器端口。:可以用作用户的服务器端口。3端口号的分配机制端口号的分配机制183端口号的分配机制端口号的分配机制 我们可以描述一下,在这样的端口分配机制下,客户机进程C与服务器进程S第一次通信的情景。图1.5 客户机与服务器的第一次通信19n为确保服务器进程为多个客户机进程服务,服为确保服务器进程为多个客户机进程服务,服务器的保留端口是专门用来监听客户端的连接务器的保留端口是专门用来监听

15、客户端的连接请求的。请求的。n当服务器从保留端口接收到一个客户机的请求当服务器从保留端口接收到一个客户机的请求后,立即创建另外一个线程,并为这个线程分后,立即创建另外一个线程,并为这个线程分配一个自由端口(在配一个自由端口(在500050006553565535选择分配),选择分配),然后继续接收新的客户机请求。然后继续接收新的客户机请求。3端口号的分配机制端口号的分配机制204 4进程的网络地址的概念进程的网络地址的概念n 在因特网中,用一个三元组可以在全局中唯一地标在因特网中,用一个三元组可以在全局中唯一地标识一个应用层进程:识一个应用层进程:应用层进程地址应用层进程地址=(传输层协议,主

16、机的(传输层协议,主机的IPIP地址,地址,传输层的端口号)传输层的端口号)n这样一个三元组,叫做一个这样一个三元组,叫做一个半相关半相关(half-half-associationassociation),它标识了因特网中进程间通信的一),它标识了因特网中进程间通信的一个端点,也把它称为个端点,也把它称为进程的网络地址进程的网络地址。215 5网络中进程通信的标识网络中进程通信的标识n 一个完整的网间通信需要一个五元组在全局中唯一个完整的网间通信需要一个五元组在全局中唯一地来标识:一地来标识:(传输层协议,本地机传输层协议,本地机IPIP地址,本地机传输层端口,地址,本地机传输层端口,远地机

17、远地机IPIP地址,远地机传输层端口地址,远地机传输层端口)n这个五元组称为一个这个五元组称为一个全相关全相关(associationassociation),即),即两个协议相同的半相关才能组合成一个合适的全两个协议相同的半相关才能组合成一个合适的全相关,或完全指定一对网间通信的进程。相关,或完全指定一对网间通信的进程。221面向连接的服务和无连接的服务面向连接的服务和无连接的服务n协议可以提供面向连接的服务,或者提供无协议可以提供面向连接的服务,或者提供无连接的服务。连接的服务。n面向连接服务面向连接服务是电话系统服务模式的抽象,是电话系统服务模式的抽象,即每一次完整的数据传输都要经过建立

18、连接即每一次完整的数据传输都要经过建立连接,使用连接,终止连接的过程。,使用连接,终止连接的过程。l传输过程中数据分组不携带目的地址;lTCP提供面向连接的虚电路服务,建立连接时确定通信路径,并经过协商做好通信准备。l连接需要很多开销,如差错控制和流量控制。23n无连接服务无连接服务,是邮政系统服务的抽象,每个分组,是邮政系统服务的抽象,每个分组都携带完整的目的地址,各分组在系统中独立传都携带完整的目的地址,各分组在系统中独立传送。送。l不能保证分组按序到达,不能进行分组出错的恢复与重传,不能保证传输的可靠性。l通信前不需建立连接,不管接收端是否做好准备接收数据。lUDP是无连接协议。1面向连

19、接的服务和无连接的服务面向连接的服务和无连接的服务242 2面向消息的协议与基于流的协议面向消息的协议与基于流的协议(1 1)面向消息的协议)面向消息的协议n 面向消息的协议以消息为单位在网上传送数据,在面向消息的协议以消息为单位在网上传送数据,在发送端,消息一条一条地发送,在接收端,也只能发送端,消息一条一条地发送,在接收端,也只能一条一条地接收,每一条消息是独立的,消息之间一条一条地接收,每一条消息是独立的,消息之间存在着边界。存在着边界。n保护消息边界保护消息边界:是指传输协议把数据当作一条独立:是指传输协议把数据当作一条独立的消息在网上传输,接收端只能接收独立的消息,的消息在网上传输,

20、接收端只能接收独立的消息,即接收端一次只能接收发送端发出的一个数据包。即接收端一次只能接收发送端发出的一个数据包。25图1.6 保护消息边界的数据报传输服务 nUDP就是面向消息的,适合于交换结构化数据。就是面向消息的,适合于交换结构化数据。(1 1)面向消息的协议)面向消息的协议26(2 2)基于流的协议)基于流的协议n基于流的协议不保护消息边界,将数据当作字节基于流的协议不保护消息边界,将数据当作字节流连续地传输,不管实际消息边界是否存在。流连续地传输,不管实际消息边界是否存在。l发送端允许系统将原始消息分解成几条小消息分别发送,或把几条消息积累在一起形成大数据包发送,多次发送的数据统一编

21、号。l如果发送端连续发送数据,接收端有可能在一次接收动作中接收两个或更多的数据包。l只要数据一到达,网络堆栈就开始读取并将其缓存,等待进程处理。27(2 2)基于流的协议)基于流的协议 图1.7 无消息边界的流传输服务nTCP是基于流的协议。是基于流的协议。n流传输,把数据当作一串数据流,不认为数据是一个一个的消息,编程时不要忽略这一点。28l1.1.4 1.1.4 高效的用户数据报协议高效的用户数据报协议UDPUDPn用户数据报协议用户数据报协议(User Datagram Protocol,UDP),是一种尽力传送的、无连接的、不保障),是一种尽力传送的、无连接的、不保障可靠的传输服务,是

22、一种保护消息边界的数据传可靠的传输服务,是一种保护消息边界的数据传输。输。l基于UDP的应用程序在高可靠性、低延迟的网络中运行良好;l在网络层的基础上只增加了端口号的支持;l传输效率高,适用于交易型的应用程序,如TFTP、SNMP、DNS等应用进程。291可靠性是很多应用的基础 2TCP为应用层提供的服务 传输控制协议传输控制协议TCPTCP (Transmission Control(Transmission Control ProtocolProtocol,TCP)TCP)为应用层进程提供一个面向连接为应用层进程提供一个面向连接的、端到端的、完全可靠的(无差错、无丢失、的、端到端的、完全可

23、靠的(无差错、无丢失、无重复或失序)全双工的流传输服务。无重复或失序)全双工的流传输服务。nIP为TCP提供的是无连接的、尽力传送的、不可靠的传输服务,TCP为了向应用层进程提供可靠的传输服务,采取了一系列保障机制。nTCP提供流传输服务,对传输数据的内部结构一无所知,只负责将字节流原封不动的传送到对方的应用进程。303 3TCPTCP利用利用IPIP数据报实现了端对端的传输服务数据报实现了端对端的传输服务nTCPTCP被称作一种端对端(被称作一种端对端(end to endend to end)协议,因为它)协议,因为它提供一个直接从一台计算机上的应用进程到另一远程计提供一个直接从一台计算机

24、上的应用进程到另一远程计算机上的应用进程的连接。算机上的应用进程的连接。l应用进程能请求应用进程能请求TCPTCP构造一个连接,通过这个连构造一个连接,通过这个连 接发接发送和接收数据,以及关闭连接。送和接收数据,以及关闭连接。l由由TCPTCP提供的连接叫做虚连接,虚连接是由软件实现提供的连接叫做虚连接,虚连接是由软件实现的。事实上,底层的因特网系统并不对连接提供硬件或的。事实上,底层的因特网系统并不对连接提供硬件或软件支持,只是两台机器上的软件支持,只是两台机器上的TCPTCP软件模块通过交换消软件模块通过交换消息来实现连接的虚拟。息来实现连接的虚拟。31图1.8 TCP是一个端到端的传输

25、协议 3 3TCPTCP利用利用IPIP数据报实现了端对端的传输服务数据报实现了端对端的传输服务n从从TCP角度来看,整个角度来看,整个Internet是一个通信系统,是一个通信系统,能够接收和传递消息,而不会改变和干预消息的能够接收和传递消息,而不会改变和干预消息的内容。内容。324 4三次握手三次握手n为确保连接的建立和终止都是可靠的,为确保连接的建立和终止都是可靠的,TCPTCP使用三使用三次握手(次握手(3-way handshake3-way handshake)的方式来建立连接)的方式来建立连接.图图1.9 TCP1.9 TCP的三次握手过程的三次握手过程 33n已证明:三次握手是

26、在包丢失、重复和延迟的情已证明:三次握手是在包丢失、重复和延迟的情况下确保非模糊协定的充要条件。况下确保非模糊协定的充要条件。l如图所示,前两个被称为SYN段。lTCP会重发丢失的SYN段。l三次握手确保TCP不会打开或关闭一个连接,直到两端达成一致。l创建一个连接的三次握手中,要求每一端产生一个随机32位序列号。l在计算机重启后,尝试建立一个新的TCP连接时,要选择一个新的随机数,可保证不受老连接的重复或延迟包的影响。4 4三次握手三次握手341.2.1 1.2.1 基于基于TCP/IPTCP/IP协议栈的网络编程协议栈的网络编程三类网络编程三类网络编程1.2n最基本的网络编程方式,主要是使

27、用各种编程语最基本的网络编程方式,主要是使用各种编程语言,利用操作系统提供的套接字网络编程接口,言,利用操作系统提供的套接字网络编程接口,直接开发各种网络应用程序。直接开发各种网络应用程序。n本门课程主要讲解这种网络编程的相关技术。本门课程主要讲解这种网络编程的相关技术。l直接利用网络协议栈提供的服务来实现网络应用,层次比较低,编程者自由度比较大,在利用套接字实现了网络进程通信以后,可以编写各种网络应用程序。l需掌握套接字网络编程接口及应用层协议。35n WWW称为万维网或Web,是因特网上最广泛的应用。n 基于WWW应用的网络编程技术,包括:l所见即所得的静态网页制作;uHTML、JavaS

28、cript等。l动态服务器页面的制作。uASP、PHP、JSP、J2EE、Hibernate、Spring、Struts等技术。36客户机客户机/服务器交互模式服务器交互模式1.3n本节着重于因特网上的高级服务,以及提供本节着重于因特网上的高级服务,以及提供这些服务的应用软件。这些服务的应用软件。n讨论网络应用软件的客户机服务器交互模讨论网络应用软件的客户机服务器交互模式,并说明网络协议操作的方式为什么需要式,并说明网络协议操作的方式为什么需要这种模式。这种模式。n这是构筑所有网络应用的基础。这是构筑所有网络应用的基础。37n网络应用进程通信时,普遍采用客户机服务器网络应用进程通信时,普遍采用

29、客户机服务器交互模式(交互模式(client-server paradigm of client-server paradigm of interactioninteraction),简称),简称C/SC/S模式模式.n这是因特网上应用程序最常用的通信模式。这是因特网上应用程序最常用的通信模式。nC/S模式的建立基于以下两点:l客户机与服务器之间的关系是非对等的,服务器提供资源,客户机请求共享这些资源;l网间进程通信是完全异步的,互相通信的进程间既不存在父子关系,又没有共享内存缓冲区,需要一种机制为二者间的数据交换提供同步.381、服务器的工作过程nC/S模式过程中服务器处于被动服务的地位。n

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

31、送请求报文,等待并接收应答;继续提出请求,与服务器的会话按照应用协议进行。l请求结束后,关闭通信通道并终止。40表表1.2 一些常见的网络应用一些常见的网络应用网络应用客户端软件服务器软件应用层协议电子邮件foxmail电子邮件服务器SMTP、Pop3文件传输CuteFTP文件传输服务器FTPWWW浏览IE浏览器IIS服务器HTTP411.3.3 1.3.3 客户机与服务器的特性客户机与服务器的特性n客户机软件的特点客户机软件的特点n服务器软件的特点服务器软件的特点n基于因特网的基于因特网的C/S模式的应用程序的特点模式的应用程序的特点421.3.3 1.3.3 客户机与服务器的特性客户机与服

32、务器的特性1 1客户机软件特点客户机软件特点 在进行网络通信时临时成为在进行网络通信时临时成为客户机,客户机,但它也可在但它也可在本地进行其他的计算。本地进行其他的计算。被用户调用,只为一个会话运行。在打算通信时被用户调用,只为一个会话运行。在打算通信时主动向远地服务器发起通信。主动向远地服务器发起通信。能访问所需的多种服务,但在某一时刻只能与一能访问所需的多种服务,但在某一时刻只能与一个远程服务器进行主动通信。个远程服务器进行主动通信。主动地启动与服务器的通信。主动地启动与服务器的通信。在用户的计算机上运行,不需要特殊的硬件和很在用户的计算机上运行,不需要特殊的硬件和很复杂的操作系统。复杂的

33、操作系统。432 2服务器软件的特点服务器软件的特点 是一种专门用来提供某种服务的程序,可同时处是一种专门用来提供某种服务的程序,可同时处理多个远端客户机的请求。理多个远端客户机的请求。当系统启动时即自动调用,并且连续运行着,不当系统启动时即自动调用,并且连续运行着,不断地为多个会话服务。断地为多个会话服务。接受来自任何客户机的通信请求,但只提供一种接受来自任何客户机的通信请求,但只提供一种服务。服务。被动地等待并接受来自多个远端客户机的通信请被动地等待并接受来自多个远端客户机的通信请求。求。在共享计算机上运行,一般需要强大的硬件和高在共享计算机上运行,一般需要强大的硬件和高级的操作系统支持。

34、级的操作系统支持。1.3.3 1.3.3 客户机与服务器的特性客户机与服务器的特性443 3基于因特网的基于因特网的C/SC/S模式的应用程序的特点模式的应用程序的特点 客户机和服务器都是软件进程客户机和服务器都是软件进程,C/S模式是网络上通过进程通信建立分布式应用的常用模型。非对称性:非对称性:服务器通过网络提供服务,客户机通过网络使用服务,这种不对称性体现在软件结构和工作过程上。对等性:对等性:客户机和服务器必有一套共识的约定,必与某种应用层协议相联,并且协议必须在通信的两端实现。比如浏览器和3W服务器就都基于HTTP超文本传输协议。1.3.3 1.3.3 客户机与服务器的特性客户机与服

35、务器的特性45 服务器的被动性:服务器的被动性:服务器必须先行启动,时刻监听,日夜值守,及时服务,只要有客户机请求,就立即处理并响应,回传信息,但决不主动提供服务。客户机的主动性:客户机的主动性:客户机可以随时提出请求,通过网络得到服务,也可以关机走人,一次请求与服务的过程是由客户机首先激发的。一对多:一对多:一个服务器可以为多个客户机服务,客户机也可以打开多个窗口,连接多个服务器。分布性与共享性:分布性与共享性:资源在服务器端组织与存储,通过网络为分散的多个客户机使用。1.3.3 1.3.3 客户机与服务器的特性客户机与服务器的特性3 3基于因特网的基于因特网的C/SC/S模式的应用程序的特

36、点模式的应用程序的特点461.3.4 1.3.4 容易混淆的术语容易混淆的术语1服务器程序与服务器类计算机服务器程序与服务器类计算机n服务器(服务器(serverserver)这个术语来指那些运行着的服务)这个术语来指那些运行着的服务器器程序。程序。n服务器类计算机(服务器类计算机(server-class computerserver-class computer)这一术语)这一术语来称呼那些运行服务器软件的强大的计算机。来称呼那些运行服务器软件的强大的计算机。47图1.10 用户和客户机、服务器和服务器类计算机 2客户机与用户n“客户机”(client)和服务器都指的是应用进程,即计算机软

37、件。n“用户”(user)指的是使用计算机的人。1.3.4 1.3.4 容易混淆的术语容易混淆的术语48n客户机与服务器的通信过程一般是这样的:客户机与服务器的通信过程一般是这样的:通信之前,服务器应先行启动,并通知它的下层协议栈做好接收客户机请求的准备,然后被动地等待客户机的通信请求,称服务器处于监听状态。一般是先由客户机向服务器发送请求,服务器向客户机返回应答。客户机随时可以主动启动通信,向服务器发出连接请求,服务器接收这个请求,建立了二者的通信关系。客户机与服务器的通信关系一旦建立,客户机和服务器都可发送和接收信息。信息在客户机与服务器之间可以沿任一方向或两个方向传递。在某些情况下,客户

38、机向服务器发送一系列请求,服务器相应地返回一系列应答。49n客户机与服务器作为两个软件实体,它们之间的通信是虚拟的,是概念上的,实际的通信要借助下层的网络协议栈来进行。n网络应用进程与应用层协议间的关系:l为了解决具体应用问题而彼此通信的进程,称为网络应用进程;l应用层协议并不解决任何具体问题,而是规定了网络应用进程通信时必须遵守的约定。l应用层协议在网络应用进程之下,并为网络应用进程服务,帮助应用进程组织数据。50n在C/S模式中,存在着三种一个与多个的关系:一个服务器同时为多个客户机服务;一个用户的计算机上同时运行多个连接不同服务器的客户机;一个服务器类的计算机同时运行多个服务器。51图1

39、.11 一台计算机中的多个服务器被多个计算机的客户机访问 52n并发性是客户机服务器交互模式的基础,并发允许多个客户机获得同一种服务,而不必等待服务器完成对上一个请求的处理。这样才能很好地同时为多个客户机提供服务。n在设计并发服务器时,可以让主服务器线程为每个客户机请求创建一个新的子服务线程。n一般服务器程序代码由两部分组成,第一部分代码负责监听并接收客户请求,还为客户机请求创建新的服务线程;另一部分代码负责处理单个客户机请求,如与客户机交换数据,并提供具体的服务。53图1.12 服务器创建多个线程来为多个客户机服务 54 在一台服务器类的计算机中可以并发地运行多在一台服务器类的计算机中可以并

40、发地运行多个服务器进程。它们都要借助协议栈来交换信息,个服务器进程。它们都要借助协议栈来交换信息,协议栈就是多个服务器进程传输数据的公用通道,协议栈就是多个服务器进程传输数据的公用通道,这有了一个问题,既然在一个服务器类计算机这有了一个问题,既然在一个服务器类计算机中运行着多个服务器,如何能让客户机无二义性地中运行着多个服务器,如何能让客户机无二义性地指明所希望的服务?指明所希望的服务?55图1.13 沙漏计时器形状的TCP/IP协议族 56n这个问题由传输协议栈提供的一套机制来解决。这个问题由传输协议栈提供的一套机制来解决。n这种机制必须赋给每个服务一个唯一的标识,并这种机制必须赋给每个服务

41、一个唯一的标识,并要求服务器和客户机都使用这个标识。要求服务器和客户机都使用这个标识。l当服务器开始执行时,它在本地的协议栈软件中登记,指明它所提供的服务的标识。l当客户机与远程服务器通信时,客户机在提出请求时,通过这个标识来指定所希望的服务。l客户机端机器的传输协议栈软件将该标识传给服务器端机器。l服务器端机器的传输协议栈则根据该标识来决定由哪个服务器程序来处理这个请求。57P2PP2P模式模式 1.4n随着应用规模的不断扩大,软件复杂度不断提高,面对巨大的用户群,单服务器成了性能的瓶颈,为了解决这些问题,就出现了P2P技术。nP2P技术就是一种在计算机之间直接进行资源和服务的共享,不需要服

42、务器介入的网络技术。在P2P网络中,每台计算机同时充当着Server和Client的角色,当需要其他电脑的文件和服务时,两台电脑直接建立连接,本机是Client;而当响应其他电脑的资源要求时,本机又成为提供资源与服务的Server。58套接字网络编程接口的产生与发展套接字网络编程接口的产生与发展2.1套接字编程的基本概念套接字编程的基本概念2.2面向连接的套接字编程面向连接的套接字编程2.3无连接的套接字编程无连接的套接字编程 2.4592.1.3 套接字编程接口的两种实现方式n采用两种实现套接字编程接口的方式:采用两种实现套接字编程接口的方式:l在操作系统的内核中增加相应的软件来实现;l通过

43、开发操作系统之外的函数库来实现。n在在BSD UNIX及起源于它的操作系统中,套接字及起源于它的操作系统中,套接字函数是操作系统本身的功能调用,是操作系统内函数是操作系统本身的功能调用,是操作系统内核的一部分。核的一部分。l其他操作系统供应商为了不修改基本操作系统,其他操作系统供应商为了不修改基本操作系统,开发了套接字库(开发了套接字库(Socket Library)来提供套接字)来提供套接字编程接口。编程接口。l套接字库中的每个过程具有与UNIX套接字函数相同的名字与参数,向没有本机套接字的操作系统上的应用程序提供套接字编程接口。60套接字编程的基本概念套接字编程的基本概念2.22.2.1

44、2.2.1 什么是套接字(什么是套接字(SOCKETSOCKET)图2.1 电插座与电话插座的作用n套接口是对网络中不同主机上应用进程之间进行套接口是对网络中不同主机上应用进程之间进行双向通信的端点的抽象。双向通信的端点的抽象。n一个套接口就是网络上进程通信的一端,提供了一个套接口就是网络上进程通信的一端,提供了应用层进程利用网络协议栈交换数据的机制。应用层进程利用网络协议栈交换数据的机制。61图图2.2 2.2 应用进程、套接口、网络协议栈及操作系统的关系应用进程、套接口、网络协议栈及操作系统的关系 2.2.1 2.2.1 什么是套接字(什么是套接字(SOCKETSOCKET)l两个应用进程

45、只要分别连接到自己的套接字,就可以通过网络进行通信了,不用去管复杂的网络结构及数据传输过程。62n从多个层面来理解套接字这个概念的内涵从多个层面来理解套接字这个概念的内涵l从所处的地位来讲,套接字上连应用进程,下连套接字上连应用进程,下连网络协议栈,是应用程序通过网络协议栈进行通网络协议栈,是应用程序通过网络协议栈进行通信的接口,是应用程序与网络协议栈交互的接口信的接口,是应用程序与网络协议栈交互的接口.l从实现的角度来讲,非常复杂。套接字是一个复,非常复杂。套接字是一个复杂的软件机构,包含了一定的数据结构,包含许杂的软件机构,包含了一定的数据结构,包含许多选项,由操作系统内核管理。多选项,由

46、操作系统内核管理。l从使用的角度来讲,非常简单。对套接字的操作,非常简单。对套接字的操作形成了一种网络应用程序的编程接口(形成了一种网络应用程序的编程接口(API),提提供了一组系统调用或库函数,可以用于供了一组系统调用或库函数,可以用于构造套接字、安装绑定套接字、连接套接字、通过套接字交换数据、关闭套接字,实现各种分布式应用。n套接字编程接口是一套操作套接字的编程接口函数,是一套操作套接字的编程接口函数,套接字是它的操作对象。套接字是它的操作对象。632.2.2 套接字的特点1通信域n通信域:是一个计算机网络的范围,在这个范围中,所有的计算机使用同一种网络体系结构及协议栈。n套接字存在于通信

47、域中。套接字存在于通信域中。l套接字通常只和同一域中的套接字交换数据。套接字通常只和同一域中的套接字交换数据。l如果数据交换要穿越域的边界,就一定要执行如果数据交换要穿越域的边界,就一定要执行某种解释程序。某种解释程序。n这里,仅仅针对这里,仅仅针对Internet域,并且使用域,并且使用Internet协议族(即协议族(即TCP/IP协议族)来通信。协议族)来通信。642 2套接字的三种类型套接字的三种类型n每一个正被使用的套接字都有它确定的类型。只有相同类型的套接字才能相互通信。(1)数据报套接字(数据报套接字(Datagram SOCKET)n数据报套接字提供无连接的、不保证可靠的、独立

48、的数据报传输服务。n在Internet通信域中,数据报套接字使用UDP数据报协议形成的进程间通路,具有UDP协议为上层所提供的服务的所有特点。n具有多播通信的能力。65图图2.3 2.3 在在InternetInternet通信域中,数据报套接字基于通信域中,数据报套接字基于UDPUDP协议协议(1 1)数据报套接字)数据报套接字66n流式套接字提供双向的、有序的、无重复的、无记录边界的可靠的数据流传输服务。n在Internet通信域中,流式套接字使用TCP协议形成的进程间通路,具有TCP协议为上层所提供的服务的所有特点。n在使用流式套接字传输数据之前,必须在数据的发送端和接收端之间建立连接。

49、n一般用于交换大批量的数据,或者要求数据按照发送的顺序无重复的到达目的地。(2)(2)流式套接字(流式套接字(Stream SOCKETStream SOCKET)67图2.4 在Internet通信域中,流式套接字基于TCP协议(2)(2)流式套接字(流式套接字(Stream SOCKETStream SOCKET)68(3)(3)原始式套接字(原始式套接字(RAW SOCKETRAW SOCKET)n原始式套接字允许对较低层次的协议(如IP、ICMP)直接访问,用于检验新协议的实现。l原始套接字保存了数据包中的完整IP头;l前面两种套接字只能收到用户数据;l因此可以通过原始套接字对数据进行

50、分析。693套接字的创建 套接字由应用层的通信进程创建,并为其服务。每一个套接字都有一个相关的应用进程,操作该套接字的代码是该进程的组成部分。4使用确定的IP地址和传输层端口号n在生成套接字的描述符后,要将套接字与计算机上的特定的IP地址和传输层端口号相关联,这个过程称为绑定。n 一个套接口要使用一个确定的三元组网络地址信息,才能使它在网络中唯一地被标识。701表示套接字地址的三种结构n在套接字编程接口中,定义了三种结构型的数据类型,用来存储协议相关的网络地址,在套接字编程接口的函数调用中要用到它们。(1)通用套接字地址结构sockaddr 针对各种通信域的套接字,用来表示地址的一般格式,然后

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(网络程序设计-复习.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|