Network Application Programming(3rd Edition)

Slides:



Advertisements
Similar presentations
2008年上海市精品课程 2007年度上海建桥学院教改课程 计算机网络技术 理论 DNS服务的应用 项目负责人 张嗣萍/本环节主讲教师 阮鹏.
Advertisements

6.1 区域委派与域名转发 6.2 虚拟主机技术 6.3 架设FTP服务器 6.4 动态主机分配协议 6.5 架设Mail服务器
1 项目一 计算机网络概论 2 项目二 计算机网络协议与体系结构 3 项目三 物理层基础与应用 4 项目四 数据链路层基础与应用 5 项目五 网络层基础与应用 6 项目六 传输层的基础与应用 7 项目七 应用层的基础与应用 8 项目八 网络管理与网络安全.
项目四:Internet基础与接入方法 第八章 应用服务器安装配置
第6章:计算机网络基础 网考小组.
计算机网络应用 崇信电大工作站 高进喜
计算机应用基础 宁夏医学院计算机教研室
《网络基础与Internet应用》.
第6章 计算机网络基础 信息技术基础.
校园网与INTERNET基础 现代教育技术中心 李 斌.
计算机网络高级工 梁绍宇.
21世纪全国高职高专 计算机系列实用规划教材 计算机网络技术基础 主 编: 杨瑞良 李 平 副主编: 邱 涛 李明龙.
2.4 计算机网络基础 什么是计算机网络? 计算机网络有哪些功能? 计算机网络的发展历史? 计算机网络体系结构的内容? 计算机网络如何分类?
第7章 防 火 墙 技 术 7.1 防火墙概念 7.2 防火墙原理及实现方法 7.3 防火墙体系结构 7.4 防火墙的构成
第七章 Internet 基础与应用 第一节 主机名字与域名服务 第二节 Internet的域名体系 第三节 主机名字的书写方法
網路犯罪 組別:第5組 組員:卓岳正,連樹勛,劉洛翔,劉博文,蔡宗憲,吳柏錞,程聖發 組長:卓岳正
第三章 網際網路和全球資訊網 : 電子商務基礎建設
第六章 计算机网络基础 PPT电子演示文稿 琼台师专信息技术系.
彭江波.
第6章 网络基础及Internet应用 6.1 计算机网络概述 6.2 计算机网络的组成 6.3 Internet基础
了 解 从 Internet IP 开 始.
第二章 电子商务技术基础.
电子商务网络技术 主讲:苑毅 电子商务教研室.
思考 问题十:大学生如何提高英语能力? (听说读写能力).
实训十四、IE浏览器的基本应用.
复旦大学计算机学院 肖川 计算机网络与网页制作 复旦大学计算机学院 肖川
第6章 计算机网络基础.
计算机网络 暨南大学计算机科学系 学年 第一学期.
第1章 概述.
Foundations of Computer Science Chapter 6 電腦網路
第7章 计算机网络与安全.
了 解 Internet 从 ip 开 始.
Windows系統 入侵偵測與防制工具 成大計網中心 楊峻榮 2003/10/23.
学习目标 掌握电子商务网站体系结构 掌握企业电子商务网站体系结构 掌握PWS的安装与设置
网络故障的检测及修复.
>> 第三章 中文Windows XP >> 第四章 中文文字处理系统Word 2003
企业网搭建及应用 重庆市永川职业教育中心
教学目的:通过本章的学习大家要掌握端口 教学重点:端口的分类的两大类,静态端口 教学难点:几种常见的端口.
基于WinSock的邮件系统 1 设计目标: 1.1 SMTP发送邮件服务器(c语言) 1.2 POP3接受邮件服务器(c语言)
第5章 网络软件 开发技术 (一) 软件开发技术基础 计算机教学实验中心.
第二期实验室工作人员培训讲座(三) 加强规范化建设 提高仪器设备管理水平 设备处 黄久龙 2017年9月13日 徐州师范大学设备处 黄久龙.
第7章 计算机网络基础.
学习目标: 1)理解包和包过滤 2)理解包过滤的方法 3)设置特殊的包过滤规则
網路概論.
教师:陈有为 TCP/IP与Internet(A) 教师:陈有为
網路基本概念 本章主要是為讀者建立有關網路的基本知識, 作為後續章節的基礎。首先我們會說明網路的基本概念, 接著介紹網路的各種類型與相關的作業系統, 最後則是介紹 OSI 與 DoD 等兩種網路模型, 讓讀者能進一步了解網路運作的方式。
第3讲 网络安全协议基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。
.NET 簡介.
網路服務 家庭和小型企業網路 – 第六章.
计算机网络技术基础 任课老师: 田家华.
.NET 簡介.
TCP/IP Protocol Suite TCP/IP協定 第二組 投影片製作by簡嘉宏 綦凱宏 林睿敏 滕孟哲.
第 2 章 TCP / IP 簡介.
Ch01網際網路、HTML 、 Script 、 ASP.NET簡介
考试题型 填空题(30) 选择题(20) 名词解释(10) 问答题(24) 计算题(16) 附加题(30) 成绩核算:
本章要点: 计算机网络的基本概念 Internet基础 Internet服务
Westmont College 互联网应用软件 第二讲 (DNS, , TELNET, FTP)
第2讲 网络安全协议基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。
Web前端开发 第23章:网站发布 阮晓龙 / 河南中医药大学管理科学与工程学科
ISA Server 2004.
第12章 计算机病毒防范技术 本章学习目标: 掌握病毒的分类与特征 掌握病毒检测与防范的基本知识 了解计算机病毒防范技术的发展趋势
第3章电子商务网站的建设流程 《电子商务网站建设与管理》配套课件.
第1章 网络操作系统概述.
21世纪高职高专规划教材 C#语言程序设计 李继武 彭德林 主 编 张 珑 赵 松 周建辉 副主编
傳輸控制協議 /互聯網協議 TCP/IP.
大学计算机基础 5-2 计算机网络模型与协议.
第10讲 Web服务.
Internet课程设计 教师:陈 妍 朱海萍 西安交通大学计算机系
第1章 WWW和LAMP基本觀念.
第7章 Internet的应用.
Presentation transcript:

