第十一章网络编程
11.1 客户端-服务器编程模型
包含一个服务器进程和多个客户端进程。
服务器管理某种资源,并通过操作这种资源给客户端提供某种服务。
基本操作是:事务
一个客户端-服务器事务由以下四步组成:
- 当一个客户端需要服务时,他向服务器发送一个请求,发起一个事务
- 服务器收到请求,就解释它,并以适当的方式操作它的资源
- 服务器给客户端发送一个响应,并等待下一个请求。
- 客户端收到响应并处理它。
11.2 网络
一个以太网段包括一些电缆和集线器。区域较小。每根光缆带宽相同,集线器把收到的所有端口的每个数据复制到所有端口上,因此每个主机都能收到每个位。
一台主机可以发送帧(frame)到这个网段内的任何主机。
电缆通过网桥,使得多个以太网段得以链接成较大的局域网,称为桥接以太网。
网桥自动学习主机通过哪个端口可达,有选择的发送帧。节省了带宽。
如果主机A发送一个帧到一个不同网段的主机C,那么网桥X只会把此帧复制到和网桥Y相连的端口上,网桥Y把此帧复制到主机C的网段链接的端口。
多个不兼容的局域网可以通过路由器连起来。组成一个互联网络。
每台路由器对于它所链接到的每个网络都有一个适配器。
通过协议软件,消除了不同网络的差异。协议控制主机和路由器如何协同工作来实现数据传输。
协议的基本能力:
- 命名机制:每台主机被分配一个互联网地址,这个地址唯一的标识了这台主机
- 传送机制:互联网协议把数据为组合成不连续的片
图中LAN1的主机A到LAN2的主机B需要的步骤:
- 运行在主机A的客户端进行一个系统调用,从客户端的虚拟地址空间复制数据到内核缓冲区中
- 主机A上协议软件通过数据附加在互联网络包头和LAN1帧头,创建了一个LAN1帧。(互联网络包头寻址到网络主机B,LAN1帧头寻址到路由器),然后它传送此帧到适配器,LAN1帧的有效载荷是互联网络包,互联网络包的有效载荷是实际的用户数据
- LAN1适配器复制此帧到互联网上
- 传送到路由器时,路由器读取后传送到协议软件。
- 路由器读取出互联网地址,并把它作为路由表索引,确定向哪里发送这个包。然后路由器剥离旧的LAN1的帧头,加上寻址到主机B的帧头,并把帧传送到适配器。
- 路由器的LAN2适配器复制该帧到网络上
- 帧到达主机B时,它的适配器从电缆上读到此帧,并传送到协议软件
- 最后主机B上的协议软件剥离包头和帧头,当服务器进行一个读取这些数据的系统调用时,协议软件把得到的数据复制到服务器的虚拟空间。