《精编》计算机网络客户服务器模式应用程序接口

1 互联网应用模式和API 客户 服务器工作模式 应用程序接口API 2 客户 服务器工作模式 C S的基本概念C S关系与软件特点C S工作过程与并发协议端口号 3 C S模式部分的重点与难点 1 C S模式的基本概念2 C S的工作过程 以及C S软件的各自特点3 协议端口号及应用4 插口地址概念 重点理解 主要了解 1 熟知的协议端口号与使用2 互联网C S工作模式与TCP IP的关系3 服务器并发处理 4 相互作用的客户 服务器 Client Server 模型 在TCP IP互联网中 进程间相互访问的模式主要是客户 服务器交互模式 客户和服务器分别是两个应用程序 进程 客户向服务器发出服务请求 服务器做出响应 进程 Process 就是运行中的程序 解决具体应用问题的逻辑处理和通信进程总称为 应用进程 5 为什么选择客户 服务器模式 第一个原因 互联网中资源 运算能力和信息不均等的现实 资源 运算能力不均 小到一个物理网络 往往是某些主机拥有大容量的外存 某些主机只有很少外存或没有外存 有些主机拥有打印机 有些主机没有 大到整个互联网 少数网点拥有超速运算能力 而大量网点由PC机构成 信息分布不均 比如名字信息 地址信息等 这些信息往往以数据库形式存在于少数特权主机当中 供局部或全局访问 这些信息一般具有公用性 为了节约整个网络的资源 没有必要在每一台机器上都维持一个拷贝 不均等现象不可避免 而客户 服务器模式体现了这种现象并很好地适应了这种现象 6 第二个原因 是技术性的 互联网进程通信与单机进程通信不同 互联网通信完全是异步的 无法知道哪个主机会在何时发起通信 因此 需要一种机制 为准备通信的进程之间建立联系 为两者的数据交换提供同步 C S模式是客观现实与技术实现相结合的产物 首先 什么是早期单机应用软件的工作方式 和早期单机应用软件一般只和本机资源交互 包括通信串 并口 当出现网络应用后 应用软件需要通过网络访问资源 交互信息 寻找一种基于网络的信息交互 计算分布模式 7 网络中计算机进程间通信同样存在主叫和被叫 但没有振铃机制 通信进程间收 发协调怎么办 互联网采用最简单的约定方式 C S模式 电话通信的呼叫模式 主叫发起通信 被叫振铃和提机 开始通信 振铃机制实现依赖信令系统控制处理 协调双方通信 收 发 矛盾 在网络环境下 许多问题的解决往往是通过位于不同主机中的多个进程之间的通信和协同工作来完成的 网络的进程之间怎样相互协同开始工作 为什么要C S模式 8 2000年前后 SIP协议的发展类似信令系统的互联网会话 呼叫 系统 可定义更丰富的会话模式 传统TCP IP网络应用程序使用客户 服务器模式 但C S不是所有应用交互会话模式 如IP电话 视频会议 多方游戏等 在客户 服务器模式中 每次通信均由客户进程发起 服务器进程从开机起就处于等待状态 这可保证服务器随时对客户请求做出响应 9 C S模式是约定客户请求 发起 通信 服务器响应通信 提供特定的服务 基本可以理解为请求 应答的分布计算 会话 模式 互联网将网络软件分为客户 client 服务器 server 客户和服务器都指通信中所涉及的两个应用进程 即本质是计算机软件 10 客户软件的特点 在进行通信时临时成为客户 但它也可在本地进行其他的计算 提供用户端基本应用功能框架 被用户调用 在用户本地计算机上运行 在需要时主动向远地服务器发起通信 可与多个服务器进行通信 通常不需要特殊的硬件和很复杂的操作系统 11 服务器软件的特点 专门用来提供某种服务的程序 可同时处理多个远地或本地客户的请求 在共享计算机上运行 当系统启动时即自动调用并一直不断地运行着 被动等待并接受来自多个客户的通信请求 一般需要强大的硬件和高级的操作系统支持 12 两个术语 在C S模式中 服务器 被动等待通信的程序 不是计算机 服务器级计算机 运行服务器软件的功能强大的计算机 硬件厂商把具有高速CPU 大容量存储器 功能强大的操作系统的计算机称为服务器 其实应该称为服务器级计算机 13 数据链路层 物理层 运输层 网络层 数据链路层 物理层 运输层 网络层 应用层 应用层 因特网 计算机A 计算机B 1C S工作建立过程 请求 应答 数据交互 TCP IP系统支持 C S工作过程和并发 14 C S模式的传输机制 面向连接传输 使用面向连接的传输协议时 两个应用必须首先建立一个连接 然后在该连接上发送数据 无连接传输 应用可以利用无连接接口在任何时间向任何目的发送消息 客户和服务器在通信时 既可以使用面向连接传输协议 又可以使用无连接传输协议 当使用面向连接传输时 客户需要首先形成一个到特定服务器的连接 该连接在客户发送请求和接收响应的过程中保持不变 当客户完成对服务的使用时 必须关闭这一连接 15 一台计算机上可以运行多种服务器 1 充分利用硬件资源 硬件可以被多种服务所共享 减少系统管理负载 因为这种情况可以减少被管理的计算机系统的数量 如果对服务的需求比较低 那么把服务器合并到一台计算机上能够显著地减少开销 而且并不会明显地降低性能 16 2服务器多重服务 单计算机可安装多服务器软件来提供多重服务 在等待的时候不占用资源 但同时响应需要系统较多资源支持 数据链路层 物理层 运输层 网络层 数据链路层 物理层 运输层 网络层 数据链路层 物理层 运输层 网络层 应用层 应用层 应用层 计算机A 计算机B 计算机C 客户1 服务器1 服务器2 客户2 因特网 17 并发性 客户 服务器交互模型的基础 并发服务器可以同时为多个客户提供服务 并不需要每个客户等待前一个客户的请求完成大多数并发服务器都是动态操作的 即只有当请求到达时 服务器才会动态地为到来的请求创建一个新的线程 服务器程序由两部分组成 主线程和服务线程 主线程 负责接收请求并为请求创建一个服务线程来处理请求 并使服务器保持活跃状态 主线程在创建处理请求的服务线程之后 会等待另一个请求的到来 服务线程 负责处理每个请求 然后终止 如果N个客户同时请求一台计算机上的给定服务 则会有N 1个线程提供服务 主线程等待额外的请求 N个服务线程与每个客户进行交互 在互联网中 客户发起请求完全是随机的 很有可能出现多个请求同时到达服务器的情况 18 数据链路层 物理层 运输层 网络层 数据链路层 物理层 运输层 网络层 数据链路层 物理层 运输层 网络层 应用层 应用层 应用层 计算机A 计算机B 计算机C 客户1 因特网 3服务器并发 一个服务器同时响应多个请求 即服务器并发执行是基本的 而不是逐个响应 一个服务器软件包括 接收请求 处理单个请求和生成新线程三部分 当请求到达时 服务器将它交给一个控制线程 副本 和已有线程并发 服务器1 19 复杂的C S交互 实际大型网络应用S软件系统中 C S的交互可能是复杂的过程 1 客户应用不限制访问一个服务器 客户一个应用可以成为多个不同服务器 可能不同计算机上 的客户 要处理多个服务器通信 2 提供某种服务的服务器同时能成为另一个服务的客户 如文件服务器在进行文件服务处理时需要记录时间 可能又要访问时间服务器 3 可能发生服务器的循环依懒 在两个服务器间 或多服务器之间的依懒环 20 数据链路层 物理层 运输层 网络层 数据链路层 物理层 运输层 网络层 因特网 计算机A 计算机B 协议端口号 C与S之间怎样准确识别特定服务 21 一台运行多种服务器的计算机上 每种服务器如何识别发给自己的请求 解决方法 传输协议为每种服务分配一个惟一的标识符 服务器和客户必须使用这一标识符 服务器开始运行时 它向本地协议软件注册它使用的服务标识符 客户访问远程服务器时 需要指定对应的服务标识符 客户计算机上的传输协议软件在发送请求时 向服务器计算机发送这一标识符 服务器计算机上的传输协议软件使用这一标识符决定处理这一请求的服务器程序 22 端口 端口就是运输层服务访问点TSAP端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层 以及让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程 从这个意义上讲 端口是用来标志应用层的进程 服务器通过它明确所提供的服务 23 21 23 25 53 69 161 应用层 传输层 端口层 24 源端口 目的端口 TELNETB 目的端口号 23把包发送到我的TELNET应用中 A B 25 端口 端口用一个16bit端口号进行标志 端口号只具有本地意义 即端口号只是为了标志本计算机应用层中的各进程 在因特网中不同计算机的相同端口号是没有联系的 26 两类端口 一类是熟知端口 其数值一般为0 1023 当一种新的应用程序出现时 必须为它指派一个熟知端口 另一类则是一般端口 用来随时分配给请求通信的客户进程 27 TCP IP定义的应用程序熟知端口 FTP 21 Telnet 23 SMTP 25 DNS 53 TFTP 69 HTTP 80 SNMP 161 协议端口号定义 而一般端口 是可以由系统开发人员随时定义分配的 28 通常TCP IP的主要端口号 1 225之间 端口号256 1023由Unix系统占用 端口号1024 5000作为临时端口分配 5000以上 作为其他服务器 不常出现 标准简单服务端口号 29 为什么服务器端口号一定是唯一定义的 而客户端的端口号可以是按定义的 也可以临时自指定的 只具有本地意义 为什么服务器端口号一定是唯一定义的 而客户端的端口号可以是按定义的 也可以临时指定的 答 协议端口号解决是C S交互过程中服务器定位问题 使所有客户都能正确找到需要的服务 所以服务器端口一定唯一确定的 而客户源端口号只对客户自己有效 一计算机可以有多个应用进程 通过不同的端口号 源不同 目的相同 源同 目的不同 均不同 同时进行多任务处理 此时TCP UDP IP完成复用与分用 协议端口号解决是C S交互过程中服务器定位问题 使所有客户都能正确找到需要的服务 所以服务器端口一定唯一确定的 而客户源端口号只对客户自己有效 30 实际通过TCP应用 除端口外 还必须有IP地址 TCP连接的两个端点 端与端通信 是由端点地址 IP地址 端口号 确定 IP地址 端口号 也被称为插口 Socket 或者端地址 EndpointAddress 实际通过TCP通信 除端口外 为什么必须有IP地址 31 TCP UDP协议插口 从IP包结构看 网络应用进程通信需要端地址 IP地址 端口号 32 总结 1 什么是C S工作模式 2 网络应用为什么需要C S模式 3 为什么通常服务器软件复杂 4 应用进程通信端口地址 为什么还要IP地址 是否需要物理网地址 33 作业 1 客户软件和服务器软件主要特点 2 一个服务器软件通常需要包括哪些主要的功能部分 3 为什么通常服务器端口号是唯一定义的 而客户端的端口号可以临时指定 34 应用程序接口API 1应用程序接口概述 2套接字API基本结构 3实现套接字API的过程 4套接字API的其它问题 5套接字API实现实例 35 1 应用编程接口的概念与重要性2 套接字API的特点 函数 参数3 Socket套接字API实现的基本过程 重点理解 主要了解 1 套接字API主要过程的作用2 套接字继承与服务器并发 36 应用程序接口概述 C S模式解决了应用程序通过互联网交互方式 等待 请求 并通过端口号来标识服务器提供的某种服务 尽管TCP IP并不复杂 但应用程序编写当然不希望每次逐一填写TCP IP的各个报头 应用程序对网络低层通信细节实际不想关心 所以在应用程序和通信网络之间怎样形成标准的接口 API 应用程序只需要通过API就能完成通信和数据交互 是网络应用发展的一大进步 互联网应用程序怎样和TCP IP协议通信接口 即C S编程怎样使用TCP IP协议进行通信与数据交互 传统通过网络 DDN FR ATM 的交互 使用计算机串行接口或LAN仿真 通信网把数据