Network Application Programming(3rd Edition) 网络编程实用教程(第三版) Network Application Programming(3rd Edition) 1

第1章 概述 1.1 网络编程相关的基本概念 1.2 三类网络编程 1.3 客户机/服务器交互模式 1.4 P2P模式

第1章 概述 本章介绍网络编程相关的基本概念,包括: 进程通信的概念 因特网中网间进程的标识方法 网络协议的特征 第1章 概述 本章介绍网络编程相关的基本概念,包括: 进程通信的概念 因特网中网间进程的标识方法 网络协议的特征 TCP/IP中用户数据报协议UDP和传输控制协议TCP的特点 目前的网络编程现状 网络应用程序的客户/服务器交互模式

1.1 网络编程相关的基本概念 1.1.1 网络编程与进程通信 P1 1.进程与线程的基本概念 1.1 网络编程相关的基本概念 1.1.1 网络编程与进程通信 P1 1.进程与线程的基本概念 进程是处于运行过程中的程序实例,是操作系统调度和分配资源的基本单位。一个进程实体由程序代码、数据和进程控制块三部分构成。各种计算机应用程序在运行时,都以进程的形式存在。网络应用程序也不例外。 我们用Windows的浏览器上网,每一个窗口中运行的程序,都是一个网络应用程序,运行中的网络应用程序就是一个网络进程。 Windows系统不但支持多进程,还支持多线程。当创建一个进程时,系统会自动创建它的第一个线程,称为主线程,该线程可以创建其子线程。

1.1 网络编程相关的基本概念 在Windows系统中,进程是分配资源的单位,但不是执行和调度的单位。若要使进程完成某项操作,它必须拥有一个在它的环境中运行的线程,该线程负责执行包含在进程的地址空间中的代码。 实际上,一个进程可能包含若干个线程,所有这些线程都“同时”执行进程地址空间中的代码。 如图所示为在单CPU的计算机上,CPU分时地运行各个线程。

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

