客户端和服务器通常运行在不同的主机上,通过计算机网络的硬件和软件资源来通信。网络是个复杂的系统,这里我们从程序员的角度来介绍一下网络相关的概念。
对主机而言,网络只是一种I/O设备,是数据源和数据接收方。
一个插到I/O总线扩展槽的适配器提供了到网络的物理接口,从网络上接收到的数据从适配器经过I/O和内存总线复制到内存。相似地,数据也能从内存复制到网络。
物理上而言,网络是一个按照地理远近组成的层次系统。最低层是LAN(local area network,局域网),如一个公司或学校的局域网。局域网有多种形式,但后来以太网(Ethernet)被证明是适应力极强的,因此成为最流行的局域网技术。
一个以太网段包括一些电缆和一个叫集线器的小盒子。以太网段通常跨越一些小的区域,如某个房间。每根电缆都有相同的最大位带宽,通常是100Mb/s或1Gb/s。一端连接到主机的适配器,一端连接到集线器的一个端口。集线器不加分辨地将从一个端口收到的每个位复制到其他所有端口上。因此,每台主机都能看到每个位。
每个以太网适配器都有一个全球唯一的48位地址,它存储在这个适配器的非易失性存储器上,一台主机可以发送一段位(帧)到这个网段内的其他任何主机。每个帧包括一些固定数量的头部位(header),用来标识此帧的源和目的地地址以及此帧的长度,紧随其后的就是数据位的有效载荷(payload)。每个主机适配器都能看到这个帧,但只有目的主机实际读取它。
使用电缆和叫做网桥(bridge)的小盒子,多个以太网段可以连接成较大的局域网,称为桥接以太网(bridged Ethernet)。
桥接以太网能够跨越整个建筑物或校区。在一个桥接以太网里,一些电缆连接网桥与网桥,一些连接网桥与集线器。这些电缆的带宽可以是不同的。如上图所示,网桥与网桥之间的电缆有1Gb/s的带宽,而网桥与集线器之间的电缆带宽是100Mb/s。
网桥比集线器更充分地利用了电缆带宽。利用一种聪明的分配算法,它们随着时间自动学习哪个主机可以通过哪个端口可达,然后只在必要时,有选择地将帧从一个端口复制到另一个端口。如主机A发送一个帧到同网段的主机B,当该帧到达网桥X的输入端口时,X就将此帧丢弃,因此节省了其他网段上的带宽。而当主机A发送一个帧到一个不同网段上的主机C时,网桥X就会把此帧复制到与网桥Y相连的端口上,网桥Y只会把此帧复制到与主机C的网段连接的端口。
在更高的层次上,多个不兼容的局域网通过叫路由器(router)的特殊计算机连接起来,组成一个互联网络(internet)。每台路由器对于它所连接到的每个网络都有一个适配器。路由器也能连接高速点对点电话连接,这是称为WAN(Wide Area Network,广域网)的示例。下图是一个互联网络的示例。
互联网络重要的特性是能由采用完全不同和不兼容技术的各种局域网和广域网组成。