网络应用软件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
24
2003-2-25
协议端口和并发服务器
明显的问题
– – – –
一个端口号只能标记一个服务 并发服务器同时有多个服务在运行 客户端和服务器间可能交互 传送到到同一服务器端口的信息必须进一步正确转交 给相应的线程
25
2003-2-25
协议端口和并发服务器(续)
问题解决方案: 同时利用客户端信息和服务器来 标识数据包 TCP 用四项信息来确认连接
– – – –
服务器的IP地址 服务器的协议端口号 客户端的IP地址 客户端的协议端口号
26
2003-2-25
Demultiplexing in a Concurrent Server
传输协议给每个客户和服务器分配一个标识符.服 务器计算机上的协议软件通过使用客户、服务器 标识符的合并来选择正确的并发服务器的副本.
36
2003-2-25
创建一个 Socket
应用程序调用 socket 函数 desc = socket(protofamily,type,proto); OS 返回 socket 的描述符 描述符有效至应用程序关闭或退出socket 一般: protofamily = PF_INET, 表示TCP/IP协 议族 type = SOCK_STREAM or流 SOCK_DGRAM报文
41
2003-2-25
TCP/IP 地址形式
struct sockaddr_in { u_char sin_len; /*length of address*/ u_char sin_family; /*family of address*/ u_short sin_port; /*protocol port number*/ struct in_addr sin_addr; /*IP address*/ char sin_zero[8]; /*not used(set to zero)*/ }
43
2003-2-25
Socket操作(续)
连接
– –
供客户端使用 完成以下其中任一个 完成一个 TCP 连接 为 UDP指明地址
初始化连接,或是接收来自远程计算机的连接请求。而 是在任何通信中,必须要有两个应用程序共同参与: 一个 发出连接请求,另外一个接受请求.
4
从这个角度看,internet更象一个电话系统。
2003-2-25
两个应用程序如何联系
一个应用程序
– –
首先开始执行 在预先设定的位置等待 随后开始执行 主动联系低一个程序
34
2003-2-25
Socket
一种OS 抽象 (而非硬件的) 动态生成 仅在应用程序运行时启用 用描述符来标识一个套接字 当应用调用底层过程通过网络传输数据时,应用 会把该描述字作为一个参数,这样就无需知道远 程目标的细节。
35
2003-2-25
描述符Descriptor
小的整数 每个激活的 socket 一个 在所有的 socket操作中运用 当 socket 建立后由OS产生 只对拥有该socket的应用程序有意义 在 UNIX 下, 与文件描述符集成
39
2003-2-25
Socket 的操作
捆绑
– – –
为socket指定端口 为 socket 指定一个本地IP地址 对任意IP地址可以使用 INADDR_ANY
bind(socket,localaddr,addrlen);
40
2003-2-25
通用地址格式
struct sockaddr { u_char sa_len; /*length of address*/ u_char sa_family; /*family of address*/ char sa_data[14]; /*address itself*/ }
27
2003-2-25
多协议均可到达的服务
服务器可能使用
– – –
无连接传输协议 (UDP) 有连接的传输协议 (TCP) 对某个服务同时使用两种通信形式 增加了服务的灵活性 服务器可以同时拥有多个端口号
同一种服务可以使用多种不同的传输协议
– –
28
2003-2-25
复杂的服务
服务器可以
– – – –
Socket API
初始设计
– –
为 BSD UNIX设计 与 TCP/IP 同时使用 成为工业标准 被许多操作系统支持
现况
– –
33
2003-2-25
套接字和套接字库
在没有提供本地套接字的计算机系统上,套接字 库能够为应用程序提供套接字API。 当应用调用某个套接字过程时,控制转向库例程, 这些库例程调用一个或多个底层操作系统的功能 来实现套接字功能.
37
2003-2-25
Socket 的功能
Socket 具有广泛的普遍性 可以被以下对象使用
– – – – –
客户端 服务器 CO 传输协议 CL 传输协议 用于发送/接收数据
具有大量的操作
38
2003-2-25
Socket 的操作
关闭
– –
停止使用 socket 永久性的
close(socket);
2003-2-25
由应用程序的决定
– – – –
3
要点
Although an internet system provides a basic communication service, the protocol software cannot initiate contact with, or accept contact from, a remote computer. Instead, two application programs must participate in any communication: one application initiates communication and the other accepts it. 虽然因特网提供了基本的通讯服务, 但是协议软件并不能
并发服务器
– –
22
2003-2-25
服务器的延迟
并发服务器
– –
服务器为每个请求建立新线程来处理 客户端只需等待请求被处理 客户端只能等待前面的请求被应答之后才能得到应 答 如果长请求阻塞了短请求,用户将无法得到应答
顺序服务器
– –
23
2003-2-25
服务器上的并发性
并发执行是服务器的基础.因为并发性允许多个客 户同时得到特定的服务,而不需要等待服务器完 成前面的请求. 在并发服务器上,主服务线程创建一个新的服务线 程来处理每一个客户请求.
Part XV
网络应用软件
第一讲 (客户-服务器 概念, 协议端口的使用, 套接字API)
应用层的功能
传输层及其以下层
– –
通讯基础 可靠性 抽象
文件 各种服务 数据库
应用层
–
–
定义了标识网络上物理的和抽象的资源的符号名称。
2003-2-25
2
二重性
网络
– –
传输位 在应用程序请求下工作 发送什么? 何时发送? 发送至何处? 每个位的含义
18
传输协议分配给每个服务一个唯一的端口标识符. 服务器 开始执行的时候必须指明标识符. 客户请求时也要指明标 识符.服务器上的协议软件利用标识符将到来的请求定向到 相应的服务器.
2003-2-25
理论上
端口号仅仅是数字 任何一个服务器都可以使用任何一个端口号
19
2003-2-25
实际上
协议端口号用来做服务的唯一标识符 需要统一的编号方式
2003-2-25
标识服务
使用协议端口号 每个服务给定唯一的端口号, P 服务器
– –
通知 OS 它正在使用端口 P 等待请求 提出请求 提交请求到服务器的端口 P
客户端
– –
17
2003-2-25
关于端口的要点
Transport protocols assign each service a unique port identifier. A server must specify the identifier when it begins execution. A client must specify the identifier when it requests transport protocol software to contact a server. Protocol software on the server computer uses the identifier to direct an incoming request to the correct server.
42
2003-2-25
Socket 操作(续)
监听
– –
供服务器使用 准备socket来接收到来的连接
listen(socket,queuesize); 接收
– –
供服务器使用 等待下一次连接并返回一新的 socket
newsock = accept(socket,caddr,caddrlen);
信息可以单向或双向地在客户和服务器之间流动。 虽然许多服务是由客户发送一个或更多请求,然后 服务器返回响应,但是其它的交互也是可能的.
12
2003-2-25
客户端,服务端及通信协议
客户端和服务端均为应用程序
13
2003-2-25
服务端 CPU 的使用情况
事实
–
服务器的操作类似于其他应用程序
用CPU 处理 使用I/O 操作
网络应用所使用的通信形式称为客户-服务器模式。服 务器应用被动地等待连接,而客户端软件则主动地初始 化通讯.
7
2003-2-25
客户端的特征
任意应用程序 临时成为客户 也可进行其他的计算 由用户直接触发 在本地机运行 动态连接到服务器端 一次只能连接一个服务器端
8
2003-2-25
服务器特征
有一定功能和权限的程序 专用于提供某种服务 可同时处理多个远程客户端连接 系统启动后自动运行 永远运行 需要高性能的计算机和操作系统支持. 被动等待客户连接 接收任意客户端的请求
–
等待数据在网络间传输不需要 CPU时间 服务器程序只有在需要服务一个请求时才使用 CPU
结果
–
14
2003-2-25
多种服务
在一台计算机上可以提供多种服务 服务器仅在被请求时才会使用处理器 同时提供多个服务需要功能强大的硬件
15
2003-2-25
多种服务图例
16
每个服务器可提供一个服务 一个服务器可处理多个客户端
与客户端的交互持续几小时甚至几天 发送短应答,然后结束交互 使用本地机的 I/O 作为客户端连接其他服务器 (潜在循环问题)
29
2003-2-25
循环问题举例
时间服务器
–
返还该天当时的时间 允许客户端读写文件 当文件需要时间标识时,可访问时间服务器
文件服务器
– –
假设程序员修改时间服务器,记录文件请求的日 志,会发生什么?
30
2003-2-25
协议软件的交互
客户端和服务器都使用传输协议 传输协议在OS内部 应用程序在 OS外部 两者之间需要连接
–
称为 应用程序接口 (API)
31
2003-2-25
应用程序接口(API)
操作系统的一部分 允许应用程序使用协议 定义
– –
允许的操作 每次操作的参数
32
2003-2-25
另一个应用程序
– –
称为: client-server interaction
5
2003-2-25
客户-服务器 模式
应用于所有的网络应用程序 等待被访问的程序叫做服务器 主动连接的程序叫做客户端
6
2003-2-25
网络通讯
All network applications use a form of communication known as the client-server paradigm. A server application waits passively for contact, while a client application initiates communication actively.
– –
允许任意的客户端在任意机器上连接到服务器 避免“服务目录帮助”的需要 整个因特网统一 由标准规定
端口号
– –
20
2003-2-25
术语
顺序程序
– –
绝大部分程序属于此类 单路控制 多路控制 并行完成 建立较困难
并发程序
– – –
21
2003-2-25
服务器和并发
顺序服务器
– –
也被称为循环式服务 每次只能处理一个请求 一次可以处理多个请求 无需等待
9
2003-2-25
术语
服务器
–
接收网络客户端连接请求的程序 运行服务程序的硬件设备
服务器级计算机
–
10
2003-2-25
Hale Waihona Puke Baidu据流
数据流的方向
– – –
仅仅从客户端到服务器 仅仅从服务器到客户端 双向流动
应用程序协议决定流向 标准通信模型
– –
客户端发请求 服务端响应
11
2003-2-25
主要思想