1.1 网络编程相关的基本概念 如图所示为网络应用程序在网络体系结构中的位置。

1.1 网络编程相关的基本概念 网络应用程序最终要实现网络资源的共享,共享的基础就是必须能够通过网络轻松地传递各种信息。网络编程首先要解决网间进程通信的问题。然后才能在通信的基础上开发各种应用功能。

1.1 网络编程相关的基本概念 3.实现网间进程通信必须解决的问题 P3 1.1 网络编程相关的基本概念 3.实现网间进程通信必须解决的问题 P3 网间进程通信是指网络中不同主机中的应用进程之间的相互通信问题,网间进程通信必须解决以下问题: (1)网间进程的标识问题。同一主机中用进程ID做唯一标识,但在网络环境不行。 (2)与网络协议栈连接的问题。发送端应用进程在协议栈把数据包层层向下递交,接收端网络协议再将数据包层层上传。这通过定义Socket网络编程接口来解决。 (3)多重协议的识别问题。如TCP/IP IPX/SPX同时存在,如何识别。 (4)不同的通信服务的问题。随着网络应用的不同,网间通信要求的服务也不同。

1.1 网络编程相关的基本概念 1.1.2 因特网中网间进程的标识 P4 1.传输层在网络通信中的地位 1.1 网络编程相关的基本概念 1.1.2 因特网中网间进程的标识 P4 1.传输层在网络通信中的地位 下图说明了基于TCP/IP协议栈的进程之间的通信的情况。

1.1 网络编程相关的基本概念 按照OSI七层协议的描述,传输层与网络层在功能上的最大区别是传输层提供进程通信的能力。TCP/IP协议提出了传输层协议端口(protocol port)的概念,成功地解决了通信进程的标识问题。 传输层是计算机网络中,通信主机内部进行独立操作的第一层,是支持端到端的进程通信的关键的一层。

1.1 网络编程相关的基本概念 2.端口的概念 P4 端口是TCP/IP协议族中,应用层进程与传输层协议实体间的通信接口。 1.1 网络编程相关的基本概念 2.端口的概念 P4 端口是TCP/IP协议族中,应用层进程与传输层协议实体间的通信接口。 类似于文件描述符,每个端口都拥有一个叫做端口号(Port Number)的整数型标识符,用于区别不同的端口。由于TCP/IP协议簇传输层的两个协议,即TCP和UDP,是完全独立的两个软件模块,因此各自的端口号也相互独立。

1.1 网络编程相关的基本概念 如图所示为UDP数据报和TCP报文段的首部格式。 1.1 网络编程相关的基本概念 如图所示为UDP数据报和TCP报文段的首部格式。 应用进程通过系统调用与某端口建立绑定(Binding)关系后,传输层传给该端口的数据都被相应进程接收,相应进程发给传输层的数据都通过该端口输出。

1.1 网络编程相关的基本概念 3.端口号的分配机制 P5 1.1 网络编程相关的基本概念 3.端口号的分配机制 P5 TCP/IP协议采用了全局分配(静态分配)和本地分配(动态分配)相结合的分配方法。对于TCP,或者UDP,将它们的全部65535个端口号分为保留端口号和自由端口号两部分。 保留端口的范围是0—1023,又称为众所周知的端口或熟知端口(well-known port),只占少数,采用全局分配或集中控制的方式,由一个公认的中央机构根据需要进行统一分配,静态地分配给因特网上著名的众所周知的服务器进程,并将结果公布于众。

下表是一些典型的应用层协议分配到的保留端口。 1.1 网络编程相关的基本概念 下表是一些典型的应用层协议分配到的保留端口。 TCP的保留端口 UDP的保留端口 FTP 21 DNS 53 HTTP 80 TFTP 69 SMTP 25 SNMP 161 POP3 110 ……   其余的端口号,1024-65535,称为自由端口号,采用本地分配,又称为动态分配的方法。

