1.1 计算机网络概述
网络(network)的主要作用是为用户尽可能快速、正确地传递信息。早期的网络主要是指向用户提供电话、电报及传真服务的电信网络(telecommunication network)。随着电视的出现,便有了向用户提供各种电视节目的有线电视网络(CATV)。随着计算机技术和通信技术的发展,产生了计算机网络(computer network),用户通过它能够快速传送数据文件,以及从网络上共享、查找并获取各种有用资料。与电信网络和有线电视网络一样,计算机网络也是一种通信基础设施,但与它们不同的是,计算机网络的端设备是功能强大的计算机,其上运行的各种应用程序利用计算机网络为用户提供更加丰富多彩的服务和应用。
随着技术的进一步发展,传统的电信网络和有线电视网络逐渐融入了计算机网络技术,产生了“网络融合”的概念,即“三网合一”,每一个网络都可为用户提供话音、视频、数据业务。计算机网络的端设备不再仅仅是功能强大的计算机,还包括其他非传统计算机的数字设备,如智能手机、个人数字助手(PDA)、电视、汽车、家用电器、摄像机、传感设备等。可以将这些连接在网络上的计算机和非计算机设备统称为主机(host)。
因此,计算机网络可以定义为由通信信道连接的主机和网络设备的集合,可以方便用户共享资源和相互通信。
1.1.1 网络结构和组成
计算机网络由若干节点(node)和连接这些节点的链路(link)组成。网络中的节点主要包括两类:端系统和中间节点。端系统(end system)即主机,通常是指网络边缘的节点;中间节点主要包括集线器、交换机、路由器、自治系统、虚拟节点和代理等网络设备或组织。链路则可以分为源主机到目的主机间的端到端路径(path)和两个节点之间的跳(hop)。
网络和网络通过互联设备(路由器,router)互联起来,可以构成一个覆盖范围更大的网络,即互联网(internet或internetwork),或称为网络的网络(network of networks),泛指由多个计算机网络互连而成的网络,这些网络之间的通信协议可以是任意的。因特网(Internet)是全球最大的、开放的互联网,它采用TCP/IP协议族作为通信的规则,其前身是美国的ARPANET。
随着网络规模的不断扩大及美国政府不再负责因特网的运营,今天的因特网形成了一个多层次ISP结构的网络,图1-1所示的是一个三层ISP结构的因特网。
图1-1 基于ISP的多层结构的因特网的概念示意图
ISP(Internet Service Provider)即因特网服务提供商,为用户提供因特网接入服务。在该层次结构的顶层,即第一层(tier-1),也称骨干层(或主干层),由几个专门的公司(如AT&T,Level 3 Communications,NTT等)创建和维持,服务面积最大,通常能够覆盖到整个国家,甚至国际区域,其链路传输速率通常高达数十Gb/s,骨干路由器能以极高的速率转发分组。第一层ISP(骨干ISP)之间会相互连接,每个骨干ISP还会与大量的第二层ISP相连。第二层ISP也称为区域ISP(regional ISP)或地区ISP,具有覆盖一个国家或地区的规模(如中国电信、中国移动、中国联通等),且向上与少数第一层ISP相连或与其他同层ISP相连,提供的数据带宽也低于骨干ISP。第三层中的本地ISP给端用户提供直接的网络接入服务,它们可以直接连接到地区ISP,也可以连接到第一层中的骨干ISP。在这样一个网络结构中,只要每一个本地ISP都通过路由器连接到某个区域ISP,每个区域ISP再连接到骨干ISP,那么这些相互连接的ISP就可以完成因特网中的所有的分组转发任务。但为了进一步提高效率,以应对日益增长的网络流量,人们提出了因特网交换节点IXP(Internet eXchange Point)的概念。IXP的主要作用是允许两个网络直接相连并交换网络分组,而不需要再通过第三个网络来转发,图1-1中的主机A和主机B通信时,其网络分组无须通过第一层ISP,而是直接在两个第二层的地区ISP间用高速链路对等地交换分组。这样既减少了迟延时间,也降低了费用,同时让整个网络的流量分布更合理。
上述因特网结构看上去非常复杂,并且在地理上实现了全球覆盖,但从其组成上看,只由两部分组成:边缘部分和核心部分,如图1-2所示。
边缘部分包括所有连接在因特网上的主机(用户直接使用的),以及将因特网边缘中的用户主机与因特网核心连接起来的通信链路组成的接入网。接入网通常是指将端系统连接到边缘路由器(edge router)的物理链路及设备的集合。图1-3显示了几种典型的接入链路。
图1-2 因特网的组成:边缘与核心
图1-3 几种典型的接入链路
(1)用于连接商业或教育机构等企业网络的接入方法,主要包括光纤接入和以太网接入。
(2)用于连接移动端系统的无线接入方式,主要包括蜂窝移动网络(3G/4G/5G)、无线局域网络(Wi-Fi)等。
(3)用于连接家庭网络的住宅接入方式,主要包括拨号接入(dial up)、数字用户线(Digital Subscriber Line,DSL)、混合光纤同轴电缆(Hybrid Fiber coaxial Cable,HFC)和光纤到户。其中,光纤到户是目前主流的住宅接入方式。
核心部分由大量网络和连接这些网络的路由器组成,为边缘部分提供连通性和数据交换服务。核心部分的关键设备是路由器,它的主要功能是实现网络分组的交换。
分组交换采用存储转发技术,在发送数据之前,一般需要将较长的报文划分成一个个更小的数据段(以等长为主),在每一个数据段之前加上一些必要的控制信息组成首部(header),有些情况下还需要在数据段之后加上一些控制信息(尾部,如检验和),就构成了一个分组(packet),也称之为“包”。分组是因特网中传送的数据单元。分组中的首部对于分组在网络中的正确传输有重要意义,例如首部中的目的地址信息告诉网络应该将分组传送到哪里去,是网络选择传输路径的重要依据。主机将分组交给网络中的路由器后,路由器每收到一个分组,先暂时存储一下,检查其首部,查找路由表,按照首部中的目的地址,找到合适的端口转发出去,把分组交给下一个路由器,直到到达目的主机所在的路由器后由该路由器交给目的主机。
1.1.2 网络体系结构
计算机网络之所以能够做到有条不紊地交换数据,是因为网络中的各方都遵守一些事先约定好的规则。这些规则明确规定了所交换的数据的格式及有关的同步问题。这些为进行网络中的数据交换而建立的规则、标准或约定即称为网络协议。
协议的定义类似于语言的定义。从语言的角度来看,网络协议主要有三个要素:语法、语义和同步。下面我们来进一步解释这三个要素的含义。
在语言学中,语义是指语言组成成分(词、句等)的含义。语法是指这些语言组成成分之间以什么样的关系结合而构成语句或语言,也即是语言的结构方法和构成规则。在网络协议中,可以将交换的报文(也称为协议数据单元或PDU)分为两种:用于传输用户数据的数据报文和用于协议控制的控制报文。网络协议中的语法体现为数据报文中的控制信息(通常在报文的首部)和各种控制报文的结构、格式,也即是规定报文的长度、报文中划分多少个域(field)、每个域的名称、意义、数据类型、长度等。其中,报文中各个域的类型、长度及相互间的位置、顺序关系则构成了词法。词法也是语法的一个组成部分。
网络协议的语义可以理解为协议数据报文中的控制信息和控制报文所约定的含义,即需要发出何种控制信息,完成何种动作,以及做出何种响应。例如:报文首部控制信息中的目的地址信息指明了报文的目的地,接收到此报文的网络节点均将其作为进行路由选择的依据,因而规定在首部控制信息中在给定域给出目标节点地址就是一种语义。又例如,为了实现有连接的传输服务,设计了一套实现连接的控制报文。发起连接方构造一个请求连接的协议控制报文,这个“请求连接”就是该控制报文的语义。接收端收到这个控制报文后,根据已知的格式分析规定域中报文的类型码就可了解这个“请求连接”的语义,从而给出“允许连接”或“拒绝连接”的响应。“允许连接”报文和“拒绝连接”报文的格式和语义也是协议中约定好的,通信双方通过这些约定语义的控制报文按一定时序关系的交换即可实现建立连接的功能和提供连接服务。
网络协议的同步是指事件实现顺序的详细说明。具体来说,同步是指通信过程中各种控制报文传送的顺序关系,例如“允许连接”或“拒绝连接”报文必须是作为请求连接报文的一种响应来发送的,“拆除连接”报文也必须在建立连接后的某种条件下发送等。这种控制报文发送的时序关系,也决定了通信双方所处的通信状态(发送状态、接收状态、等待状态等)的制约关系。在有些文献中,也将这种同步关系视为协议语法的一部分。
大量的经验表明,对于非常复杂的计算机网络协议,通常采用分层结构。在计算机网络中,将计算机网络的各层及其协议的集合,称为网络的体系结构(architecture)。比较著名的网络体系结构主要有两个:国际标准化组织(ISO)制定的开放系统互连参考模型(OSI/RM,Open System Interconnection/Reference Model)和IETF的TCP/IP体系结构。尽管OSI/RM从整体上来讲未被采用,但其制定的很多网络标准仍在今天的因特网中得到了广泛应用。TCP/IP与OSI/RM体系结构如图1-4所示。
在体系结构的框架下,网络协议可定义为:为网络中互相通信的对等实体间进行数据交换而建立的规则、标准或约定。实体(entity)是指任何可以发送或接收信息的硬件或软件进程。在许多情况下,实体就是一个特定的软件模块。位于不同子系统的同一层次内交互的实体,就构成了对等实体(peer entity)。网络协议是计算机网络不可缺少的组成部分,它保证实体在计算机网络中有条不紊地交换数据。
因特网体系结构,即TCP/IP体系结构(也称为“TCPIP协议栈”)共有四个层次,如图1-4(a)所示。
由于TCP/IP在设计时考虑到要与具体的物理传输媒体无关,因此在TCP/IP的标准中并没有对OSI/RM体系结构(图1-4 (b)所示)中的数据链路层和物理层做出规定,而只是将最低的一层取名为网络接口层。这样,如果不考虑没有多少内容的网络接口层,那么TCP/IP体系实际上就只有三个层次,从高到低分别是:应用层、运输层和网络层。
图1-4 TCP/IP与OSI/RM体系结构
TCP/IP的最高层是应用层。在这层中有许多著名协议,如域名解析协议DNS、超文本传送协议HTTP/HTTPS、文件传送协议FTP、简单邮件传送协议SMTP、邮局协议POP3、交互式邮件存取协议IMAP、简单网络管理协议SNMP、远程终端协议Telnet等。对应于TCP/IP体系中的应用层,OSI/RM细分为三个层次:会话层、表示层和应用层。
再往下的一层是TCP/IP的运输层(或传输层)。这一层包括两个重要的协议,一个是面向连接的传输控制协议TCP(Transmission Control Protocol),另一个是无连接的用户数据报协议UDP(User Datagram Protocol)。
运输层下面是TCP/IP的网络层(或网际层),其主要的协议就是无连接的网际协议IP(Internet Protocol),有两个主要版本IPv4和IPv6。与网际协议IP配合使用的还有四个协议,这就是Internet控制报文协议ICMP(Internet Control Message Protocol)、Internet组管理协议IGMP(Internet Group Management Protocol)、地址解析协议ARP(Address Resolution Protocol)和逆地址解析协议RARP(Reverse Address Resolution Protocol)。与IP协议一样,ICMP协议也有两个主要版本ICMPv4和ICMPv6。此外,网络层还有完成路由功能的协议,如BGP(Border Gateway Protocol)协议和OSPF(Open Shortest Path First)协议。
在因特网体系结构中没有定义的数据链路层和物理层也是非常重要的网络层次,它们在OSI/RM中有详细定义。详细内容读者可参考文献[1]。