前言
11.1 客户端-服务器编程模型
每个网络应用都是基于客户端-服务器模型的。
采用这个模型
- 一个应用是由一个服务器进程和一个或者多个客户端进程组成。
- 服务器管理某种资源,并且通过操作这种资源来为它的客户端提供某种服务。
客户端-服务器模型中的基本操作是事物(transaction)。一个客户端-服务器事物
- 当一个客户端需要服务时,它向服务器发送一个请求,发起一个事务
- 服务器收到请求后,解释它,并以适当的方式操作它的资源、
- 服务器给客户端发送一个响应,并等待下一个请求。
- 客户端收到响应并处理它。
认识到客户端和服务端是进程,而不是常提到的机器或者主机,这是非常重要的。
一台主机可以同时运行许多不同的客户端和服务器,而且一个客户端和服务器的事物可以在同一台或是不同的主机上
11.2 网络
客户端和服务器通常运行在不同的主机上,并且通过计算机网络的硬件和软件资源来通讯。
对主机而言,网络只是一种I/O设备,是数据源和数据接收方。
- 从网络上接收到的数据从适配器经过I/O和内存总线复制到内存,通常是通过DMA传送。
物理上而言,网络是一个按照地理远近组成的层次系统。最底层是LAN(local area network,局域网),在一个建筑或者校园范围内。
迄今为止,最流行的局域网技术是以太网(Ethernet)
- 一个以太网段(Ethernet segment)包括一些电缆(通常是双绞线)和一个集成器的小盒子
- 一端连接到主机的适配器,另一端连接到集线器的一个端口上。
- 集线器不加分辨地将从一个端口上收到的每个位复制到其他所有的端口上。因此,每台主机都能看到每个位
每个以太网适配器都有一个全球唯一的48位地址,它存储在这个适配器的非易失性存储器上。一台主机可以发送一段位(称为帧(frame))到这个网段内的其他任何主机。每个帧包括一些固定数量的头部(header)位,用来标识此帧的源和目的地址以及此帧的长度,此后紧随的就是数据位的有效载荷(payload)。每个主机适配器都能看到这个帧,但是只有目的主机实际读取它。
使用一些电缆和叫做网桥(bridge)的小盒子,多个以太网段可以连接成较大的局域网,称为桥接以太网(bridge Ethernet)