当前位置:文档之家› 网络编程技术复习课

网络编程技术复习课


服务器模型

多协议服务器
一个多协议服务器的设计允许设计者创建一个单一的过程, 此过程响应某个给定服务的请求,响应该过程的调用,而 不必关心这些请求是来自UDP还是TCP。 多协议服务器允许设计者将某个给定服务的所有代码封装 到一个程序里,这样就消除了重复,并且也更容易协调各 种变化。
服务器模型

服务器模型
单线程、并发服务器(TCP) 1、创建套接字并将其绑定到这个服务的熟知端 口上。将该套接字加到一个表中,该表中的项为 可以进行IO的描述符; 2、使用多路转接技术在已有套接字上等待IO; 3、如果最初的套接字准备就绪,通过接受连接 请求获得下一个连接,并将这个新的套接字加入 到表中,该表中的项是可以进行IO的描述符; 4、如果是最初的套接字以外的某些套接字准备 就绪,就读下一个请求,构造并发送响应;

客户和服务器使用send在TCP上传输数据。客户常使用send传输 请求,而服务器使用send传输应答。

客户和服务器使用recv在TCP上接收数据。服务器通过其接收客 户端请求,而客户端通过其来接收应答。
UNIX API

套接字篇
close bind
客户或服务器一旦结束使用某个套接字,便调用close将该套接 字撤销(引用为0时注1)。
服务器模型
并发、面向连接服务器(TCP) 主1.创建套接字并将其绑定到所提供服务的熟知地 址上 主2.将该端口设置为被动模式,使其准备为服务器 所用 主3.反复阻塞等待接受请求以便接收来自客户的下 一个连接请求,并创建新的从进程来处理响应 从1.针对主进程传递来的连接请求开始 从2.用该连接与客户进行交互:读取请求并发回响 应 从3.关闭连接并退出,在处理完来自客户的所有请 求后,从进程就退出
UNIX API

系统篇
多路转接:select
确定一个或多个描述符的状态(可读性、可写性、错误状 态),实现对多个描述符状态的并发“监听”。可用于实 现单线程的并发。

等待子进程终止:wait
父进程通过调用wait()而阻塞,并等待子进程终止。当 有子进程终止时,父进程可获得子进程的退出状态,清理 子进程的残余数据,并从阻塞中返回。

是指使用高层传输网络服务运送来自另一个服务的分组或报文。
当IP直接使用硬件发送数据报时,它将每个数据包封装进一个分 组中。当IP使用一个高层传输服务点对点发送数据包时,便创建 一个隧道。
应用级网关

应用网关定义
应用网关是一个程序,使用一个高层协议接受请求,并且使用另 一个高层协议处理请求。实质上,每个应用网关是提供某一服务 的服务器,也是另一个服务的客户。许多网点使用应用网关实现 授权和安全检查。
网络编程复习课
2014.6
CS模型

会聚点问题
CS模型要求在任何一对进行通信的应用进程中,有一 方必须在启动执行后(无限期地)等待对方与其联系。 这种解决方案减少了下层软件的复杂性,因为下层协 议不必自己对收到的通信请求做出响应。 Nhomakorabea
CS模型应用分类
CS模型根据通信发起的方向对程序进行分类,即区别 一个程序是客户还是服务器。一般来说,发起对等通 信的应用程序称为客户。
UNIX API

套接字篇
socket connect send(sendto) recv(recvfrom)
应用调用socket创建一个新的套接字,该新的套接字用于网络通 信,并返回该套接字的描述符。

创建一个套接字后,客户程序调用connect以便同远程服务器建 立主动的连接,并通过描述符来传输数据。
应用程序使用bind为一个套接字指定本地端点地址。对于TCP/IP 协议,端点地址使用sockaddr_in结构,它包含了IP地址和协议 端口号。

listen accept
面向连接的服务器调用listen将一个套接字置为被动模式,并使 其准备接受传入连接。 对于TCP套接字,服务器将调用accept以获取所指明的套接字的下一 个传入连接请求。
UNIX API

系统篇
创建进程:fork 创建线程:pthread_create 执行新程序:exec系列
父进程通过fork()创建子进程,返回两次,一次在父进 程,一次在子进程;出错则返回-1。

在当前进程中,创建一个新的线程,与当前运行的线程并 发执行。

当前进程映像替换成新的程序文件,而且该程序通常main 函数开始执行。
服务器模型

循环、无连接服务器(UDP)
1、创建套接字并将其绑定到所提供服务的熟 知端口上; 2、重复地读取来自客户的请求,构造响应, 按照应用协议向客户发回响应。
服务器模型

循环、面向连接服务器(TCP)
1、创建套接字并将其绑定到它所提供服务的熟知端口上。 2、将该端口设置为被动模式,使其准备为服务器所用。 3、从该套接字上接受下一个连接请求,获得该连接的新的 套接字。 4、重复地读取来自客户的请求,构造响应,按照应用协议 向客户发回响应。 5、与某个特定的客户完成交互时,关闭连接,并返回步骤 3以接受新的连接。
CS模型

特权
为完成计算和返回结果,服务器软件拥有系统特权来 访问受操作系统保护的对象(如文件、数据库、设备 或协议端口),但应注意不要将特权传递给使用服务 的客户。通常服务器含有处理以下安全问题的代码: 鉴别—验证客户身份 授权—判断某个库胡是否被允许访问服务器服务 数据安全—确保数据不被无意泄漏或损坏 保密—防止未经授权访问信息 保护—确保网络应用程序不能滥用系统资源
CS模型

状态
服务器所维护的与客户交互活动的信息称为状态息。不保 存任何状态信息的服务器称为无状态服务器,反之称为有 状态服务器。如果应用协议不能使操作成为幂等(注1)的, 就可能不能使无状态服务器。

有状态服务器的条件
在理想情况下,只要网络能可靠地交付所有的报文,并且 计算机从不崩溃,则在这种情况下,使服务器为每个进行 着的交互保持少量状态信息,就可以使交互的报文小些, 并使分布式应用更像非分布式应用。
服务器模型

预分配与延迟分配统一的基础
两者基于同一原理:通过把服务器的并 发等级从当前活跃的请求数目中分离出 来,设计人员可获得灵活性并提高服务 器效率。
封装技术与隧道技术

封装 隧道技术 区别
将一个IP数据报放进一个网络分组或帧以便在下层的网络上发送 它。封装涉及网络接口如何使用分组交换硬件。

多服务、多协议服务器
可以选择一种多服务的实现方法来构建多服务服务器, 以减少需要执行的服务器的数量;可以使用多协议以 便把无连接和面向连接的服务结合进一个服务器中。
程序员可以使用并发进程或线程实现一种并发的、多
服务服务器,也可以在单执行线程中使用多路转接技 术以提供表面上的并发性。
服务器模型

从进程/线程预分配
当使用预分配时,服务器在启动时就创建若干个并发的从线程/ 进程。预分配避免了在每次请求到达时创建进程的开销,因而降 低了服务器时延,同时允许在处理一个请求时,与另一个请求相 关联的I/O活动也在重叠进行。

延迟分配技术
当使用延迟分配技术时,服务器开始将循环地处理每个请求。仅 当处理要花大块时间时,服务器才创建一个并发的从线程/进程 来处理该请求。这种时延允许主服务器在创建一个进程或切换环 境前,先检查有无差错并处理一些短的请求。
相关主题