1.1 网络编程相关的基本概念 总之,TCP或UDP端口的分配规则是: 端口0:不使用,或者作为特殊的使用。 1.1 网络编程相关的基本概念 总之,TCP或UDP端口的分配规则是: 端口0:不使用,或者作为特殊的使用。 端口1-255:保留给特定的服务,TCP和UDP均规定,小于 256的端口号才能分配给网上著名的服务。 端口256-1023:保留给其他的服务,如路由。 端口1024-4999:可以用作任意客户的端口。 端口5000-65535:可以用作用户的服务器端口。

1.1 网络编程相关的基本概念 我们可以描述一下,在这样的端口分配机制下,客户进程C与服务器进程S第一次通信的情景。如图所示表示了客户与服务器第一次通信的情况。

1.1 网络编程相关的基本概念 4.进程的网络地址的概念 P7 在因特网络中,用一个三元组可以在全局中唯一地标识一个应用层进程: 1.1 网络编程相关的基本概念 4.进程的网络地址的概念 P7 在因特网络中,用一个三元组可以在全局中唯一地标识一个应用层进程: 应用层进程地址=(传输层协议,主机的IP地址,传输层的端口号) 这样一个三元组,叫做一个半相关(half-association),它标识了因特网中,进程间通信的一个端点,也把它称为进程的网络地址。

1.1 网络编程相关的基本概念 5.网络中进程通信的标识 P7 一个完整的网间通信需要一个五元组在全局中唯一地来标识: 1.1 网络编程相关的基本概念 5.网络中进程通信的标识 P7 一个完整的网间通信需要一个五元组在全局中唯一地来标识: (传输层协议,本地机IP地址,本地机传输层端口,远地机IP地址,远地机传输层端口) 这个五元组称为一个全相关(association)。即两个协议相同的半相关才能组合成一个合适的全相关,或完全指定一对网间通信的进程。

1.1 网络编程相关的基本概念 1.1.3 网络协议的特征 P7 1.面向消息的协议与基于流的协议 P8 (1)面向消息的协议 1.1 网络编程相关的基本概念 1.1.3 网络协议的特征 P7 1.面向消息的协议与基于流的协议 P8 (1)面向消息的协议 面向消息的协议以消息为单位在网上传送数据,在发送端,消息一条一条地发送,在接收端,也只能一条一条地接收,每一条消息是独立的,消息之间存在着边界。

1.1 网络编程相关的基本概念 如图所示为保护消息边界的数据报传输服务。

1.1 网络编程相关的基本概念 (2)基于流的协议 基于流的协议不保护消息边界,将数据当作字节流连续地传输,不管实际消息边界是否存在。如图所示为无消息边界的流传输服务。

1.1 网络编程相关的基本概念 2.面向连接的服务和无连接的服务 P9 一个协议可以提供面向连接的服务,或者提供无连接的服务。 1.1 网络编程相关的基本概念 2.面向连接的服务和无连接的服务 P9 一个协议可以提供面向连接的服务,或者提供无连接的服务。 面向连接服务是电话系统服务模式的抽象,即每一次完整的数据传输都要经过建立连接,使用连接,终止连接的过程。 无连接服务是邮政系统服务的抽象,每个分组都携带完整的目的地址,各分组在系统中独立传送。

1.1 网络编程相关的基本概念 3.可靠性和次序性 P9 1.1 网络编程相关的基本概念 3.可靠性和次序性 P9 可靠性保证了发送端发出的每个字节都能到达既定的接收端,不出错,不丢失,不重复,保证数据的完整性,称为保证投递。 次序性是指对数据到达接收端按顺序进行处理。保护次序性的协议保证接收端收到数据的顺序就是发送端发出数据的发送顺序,称为按序递交。

1.2 三类网络编程 P10 1.2.1 基于TCP/IP协议栈的网络编程

1.2 三类网络编程 1.2.2 基于WWW应用的网络编程 WWW应用是因特网上最广泛的应用,称为万维网。 1.2 三类网络编程 1.2.2 基于WWW应用的网络编程 WWW应用是因特网上最广泛的应用,称为万维网。 基于WWW应用的网络编程技术,包括所见即所得的网页制作工具,和动态服务器页面的制作技术。

