资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,网络编程技术,网络编程基础,第,1,章 网络编程基础,本章介绍网络编程相关的基本概念,包括,网络协议分层,进程、线程、进程间通信的概念,因特网中网间进程的标识方法,网络协议的特征,TCP/IP,中用户数据报协议,UDP,和传输控制协议,TCP,的特点,目前的网络编程现状,网络应用程序的交互模式,网络协议分层,网络协议分层的原因,OSI,七层模型,TCP/IP,四层模型,一个问题,放假回家前,你是怎么通知家人、亲朋好友的?,思考题:简单信息的传送,放假前,远方的儿子想给老爸发信息:我大概,x,月,x,日到家,只有导线、电源、电表、灯泡等工具,思考题:简单信息的传送,西安,北海,山高路远,只有一套导线,思考题:简单信息的传送,西安,北海,北京,西藏,家大业大,经不起铺张浪费,郑州,网络协议分层的原因,网络通信中,要考虑的因素很多,比如说组成和分解数据包、数据包寻址、流量控制、信道编码、码字向电信号的转换等等。,如果在同一层里面完全实现,是很困难的,因此设计者考虑用化繁为简的方式来处理,将复杂的系统,分成多个层次来处理,每一个层次只需要按照设计要求完成自己的功能,向上层提供服务接口即可。,OSI,七层模型,应用层,表示层,会话层,传输层,网络层,数据链路层,物理层,各种针对用户需求的应用协议,完成人可识别的数据与机器可识别的数据之间的转换,控制不同的会话过程,数据分包、差错控制、流量控制、拥塞控制等等,数据包从原节点到目的节点的传输,比如路由选择等等,将物理信道转变成可用的逻辑信道,比如寻址、装帧等等,负责物理接口和电气特性等等,OSI,七层模型,应用层,表示层,会话层,传输层,网络层,数据链路层,物理层,怎么样在物理媒介上传输信号,即,0/1,数字信号用什么样的电脉冲、光脉冲、无线波形来表示,OSI,七层模型,应用层,表示层,会话层,传输层,网络层,数据链路层,物理层,在共享物理媒介上,控制物理寻址、数据装帧。即管理数据何时开始、何时结束,该数据帧该谁接收,多个 节点都想发送数据时该如何处理,A,B,C,D,OSI,七层模型,应用层,表示层,会话层,传输层,网络层,数据链路层,物理层,下两层解决了同一物理媒介上的寻址和数据传输问题,跨媒介的通信怎么处理呢?网络层定义了一种跨媒介的复杂网络中使用的地址,并解决数据包路由选择、跨网传递的问题。,OSI,七层模型,应用层,表示层,会话层,传输层,网络层,数据链路层,物理层,跨网传递出现了许多问题。比如说对于可靠性要求高的传输,就要考虑数据包分割和排序、错误重传、网络拥塞等等处理;对于可靠性要求不高、但要求快速传递的,该如何处理。这些问题由传输层解决,OSI,七层模型,应用层,表示层,会话层,传输层,网络层,数据链路层,物理层,控制会话的过程。比如说,A,从,B,下载一个文件,这就算一个会话。是使用可靠传输呢,还是使用不可靠传输呢?是作为一个文件从头到尾逐段数据传输呢,还是分成几个部分多线程同时传输呢?,OSI,七层模型,应用层,表示层,会话层,传输层,网络层,数据链路层,物理层,人能够识别的数据、机器能识别的数据相互之间的转换。比如我们的汉字、英文、图片、电影该怎么编码才方便存储和传输,收到一段编码后该翻译成什么。,ASCII,、,UNICODE,编码转换、,JPEG,图像显示等等此类工作在表示层完成,OSI,七层模型,应用层,表示层,会话层,传输层,网络层,数据链路层,物理层,满足用户需求的各种应用协议。比如说想看,Internet,上的某个网页、某一首歌、某个电影,该怎么请求、怎么应答等等,OSI,七层模型和,TCP/IP,四层模型,应用层,表示层,会话层,传输层,网络层,数据链路层,物理层,应用层,传输层,网络层,网络接口层,思考题,双极性,NRZ,码是一种不归零编码方法,以某个数值,E,为门限,大于,+E,表示为,0,,小于,-E,表示为,1,。请问这种编码能用在哪一层?,楷体,_GB2312,编码译码属于,TCP/IP,协议栈中的哪一层?,网络间进程通信,进程,线程,网络应用进程在网络结构中的位置,实现网间进程通信必须解决的问题,进程,概念,进程是处于运行过程中的程序,实例,,是操作系统调度和分配资源的基本单位。,QQ,是一个程序,每运行一次就产生一个程序实例,可以运行多个,从而使用不同的帐号去跟不同的群体聊天。这些程序实体都是各自独立的进程。,进程,组成,一个进程实体由程序代码、数据和进程控制块三部分构成。,程序代码:规定了进程所做的计算。也就是进程要做什么,数据:计算的对象。比如说你的,QQ,帐号有哪些好友,聊了些什么,进程控制块:操作系统为了控制进程而建立的数据结构。比如说系统内怎么标识这个进程、进程处于什么状态、程序地址在哪里、数据在哪里,等等,进程,进程与网络应用程序的关系,各种计算机应用程序在运行时,都以进程的形式存在。网络应用程序也不例外,只要运行就会产生相应的进程。,线程,概念,线程是运行中程序的调度单位,是进程中某个单一顺序的控制流。,进程是分配资源的单位,而线程是执行和调度的单位,线程要处理些什么、怎么处理,都是定义好了的,每一个进程至少有一个线程,供,CPU,调度从而执行进程的代码。没有线程,进程就失去了存在的意义。一个进程可能会有多个线程,这些线程表面上是“同时”执行进程的代码,多线程的例子,迅雷,可以开多个线程同时下载。,电影,1,电影,2,音乐,3,多线程的例子,迅雷,可以开多个线程同时下载。,电影,1,电影,2,音乐,3,部分,1,部分,2,部分,3,多线程的例子,迅雷,可以开多个线程同时下载。,游戏,必杀技发出多个随机的闪电去长时间攻击周边的敌人,就可以开多个线程来“同时”管理这多个闪电的攻击情况。,部分,1,部分,2,部分,3,电影,1,电影,2,音乐,3,当创建一个进程时,系统会自动创建它的第一个线程,称为主线程。然后,该线程可以创建其他的线程,而这些线程又能创建更多的线程。,图,1.1,单,CPU,分时地运行各个线程,多线程,多线程同时运行的条件,系统给每个线程安排一定的,CPU,时间片轮流运行,表面上它们都是“同时”运行的,要真正做到同时运行,需要,多,CPU,支持多线程的操作系统,网络应用进程的位置,网络应用进程,网络应用进程处于网络层次结构的最上层,它不需要关心底层的细节,比如,只需要调用底层提供的服务,来实现网络间的通信,用什么,CPU,、什么网卡,通过光纤、网线、还是无线接入来上网,图,1.2,网络应用程序在网络体系结构中的位置,IE,浏览器,网络应用进程的位置,网间进程通信是指网络中不同主机中的应用进程之间的相互通信问题,网间进程通信必须解决以下问题:,(,1,)网间进程的标识问题,(,2,)如何与网络协议栈连接的问题,(,3,)多重协议的识别问题,(,4,)不同的通信服务问题,实现网间进程通信必须解决的问题,网间进程的标识问题,同一主机中,会用不同的进程号,(,ProcessID,:大于等于,0,的数字)来标识不同的进程,网络环境中,这种方法行不通。在网络环境中,进程号会有重复,比如说网络中的多台主机都可能存在进程号为,5,的进程。因此需要找到一种方法来区分网络环境中的每一个进程。这是网间进程通信的前提,如何与网络协议栈连接的问题,网间进程的通信是通过网络协议栈来实现,通过套接字网络编程接口来调用底层提供的服务,多重协议的识别问题,一个操作系统可能支持多种协议,如,TCP/IP,、,IPX/SPX,等等,同一个进程可能也会支持多种协议,如安全扫描工具可同时进行,ICMP,扫描、,TCP,扫描、,UDP,扫描等等,必须提供多重协议的识别方式,以便系统将不同的数据传递给不同的进程处理,不同的通信服务问题,网络应用程序多种多样,对服务的要求各不相同,有的要求数据传递过程可靠、无差错、无乱序、无丢失,有的只要求快速,对丢包不敏感,TCP/IP,协议中的传输层考虑了不同的服务问题,提供了,TCP,、,UDP,两种。,TCP,是可靠的传输服务,,UDP,是不可靠的但快速的传输服务,Internet,中网间进程的标识,传输层在网络通信中的地位,传输层协议和端口,端口号的分配机制,进程在网络中的标识,网络中进程通信的标识,图,1.3,说明了基于,TCP/IP,协议栈的进程之间的通信的情况。,图,1.3,基于,TCP/IP,协议栈的进程间的通信,传输层在网络通信中的地位,SNMP,DNS,TFTP,SNMP,客户,DNS,客户,TFTP,客户,SNMP,DNS,TFTP,SNMP,服务器,DNS,服务器,TFTP,服务器,按照,OSI,七层协议的描述,传输层在网络层的基础上提供网络间进程通信的能力。,TCP/IP,协议提出了传输层协议端口(,protocol port,,简称端口)的概念,成功地解决了网络间进程的标识问题。,传输层支持端到端的进程通信,因为网络层的,IP,地址对应着网络上的主机,传输层的协议和端口号对应主机上的进程。,传输层在网络通信中的地位,端口的概念,端口是,TCP/IP,协议中,应用层进程与传输层协议实体间的通信接口。当一个应用层进程要通信时,必须申请一个传输层的端口。,确定端口之后,端口与应用层进程是一一对应的。,类似于文件描述符,每个端口都拥有一个叫作端口号(,Port Number,)的整数型标识符,从实现的角度讲,端口是一种抽象的软件机,制,,包括一些数据结构和,I/O,缓冲区。,图,1.4 UDP,与,TCP,的报文格式,TCP/IP,协议采用了全局分配(静态分配)和本地分配(动态分配)相结合的分配方法。对于,TCP,,或者,UDP,,将它们的全部,65535,个端口号分为保留端口号和自由端口号两部分。,保留端口的范围是,0,1023,,又称为众所周知的端口或熟知端口(,well-known port,),只占少数,采用全局分配或集中控制的方式,由一个公认的中央机构根据需要进行统一分配,静态地分配给因特网上著名的服务器进程,并将结果公布于众。,端口号的分配机制,一些典型的应用层协议端口,TCP,的保留端口,UDP,的保留端口,FTP,21,DNS,53,HTTP,80,TFTP,69,SMTP,25,SNMP,161,POP3,110,其余的端口号,,1024-65535,,称为自由端口号,采用本地分配,又称为动态分配的方法。,端口,0,:不使用,或者作为特殊的使用;,端口,1-255,:保留给特定的服务,,TCP,和,UDP,均规定,小于,256,的端口号才能分配给网上著名的服务;,端口,256-1023,:保留给其他的服务,如路由;,端口,1024-4999,:可以用作任意客户的端口;,端口,5000-65535,:可以用作用户的服务器端口。,TCP,或,UDP,端口的分配规则,我们举个例子说明,在这样的端口分配机制下,客户进程,C,与服务器进程,S,第一次通信的情景。图,1.5,向我们展示了客户与服务器第一次通信的情况。,图,1.5,客户与服务器的第一次通信,在,Internet,网络中,用一个三元组可以在全局中唯一地标识一个应用层进程:,应用层进程地址,=,(主机的,IP,地址,传输层协议,传输层的端口号),这样一个三元组,叫做一个半相关(,half-association,),它标识了因特网中,进程间通信的一个端点,也把它称为进程的网络地址。,进程在网络中的标识,一个完整的网间通信需要一个五元组在全局中唯一地来标识:,(,传输层协议,本地,IP,地址,本地传输层端口,远端,IP,地址,远端传输层端口,),这个五元组称为一个全相关(,association,)。即两个协议相同的半相关才能组合成一个合适的全相关,或完全指定一对网间通信的进程。,网络中进程通信的标识,思考题,下面几个半相关可以组成多少个全相关?,A:UDP,119.1.1.2,,,88,B:TCP,119.1.1.4,,,88,C:TCP,119.1.7.2,,,188,D:TCP,119.1.2.9,,,2088,网络协议的特征和分类,面向消息的协议与基于流的协议,面向连接的服务和无连接的服务,可靠性和次序性,高效的用户数据包协议(,UDP,),可靠的传输控制协议(,TCP,),(,1,)面向消息的协议,以消息为单位在网上传送数据,在发送端,消息一条一条地发送,在接收端,也只能一条一条地接收,每一条消息是独立的,消息之间存在着边界。,面向消息的协议与基于流的协议,图,1.6,保护消息边界的数据报传输服务,(,2,)基于流的协议,基于流的协议不保护消息边界,将数据当作字节流连续地传输,不管实际消息边界是否存在。,面向消息的协议与基于流的协议,图,1.7,无消息边界的流传输服务,一个协议可以提供面向连接的服务,或者提供无连接的服务。,面向连接服务是电话系统服务模式的抽象,即每一次完整的数据传输都要经过建立连接,使用连接,终止连接的过程。,无连接服务是邮政系统服务的抽象,每个分组都携带完整的目的地址,各分组在系统中独立传送。,面向连接的服务和无连接的服务,可靠性保证了发送端发出的每个字节都能到达既定的接收端,不出错,不丢失,不重复,保证数据的完整性,称为保证投递。,次序性是指对数据到达接收端的顺序进行控制。保护次序性的协议保证接收端收到数据的顺序就是数据的发送顺序,称为按序递交。,可靠性和次序性,传输层的,用户数据报协议(,User Datagram Protocol,,,UDP,),是一种尽力传送的无连接的不保证可靠性的传输服务,是一种保护消息边界的数据的传输,只是在网络层基础上,增加了,65535,个端口,以支持应用层进程通信,适合交易性的应用程序(只有一来一往两次数据的通信,而且数据量小),高效的用户数据报协议,UDP,可靠,的传输控制协议,TCP,1.,可靠性是很多应用的基础,2.TCP,为应用层提供的服务,传输控制协议,(Transmission Control Protocol,,,TCP),给,应用层进程,提供一个面向连接的、,端到端的、,完全可靠的(无差错、无丢失、无重复或失序)全双工的流传输服务。,图,1.8 TCP,是一个端到端的传输协议,TCP,提供给应用层,看起来,很可靠的(无差错、无丢失、无重复或失序)全双工的流传输服务,实际上是,TCP,软件基于不可靠的,IP,数据报,通过使用数据包校验、收包应答、错误重传等等控制措施来实现的。,可靠,的传输控制协议,TCP,3.TCP,利用,IP,数据报实现了端对端的传输服务,TCP,提供了一个直接从一台计算机上的应用进程到另一远程计算机上的应用进程的连接。,应用进程能请求,TCP,构造一个连接,通过这个连接发送和接收数据,以及关闭连接。,TCP,提供的连接叫做虚连接(,virtual connection,),虚连接是由软件实现的。事实上,底层的,Internet,系统并不对连接提供硬件或软件支持,只是两台机器上的,TCP,软件模块通过交换消息来实现连接的幻象。,可靠,的传输控制协议,TCP,4.,三次握手,为确保连接的建立和终止都是可靠的,,TCP,使用三次握手(,3-way handshake,)的方式来建立连接,图,1.9 TCP,的三次握手过程,可靠,的传输控制协议,TCP,思考题,UDP,和,TCP,的数据包哪一个传输时延大?,如果一条信道每次最多能传送,2000,字节,那么传输,1G,字节的文件,最好使用哪一种传输协议?如果传输,100,字节的消息呢?,网络编程的分类,基于,TCP/IP,协议栈的网络编程,基于,WWW,应用的网络编程,基于,.NET,框架的,Web Services,网络编程,基于,TCP/IP,协议栈的网络编程是最基本的网络编程方式,主要是使用各种编程语言,利用操作系统提供的套接字(,Socket,)网络编程接口和其他网络编程类,直接开发各种网络应用程序。本书主要讲解这种网络编程的相关技术。,基于,TCP/IP,协议栈的网络编程,WWW,应用是因特网上最广泛的应用,称为万维网,基于,WWW,应用的网络编程技术,包括所见即所得的网页制作工具,和动态服务器页面的制作技术。涉及到网页设计、动态脚本设计、页面布局、美工等等,基于,WWW,应用的网络编程,.NET,平台和,Web,服务,微软的,.NET,平台是一个全新的开发框架,目标是让应用程序通过,Internet,进行通讯和共享数据,而不管采用的是哪种操作系统、设备或编程语言。,Web,服务是指可复用的软件模块(服务组件),就像,Web,页面一样在,Internet,上发布,利用,Web,调用即可执行该服务。,注重于服务组件的编程。,基于,.NET,框架的,Web Services,编程,基于,.NET,框架的,Web Services,编程,客户机,/,服务器交互模式,网络应用软件的地位和功能,客户机,/,服务器(,C/S,)模式,客户机与服务器的特性,客户机与服务器的通信过程,网络协议与,C/S,模式的关系,服务器如何同时为多个客户机服务,本节主要讨论网络应用软件的客户机服务器(,Client/Server,简称,C/S,)交互模式,并说明网络协议操作的方式为什么需要这种模式。,客户机,/,服务器交互模式,网络应用软件的地位和功能,Internet,仅仅提供一个通用的通信构架,它只负责传送信息,信息传过去干什么用,利用,Internet,究竟提供什么服务,由哪些计算机来运行这些服务,如何确定服务的存在,如何使用这些服务等等问题,都要由应用软件和用户解决。,网络应用进程在通信时,普遍采用客户机,/,服务器交互模式(,client-server paradigm of interaction,),简称,C/S,模式。,这是因特网上应用程序最常用的通信模式。,客户机,/,服务器模式,服务器工作模式,C/S,模式中服务器处于被动服务的地位。首先服务器方要先启动,并根据客户请求提供相应服务。服务器的工作过程是:,(,1,)打开一通信通道,并告知服务器所在的主机系统,它愿意在某一公开的地址和端口上(如,FTP,为,21,端口)接收客户请求。,(,2,)等待客户的请求到达该端口。,(,3,),服务器,接收到服务请求,处理该请求并发送应答信号。为了能并发地接收多个客户的服务请求,一般会激活一个新进程或新线程来处理这个客户请求(如,UNIX,系统中用,fork,、,exec,)。该次服务完成后,关闭此新进程与客户的通信链路,并终止。,(,4,)返回第二步,等待并处理新的请求。,(,5,)在特定的情况下,关闭服务器。,服务器工作模式,客户机工作模式,客户方采取的是主动请求方式,其工作过程是:,(,1,)打开一通信通道,并连接到服务器所在主机的特定监听端口。,(,2,)向服务器发送请求报文,等待并接收应答;继续提出请求,与服务器的会话按照应用协议进行。,(,3,)请求结束后,关闭通信通道并终止。,表,1.2,一些著名的网络应用,网络应用,客户端软件,服务器软件,应用层协议,电子邮件,Foxmail,电子邮件服务器,SMTP,、,POP3,文件传输,CuteFTP,FTP,服务器,FTP,WWW,浏览,IE,浏览器,IIS,服务器,HTTP,客户软件和服务器软件通常还具有以下一些主要特点:,1,客户软件,(,1,)在进行网络通信时临时成为客户,但它也可在本地进行其他的计算。,(,2,)被用户调用,只为一个会话运行。在打算通信时主动向远地服务器发起通信。,客户软件与服务器的特性,客户软件与服务器的特性,(,3,)能访问所需的多种服务,但在某一时刻只能与一个远程服务器进行主动通信(例外情况:允许多线程的客户软件?)。,(,4,)主动地启动与服务器的通信。,(,5,)在用户的计算机上运行,不需要特殊的硬件和很复杂的操作系统。,2,服务器软件,(,1,)是一种专门用来提供某种服务的程序,可同时处理多个远地客户的请求。,(,2,)可以在系统启动时自动调用,并且连续运行着,不断地为多个会话服务。也可以手动启动。,(,3,)接受来自任何客户的通信请求,但只提供一种服务。,(,4,)被动地等待并接受来自多个远端客户的通信请求。,(,5,)在共享计算机上运行,一般需要强大的硬件和高级的操作系统支持。,客户软件与服务器的特性,(,1,)客户和服务器都是软件进程,,C/S,模式是,Internet,分布式应用的常用模型。,(,2,)非对称性:服务器通过网络提供服务,客户通过网络使用服务,这种不对称性体现在软件结构和工作过程上。,3,基于因特网的,C/S,模式的应用程序的特点,(,3,)对等性:客户和服务器必有一套共识的约定,必与以某种应用层协议相关联,并且协议必须在通信的两端实现。比如浏览器和,WWW,服务器就都基于,HTTP,超文本传输协议。,(,4,)服务器的被动性:服务器必须先行启动,时刻监听,日夜值守,及时服务,只要有客户请求,就立即处理并响应,回传信息。但决不主动提供服务。,(,5,)客户机的主动性:客户机可以随时提出请求,通过网络得到服务,每一次请求与服务的过程是由客户机首先发起的。,(,6,)一对多:一个服务器可以为多个客户机服务,客户机也可以打开多个窗口,连接多个服务器。,(,7,)分布性与共享性:资源在服务器端组织与存储,通过网络分散在多个客户端使用。,1,服务器程序与服务器类计算机,服务器(,server,)这个术语来指那些运行着的服务程序。,服务器类计算机(,server-class computer,)这一术语来称呼那些运行服务器软件的强大的计算机。,容易混淆的术语,容易混淆的术语,2,客户与用户,“客户”,(,或者“客户机”,,client),和服务器都指的是应用进程,即计算机软件;,“,客户,机,”,指的是,客户端软件。,“用户”,(user),指的是使用计算机的人。,图,1.10,用户、客户机、服务器、服务器类计算机,容易混淆的术语,客户机与服务器的通信过程一般是这样的:,(,1,)通信之前,服务器应先行启动,并通知它的下层协议栈做好接收客户机请求的准备,然后被动地等待客户机的通信请求,此时服务器处于监听状态。,客户机与服务器的通信过程,客户机与服务器的通信过程,(,2,)一般是先由客户,机,向服务器发送请求,服务器向客户,机,返回应答。客户,机,随时可以主动启动通信,向服务器发出连接请求,服务器接收这个请求,建立了二者的通信关系。,(,3,)客户,机,与服务器的通信关系一旦建立,客户,机,和服务器都可发送和接收信息。信息在客户,机,与服务器之间可以沿任一方向或两个方向传递。在某些情况下,客户,机,向服务器发送一系列请求,服务器相应地返回一系列应答。,客户机与服务器作为两个软件实体,它们之间的通信是虚拟的,是概念上的,实际的通信要借助下层的网络协议栈来进行。,网络协议与,C/S,模式的关系,IE,浏览器,在,C/S,模式中,存在着三种一个与多个的关系:,(,1,)一个服务器(可以)同时为多个客户机服务,(,2,)一个用户的计算机上(可以)同时运行多个连接不同服务器的客户端软件,(,3,)一个服务器类的计算机(可以)同时运行多个服务器软件,错综复杂的客户机,/,服务器交互,图,1.11,一台计算机中的多个服务器被多个计算机的客户端软件访问,并发性是客户机,/,服务器交互模式的基础,并发允许多个客户机获得同一种服务,而不必等待服务器完成对上一个请求的处理。这样才能很好地同时为多个客户机提供服务。,图,1.12,服务器创建多个线程来为多个客户服务,服务器如何同时为多个客户服务,回顾,如何唯一定位一个主机?,如何唯一定位一个网络通信进程?,如何唯一定位一个通信会话?,什么是,C/S,模式?,服务器程序怎么工作?,客户端程序怎么工作?,在,Internet,上,,TCP/IP,协议,在一台服务器类的计算机中可以并发地运行多个服务器进程。它们都要借助协议栈来交换信息,协议栈就是多个服务器进程传输数据的公用通道,,这有了一个问题,既然在一个服务器类计算机中运行着多个服务器,如何能让客户无二义性地指明所希望的服务?,如何标识一个特定服务,图,1.13,沙漏计时器形状的,TCP/IP,协议族,如何标识一个特定服务,这个问题是由传输协议栈提供的一套机制来解决的。这种机制必须赋给每个服务一个唯一的标识,并要求服务器和客户都使用这个标识,TCP/IP,协议栈利用协议类型和端口号来标识,当服务器开始执行时,它在本地的协议栈软件中登记,指明它所提供服务的端口(即标识),当客户与远程服务器通信时,客户在提出请求时,通过这个端口来指定所希望的服务,服务器端机器的传输协议栈则根据该端口来决定由哪个服务器程序来处理这个请求,如何标识一个特定服务,如何标识一个特定服务,HTTP,服务,SMTP,服务,DNS,服务,RTP,服务,TCP,80,25,UDP,53,5004,用户,电脑,用户,电脑,用户直接与特定的端口通信,即可请求对应的服务,P2P,模式,P2P,技术兴起的原因,P2P,的定义和特征,P2P,的发展,P2P,的关键技术,P2P,系统的应用和前景,P2P,模式兴起的原因,随着应用规模的不断扩大,软件复杂度不断提高,面对巨大的用户群,单服务器成了性能的瓶颈,为了解决这些问题,就出现了,P2P,技术(,Peer-to-Peer,,即对等网),P2P,的定义和特征,P2P,技术就是一种在计算机之间直接进行资源和服务的共享,不需要服务器介入的网络技术。,在,P2P,网络中,每台计算机同时充当着,Server,和,Client,的角色,当需要其他电脑的文件和服务时,两台电脑直接建立连接,本机是,Client,;而当响应其他电脑的资源要求时,本机又成为提供资源与服务的,Server,。,P2P,的图例,源,P2P,的图例,源,源,P2P,的图例,源,源,源,源,源,P2P,系统的特征,(,1,)分散性:全分布式的系统,(,2,)规模性:可以容纳数目庞大的计算机,(,3,)扩展性:随时加入和退出,(,4,),Servent,性:同时是,Serv,er+Cli,ent,(,5,)自治性:自组织网络,无全局控制者,(,6,)互助性:相互提供服务,P2P,的发展,P2P,的发展分为三代,,第一代以,Napster,系统为代表,第二代,P2P,使用基于分布式哈希表(,Distributer Hash Table,,,DHT,)的协议,各自保存自己共享文件的哈希表,第三代,P2P,采用混合型的覆盖网络结构,不需要专门的服务器,参与的主机承担一些服务器分发列表的功能,P2P,的关键技术,(,1,)资源定位。也就是说怎么样快速的在,P2P,网络中找到自己想要的资源所在主机。,(,2,)安全性与信任问题。下载的程序安不安全,可不可信,会不会传播病毒,这个问题不容易解决。,(,3,)联网服务质量问题。如何找出效率高的节点,剔除无效的节点。,(,4,)标准化。技术标准化才能促进,P2P,网络的大规模发展。,P2P,系统的应用与前景,(,1,)分布式计算及网格计算。比如将网络上的很多台机器的空余,CPU,资源用来计算某些困难问题。,(,2,)文件共享与存储共享。,(,3,)即时通信交流。,(,4,)安全的,P2P,通信与信息共享。比如利用,P2P,网络进行匿名浏览。,(,5,)语音与流媒体。比如,流媒体服务器可能只有一个,但是,在线,播放的用户同时也是服务器,播放的用户多了,其他的用户可以,利用,P2P,网络,从这些播放的用户主机中下载观看的片段。,建议的参考书目,TCP/IP,详解,,英文版名为“,TCP/IP illustrated,”,用,TCP/IP,进行网际互联,,英文版名为“,Internetworking with TCP/IP,”,
展开阅读全文