1.2 三类网络编程 1.2.3 基于.NET框架的Web Services网络编程 1.关于.NET平台 1.2 三类网络编程 1.2.3 基于.NET框架的Web Services网络编程 1.关于.NET平台 微软公司在2000年7月公布的.NET平台是一个全新的开发框架,集成了微软二十世纪九十年代后期的许多技术。 (1) .NET平台有四组产品 ① 开发工具:包括一组语言(C#和VB.NET);一组开发工具(Visual Studio.NET);一个综合类库,用于创建Web服务、Web应用程序和Windows应用程序;一个内置于框架中用于执行对象的公用语言运行期环境(Common Language Runtime,CLR)。

1.2 三类网络编程 ② 专用服务器:提供一组.NET企业级服务器,原来称为SQL Server、Exchange Server等,提供关系型数据存储、E-mail和B TO B的商务功能。 ③ Web服务。 ④ 设备:是全新的.NET驱动的数字化智能设备,包括从Tablet-PC、蜂窝电话到游戏机等设备。

1.2 三类网络编程 (2) MS.NET顺应了软件工业的趋势,包括以下几个方面: 1.2 三类网络编程 (2) MS.NET顺应了软件工业的趋势,包括以下几个方面: ① 分布式计算:更好的与厂商无关的开放性,提供了采用开放的Internet协议的远程体系结构,例如,HTTP、XML和简单对象访问协议(SOAP)等。 ② 组件化:COM模型使软件的即插即用成为现实,但是开发部署非常复杂,微软的.NET要真正实现软件的即插即用。

1.2 三类网络编程 ③ 企业级别的服务:开发伸缩自如的企业级别的程序,无需编写代码即可管理事务与安全。 1.2 三类网络编程 ③ 企业级别的服务:开发伸缩自如的企业级别的程序,无需编写代码即可管理事务与安全。 ④ Web 范型转移:近年来,Web程序开发的中心从连接(TCP/IP)向呈现(HTML)和可编程性(XML和SOAP)转移,.NET则使软件以服务的形式销售和发行。 这些都有助于互操作性、可伸缩性、易得性和可管理性等指标的实现。

1.2 三类网络编程 (3) .NET平台由三层软件构成 ① 顶层是全新的开发工具VS.NET。 1.2 三类网络编程 (3) .NET平台由三层软件构成 ① 顶层是全新的开发工具VS.NET。 ② 中间层包括三部分:.NET服务器、.NET服务构件和.NET框架。 ③ 底层是WINDOWS操作系统。

1.2 三类网络编程 (4) .NET框架的设计要支持的目标 ① 简化组件的使用 ② 实现语言的集成 ③ 支持Internet的互操作 1.2 三类网络编程 (4) .NET框架的设计要支持的目标 ① 简化组件的使用 ② 实现语言的集成 ③ 支持Internet的互操作 ④ 简化软件的开发 ⑤ 简化组件的部署 ⑥ 提高可靠性 ⑦ 提高安全性

1.2 三类网络编程 2.关于Web服务 什么是Web服务?Web服务是松散耦合的可复用的软件模块,在Internet上发布后,能通过标准的Internet 协议在程序中访问,具有以下的特点: (1)可复用 (2)松散耦合 (3)封装了离散 (4)Web服务可以在程序中访问 (5)Web服务在Internet上发布

1.3 客户/服务器交互模式 P13 本节着重于因特网上的高层服务,以及提供这些服务的应用软件。讨论网络应用软件的客户/服务器交互模式,并说明网络协议操作的方式为什么需要这种模式。这是构筑所有网络应用的基础。

1.3 客户/服务器交互模式 1.3.1 网络应用软件的地位和功能 P13 1.3 客户/服务器交互模式 1.3.1 网络应用软件的地位和功能 P13 因特网仅仅提供一个通用的通信构架,它只负责传送信息,而对于信息传过去干什么用,利用因特网究竟提供什么服务,由哪些计算机来运行这些服务,如何确定服务的存在,如何使用这些服务等等问题,都要由应用软件和用户解决。

1.3 客户/服务器交互模式 1.3.2 客户机/服务器模式 P14 1.3 客户/服务器交互模式 1.3.2 客户机/服务器模式 P14 网络应用进程通信时,普遍采用客户/服务器交互模式(Client/Server),简称C/S模式。这是因特网上应用程序最常用的通信模式。 C/S模式运行过程中服务器处于被动服务的地位。首先服务器方要先启动,并根据客户请求提供相应服务,服务器的工作过程是: (1)打开一通信通道,并告知服务器所在的主机,它愿意在某一公认的端口上(熟知端口,如FTP为21)接收客户请求。

1.3 客户/服务器交互模式 (2)等待客户的请求到达该端口。 1.3 客户/服务器交互模式 (2)等待客户的请求到达该端口。 (3)服务器接收到服务请求,处理该请求并发送应答信号。为了能并发地接收多个客户的服务请求,要创建一个新进程或新线程来处理这个客户请求(如UNIX系统中用fork、exec)。服务完成后,关闭此新进程与客户的通信链路,并终止。 (4)返回第二步,等待并处理下一位客户的请求。 (5)在特定的情况下,关闭服务器。

1.3 客户/服务器交互模式 客户机采取的是主动请求方式,其工作过程是: (1)打开一通信通道,并连接到服务器所在主机的特定监听端口。 1.3 客户/服务器交互模式 客户机采取的是主动请求方式,其工作过程是: (1)打开一通信通道,并连接到服务器所在主机的特定监听端口。 (2)向服务器发送请求报文,等待并接收应答;继续提出请求,与服务器的会话按照应用协议进行。 (3)请求结束后,关闭通信通道并终止。

1.3 客户/服务器交互模式 如图所示为一些著名的网络应用。 网络应用 客户端软件 服务器软件 应用层协议 电子邮件 foxmail 1.3 客户/服务器交互模式 如图所示为一些著名的网络应用。 网络应用 客户端软件 服务器软件 应用层协议 电子邮件 foxmail 电子邮件服务器 SMTP、POP3 文件传输 cutFTP 文件传输服务器 FTP WWW浏览 IE浏览器 IIS服务器 HTTP

1.3 客户/服务器交互模式 1.3.3 客户机与服务器的特性 P15 客户软件和服务器软件通常还具有以下一些主要特点: 1.客户端软件 1.3 客户/服务器交互模式 1.3.3 客户机与服务器的特性 P15 客户软件和服务器软件通常还具有以下一些主要特点: 1.客户端软件 (1)在进行网络通信时临时成为客户,但它也可在本地进行其他的计算。 (2)被用户调用,只为一个会话运行。在打算通信时主动向远地服务器发起通信。

1.3 客户/服务器交互模式 (3)能访问所需的多种服务,但在某一时刻只能与一个远程服务器进行主动通信。 (4)主动地启动与服务器的通信。 1.3 客户/服务器交互模式 (3)能访问所需的多种服务,但在某一时刻只能与一个远程服务器进行主动通信。 (4)主动地启动与服务器的通信。 (5)在用户的计算机上运行,不需要特殊的硬件和很复杂的操作系统。

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

3.基于因特网的C/S模式的应用程序的特点 1.3 客户/服务器交互模式 3.基于因特网的C/S模式的应用程序的特点 (1)客户和服务器都是软件进程,C/S模式是网络上通过进程通信建立分布式应用的常用模型。 (2)非对称性:服务器通过网络提供服务,客户通过网络使用服务,这种不对称性体现在软件结构和工作过程上。

1.3 客户/服务器交互模式 (3)对等性:客户和服务器必有一套共识的约定,必与以某种应用层协议相联,并且协议必须在通信的两端实现。比如浏览器和3W服务器就都基于HTTP超文本传输协议。 (4)服务器的被动性:服务器必须先行启动,时刻监听, 日夜值守,及时服务,只要有客户请求,就立即处理并响应,回传信息。但决不主动提供服务。

1.3 客户/服务器交互模式 (5)客户机的主动性:客户机可以随时提出请求,通过网络得到服务,也可以关机走人,一次请求与服务的过程是由客户机首先激发的。 (6)一对多:一个服务器可以为多个客户机服务,客户机也可以打开多个窗口,连接多个服务器。 (7)分布性与共享性:资源在服务器端组织与存储,通过网络分散在多个客户端使用。

1.3 客户/服务器交互模式 1.3.4 容易混淆的术语 P16 1.服务器程序与服务器类计算机 1.3 客户/服务器交互模式 1.3.4 容易混淆的术语 P16 1.服务器程序与服务器类计算机 本书中用服务器(Server)这个术语来指那些运行着的服务程序。用服务器类计算机(Server-Class Computer)这一术语来称呼那些运行服务器软件的强大的计算机。例如,“这台机器是服务器”这句话应理解为:“这台机器(硬件)主要是用来运行服务器进程(软件)的”,或者“这台机器性能好,正在运行或者适合运行服务器软件”。其他书籍中,服务器(Server)一词有时指的是硬件,即“运行服务器软件”的机器。

1.3 客户/服务器交互模式 2.客户与用户 “客户”(client)和服务器都指的是应用进程,即计算机软件。 1.3 客户/服务器交互模式 2.客户与用户 “客户”(client)和服务器都指的是应用进程,即计算机软件。 “用户”(user)指的是使用计算机的人。 如图所示说明了这些概念的区别。表示用户和客户机、服务器和服务器类计算机。

1.3 客户/服务器交互模式 1.3.5 客户机与服务器的通信过程 P16 客户机与服务器的通信过程一般是这样的: 1.3 客户/服务器交互模式 1.3.5 客户机与服务器的通信过程 P16 客户机与服务器的通信过程一般是这样的: (1)通信之前,服务器必须先行启动,并通知它的下层协议栈做好接收客户机请求的准备,然后被动地等待客户机的通信请求,称服务器处于监听状态。

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

1.3 客户/服务器交互模式 1.3.6 网络协议与C/S模式的关系 P17 1.3 客户/服务器交互模式 1.3.6 网络协议与C/S模式的关系 P17 客户机与服务器作为两个软件实体,它们之间的通信是虚拟的,是概念上的;实际的通信要借助下层的网络协议栈来进行。在发送端,信息自上向下传递,每层协议实体都加上自己的协议报头,传到物理层,将数据变为信号传输出去;在接收端,信息自下向上传递,每层协议实体按照本层的协议报头进行处理,然后将本层报头剥去。

1.3 客户/服务器交互模式 1.3.7 错综复杂的客户/服务器交互 P17 在C/S模式中,存在着三种一个与多个的关系: 1.3 客户/服务器交互模式 1.3.7 错综复杂的客户/服务器交互 P17 在C/S模式中,存在着三种一个与多个的关系: (1)一个服务器同时为多个客户服务。 (2)一个用户的计算机上同时运行多个连接不同服务器的客户机。 (3)一个服务器类的计算机同时运行多个服务器。

1.3 客户/服务器交互模式 如图所示为一台计算机中的多个服务器被多个计算机的客户访问。

1.3 客户/服务器交互模式 1.3.8 服务器如何同时为多个客户服务 P18 1.3 客户/服务器交互模式 1.3.8 服务器如何同时为多个客户服务 P18 一套计算机系统同时运行多个应用程序,称为多任务操作系统,支持多进程并发(Concurrency)执行。 并发性可使多个客户机同时获得服务,而不必等待服务器完成对上一个客户请求的处理。 并发服务器是动态操作的,服务器主线程为每个到来的客户机请求创建一个新的子服务线程。 主线程在创建了处理请求的子服务线程后,继续保持监听状态,等待下一个请求到来。

1.3 客户/服务器交互模式 如图所示为服务器创建多个线程来为多个客户服务。

1.3 客户/服务器交互模式 1.3.9 标识一个特定服务 P20 如上所述,在一台服务器类计算机中可以并发地运行多个服务器进程。考察它们与下层协议栈的关系,它们都运行在协议栈之上,都要借助协议栈来交换信息,协议栈就是多个服务器进程传输数据的公用通道,或者说,下层协议被多个服务器进程复用,在Internet中的实际情况就是这样。 如图所示,沙漏计时器形状的TCP/IP协议族。

1.3 客户/服务器交互模式 这就自然有了一个问题,既然在一个服务器类计算机中运行着多个服务器,如何能让客户机无二义性地指明所希望的服务?

1.3 客户/服务器交互模式 TCP使用协议端口号(Protocol Port Number)来标识服务。 1.3 客户/服务器交互模式 TCP使用协议端口号(Protocol Port Number)来标识服务。 当服务器程序开始执行时,在本地协议栈登记它的标识,指明所提供服务的端口号。 当客户机访问远程服务器,客户机提出请求,用服务器提供的端口号来指定所要的服务。 服务器端的传输协议栈则根据客户机提出的端口号来决定由哪个服务器程序来处理客户机的这个请求。 在服务器端计算机上,TCP用源协议端口号和目的协议端口号的组合来标识特定的通信。

1.4 P2P模式 P20 1.4.1 P2P技术的兴起 P21 C/S模式开始流行于20世纪90年代,该模式将网络应用程 序分为两部分,服务器负责数据管理,客户机完成与用户的 交互。该模式具有强壮的数据操纵和事务处理能力、数据的 安全性和完整性约束。 随着应用规模的不断扩大,软件复杂度不断提高,面对巨 大的用户群,单服务器成了性能的瓶颈。尤其是出现了DOS (Denial of Service,拒绝服务)攻击后,更突显了C/S模 式的问题。服务器是网络中最容易受到攻击的节点,只要海 量地向服务器提出服务要求,就能导致服务器瘫痪,以致所 有的客户机都不能正常工作。

1.4 P2P模式 1.4.2 P2P的定义和特征 P21 P2P技术就是一种在计算机之间直接进行资源和服务的共享,不需要服务器介入的网络技术。在P2P网络中,每台计算机同时充当着Server和Clent的角色,当需要其他电脑的文件和服务时,两台电脑直接建立连接,本机是Client;而当响应其他电脑的资源要求时,本机又成为提供资源与服务的Server。

1.4 P2P模式 P2P系统具有以下特征: (1)分散性。该系统是全分布式的系统,不存在瓶颈。 (2)规模性。该系统可以容纳数百万乃至数千万台计算机。 (3)扩展性。用户可以随时加入该网络。理论上其可扩展性 几乎可以认为是无限的。 (4)Servent性。每个节点同时具有Server和Cliert的特点, 称之为Servent。 (5)自治性。节点来自不同的所有者,不存在全局的控制者 ,节点可以随时加入或退出P2P系统。 (6)互助性。 (7)自组织性。大量节点通过P2P协议自行组织在一起,不存 在任何管理角色。

1.4 P2P模式 1.4.3 P2P的发展 P23 P2P的发展分为三代: 第一代以Napster系统为代表 。有一个中央索引服务器统一管理,对等点必须连接到该服务器。 第二代P2P使用基于分布式哈希表(Distributer Hash Table,DHT)的协议。不使用中央索引服务器,将索引路由表通过分布式哈希表分别存放在参与本P2P网络的计算机中,每个节点既请求服务,又提供服务。 第三代P2P采用混合型的覆盖网络结构,不需要专门的服务器。网络中所有的对等点都是服务器,并且承担很小的服务器功能,如维护和分发可用文件列表,通过计算快速获得资源所在的位置,将任务分布化。

1.4 P2P模式 1.4.4 P2P的关键技术 P22 (1)资源定位。 P2P网络中的节点会频繁地加入和离开,如何从大量分散的节点中高效地定位资源是一个重要的问题, (2)安全性与信任问题。这是影响P2P大规模商用的关键问题。在分布式系统中,必须将安全性内嵌到分散化系统中。 (3)联网服务质量问题(Quality of Service,QoS) 。用户需要的信息在多个节点同时存放,必须选择处理能力强、负载轻、带宽高的节点,来保证信息获得的质量。 (4)标准化。只有标准化,才能使P2P网络互联互通和大规模发展。

1.4 P2P模式 1.4.5 P2P系统的应用与前景 P22 (1)分布式计算及网格计算。 (2)文件共享与存储共享。 (3)即时通信交流。 (4)安全的P2P通信与信息共享。 (5)语音与流媒体。