路由与交换技术
上QQ阅读APP看书,第一时间看更新

1.2 网络互联基础

现在是互联网的时代,网络通信在人类日常生活中发挥着越来越重要的作用,越来越多的日常活动依赖于互联网。本节将介绍以下内容。

(1)网络互联的基本概念。

(2)OSI参考模型。

(3)TCP/IP参考模型。

(4)数据的封装和解封装。

(5)常见协议和标准。

(6)基本网络类型和拓扑结构。

1.2.1 网络互联的基本概念

计算机网络起始于20世纪60年代,当时网络的概念主要是基于主机(Host)架构的低速串行(Serial)连接,提供应用程序执行、远程打印和数据服务功能,如图1-3(a)所示。IBM的系统网络架构(System Network Architecture,SNA)与非IBM公司的X.25公用数据网络是这种网络的典型例子。当时,由美国国防部资助,美国建立了基于分组交换(Packet Switching)的阿帕网(ARPANET),这个阿帕网就是今天Internet最早的雏形。

20世纪70年代,出现了以个人计算机为主的商业计算模式,如图1-3(b)所示。最初,个人计算机是独立的设备。由于商业计算的复杂性要求大量终端设备协同操作,局域网(Local Area Network,LAN)产生了。局域网的出现,大大降低了商业用户昂贵的打印机和磁盘费用。

20世纪80~90年代,因为远程计算的需求不断增加,迫使计算机界开发出多种广域网络协议,用于满足不同计算方式下远程连接的需求,如图1-3(c)所示。在此阶段,互联网得到了快速发展,TCP/IP(Transmission Control Protocol/Internet Protocol)被广泛应用,成为互联网的事实标准。

图1-3 计算机网络的发展

在实现了设备间的物理连接之后,请思考一下,应该如何实现数据上的互通。

为了方便大家理解网络互联的实现机理,可以对比生活中的例子来了解网络中数据通信的过程。

如图1-4所示,两台计算机通过一条网线直接连接,构成了一个最简单的网络,希望能够惜助于这样的网络实现两台计算机之间的数据通信,双方可以将文本、图片、视频等信息传递给对方。

图1-4 两台计算机直连通信

一个完整的数据通信系统由报文、发送方、接收方、传输介质和协议5个部分组成。以下分别对5个组成部分做详细的介绍。

● 报文(Message),通信中的数据块。文本、数字、图片、声音、视频等信息被编码后,以报文的形式传送。

● 发送方(Sender),发送数据报文的设备。它可以是计算机、工作站、服务器、手机等。

● 接收方(Receiver),接收报文的设备。它可以是计算机、工作站、服务器、手机、电视等。

● 传输介质(Medium),信号传送的载体。信号可以通过有线或者无线方式进行传输,局域网中常见的有线传输介质有光纤、同轴电缆、双绞线等。

● 协议(Protocol),管理数据通信的一组规则。它表示通信设备之间的一组约定。如果没有协议,即使两台设备在物理上是连通的,也不能通信。比如一个只能说汉语的人就无法与一个只能说英语的人进行语言交流。

数据通信的过程,有点类似现实生活中的物品快递服务,在流程上可以互相进行对比理解。表1-1描述了物品快递过程和数据通信过程的对比。

表1-1 快递过程和数据通信过程的对比

通过表1-1对于数据通信过程的描述可以了解到,在数据通信过程中,要实现数据的正确传递,要具备以下的前提。

(1)发送双方地址的标识。数据转发过程中,发送方和接收方的信息应该如何标识,类似于收件人/发件人姓名和地址。

(2)数据封装方式的协定。收发双方必须遵循相同的数据封装原则。譬如数据外层封装了几层包裹,每层包裹中携带了什么信息。

(3)数据信息解码。网络中,信息的表述是用二进制数字“0”“1”进行描述的。接收方要还原出具体的网络信息,譬如文字、图片、视频等信息,则必须提前协商好数据代表的具体含义。

上述的第一个问题,相信大家都能够回答,在计算机网络中,用于标识计算机的主要是IP地址和MAC地址两个参数。在本章的后续小节中,将对IP地址和部分常见协议进行详细介绍。接下来,首先来认识网络的分层模型。

IP网络基础——数据通信基础

1.2.2 OSI参考模型

在上文中提到,一个基本的数据通信系统由5个部分组成,其中比较关键的一个部分是网络协议。

在计算机网络中,所谓协议,就是为了使网络中的不同设备能进行数据通信而预先制定的一整套通信各方相互了解和共同遵守的格式和约定,是一系列规则和约定的规范性描述。协议定义了网络设备之间如何进行信息交换,是网络通信的基础。只有遵从相同的协议,网络设备之间才能够通信。如果一台设备不支持用于网络互联的协议,它就无法与其他设备进行通信。

以电话为例,必须首先规定好信号的传输方式、什么信号表示发起呼叫、什么信号表示呼叫结束、出了错误怎么办、怎样表示呼叫人的号码等,这种预先规定好的格式及约定就是协议。

网络协议多种多样,例如经常提到的有超文本传输协议(Hypertext Transfer Protocol,HTTP)、文件传输协议(File Transfer Protocol,FTP)、传输控制协议(Transmission Control Protocol,TCP)、IPv4等。譬如通过剜览器访问网站时,输入网址中的“http://”就是代表这次访问使用的协议是HTTP。

协议分为两类:一类是各网络设备厂商自己定义的协议,称为私有协议;另一类是专门的标准机构定义的协议,称为开放式协议。私有协议只有厂商自己的设备支持,无法和其他厂商的设备互通,所以在平时应用中,各厂商会尽量遵循开放式协议。

目前现网中使用的开放式协议标准可以分为两类,包括事实标准和法定标准。事实标准是未经组织团体承认但已在应用中被广泛使用和接受的标准,法定标准是由官方认可的组织团体制定的标准。

目前,整理、研究、制定和发布开放性标准协议的组织机构主要有以下几个,如表1-2所示。

表1-2 网络标准化组织机构

续表

网络中,为了使不同设备能够互相通信,收发双方都必须遵循同一个标准,但单一的巨大的协议会加大网络设计难度,同时也不利于分析及查找问题。因此,计算机模型中引入了分层的概念。

IP网络基础——协议和标准

分层模型是一种用于开放网络的设计方法,将通信问题划分为几个小的问题(层次),每个问题对应一个层次。

为了更好地实现计算机之间的通信,分层模型需具备以下的特点。

(1)每层的功能应是明确的,并且是相互独立的,当某一层的具体实现方法更新时,只要保持上下层的接口不变,便不会对邻层产生影响。

(2)层间接口必须清晰,跨越接口的信息量应尽可能少。

(3)层数应适中。若层数太少,则造成每一层的协议太复杂。若层数太多,则体系结构过于复杂,使描述和实现各层功能变得困难。

基于以上的原则,20世纪60年代以来,各大厂商为了在数据通信网络领域占据主导地位,纷纷推出了各自的网络架构体系和标准,如IBM公司的SNA、Novell IPX/SPX协议、Apple公司的AppleTalk协议、DEC公司的DECnet。

同时,各大厂商针对自己的协议生产出了不同的硬件和软件。各个厂商的共同努力促进了网络技术的快速发展和网络设备种类的迅速增加。但是由于多种协议的并存,也使网络变得越来越复杂,而且厂商之间的网络设备大部分不能兼容,很难互相进行通信。

为了解决网络设备之间的兼容性问题,帮助各个厂商生产出可兼容的网络设备,国际标准化组织(ISO)于1984年提出了开放系统互联参考模型(Open System Interconnection Reference Model,OSIRM),其7层模型如图1-5所示。

OSI参考模型在设计时,遵循了以下原则。

(1)各个层之间有清晰的边界,每层实现特定的功能。

(2)层次的划分有利于国际标准协议的制定。

(3)层的数目足够多,以避免各个层功能重复。

图1-5 OSI的7层模型

参考模型的设计简化了相关的网络操作,提供了即插即用的兼容性和不同厂商之间的标准接口,使各个厂商能够设计出互操作的网络设备;同时促进了标准化工作,防止一个区域网络的变化影响另一个区域的功能;在结构上进行分隔,每一个区域的网络都能单独快速升级,把复杂的网络问题分解为小的简单问题,易于学习和操作。

OSI参考模型由下至上被分为7层,各层的功能如表1-3所示。

表1-3 OSI参考模型各层的功能

其中的第1~3层称为底层(Lower Layer),又叫介质层(Media Layer),主要负责数据在网络中的传送。以硬件和软件相结合的方式来实现,组成互联网络的设备通常具备下面3层的功能。第4层称为传输层,负责实现面向连接或者无连接的传输通道的建立。第5~7层称为高层(Upper Layer),又叫主机层(Host Layer),主要用于保障数据的正确传输,通常以软件方式来实现。

1.2.3 TCP/IP参考模型

OSI的7层协议体系结构将网络结构定义得非常清楚,理论也比较完整,但相对比较复杂,不太实用。而随着互联网的发展,TCP/IP的5层体系结构得到了广泛的应用,已经成为事实上的标准。

TCP/IP模型与OSI参考模型的不同点在于,TCP/IP把表示层和会话层都归入了应用层。TCP/IP模型由下至上依次分为物理层、数据链路层、网络层、传输层和应用层5个层次。图1-6描述了OSI参考模型和TCP/IP模型在分层结构上的区别。

图1-6 OSI和TCP/IP模型对比

下面将对TCP/IP模型各层次的功能进行介绍,大家学习时可以对比表1-3中的OSI各层功能。

TCP/IP概述

1.物理层

物理层的作用是透明传递比特(bit)流,发送方发送1或者0的时候,接收方应当收到1或者0,而不是0或者1。要实现这个目的,物理层需要实现以下功能。

(1)规定介质类型、接口类型、信令类型。

(2)规范终端系统之间激活、维护和关闭物理链路的电气、机械、流程和功能等方面的要求。

(3)规范电平、数据速率、最大传输距离和物理接头等特征。

物理层标准规定了物理介质和用于将设备与物理介质相连的接头。局域网常用的物理层标准有IEEE制定的以太网标准802.3、令牌总线标准802.4、令牌环网标准802.5,以及美国国家标准组织(ANSI)的X3T9.5委员会制定的光缆标准——光纤分布式数据接口(Fiber Distributed Data Interface,FDDI)等。广域网常用的物理层标准有电子工业协会和电信工业协会(EIA/TIA)制定的公共物理层接口标准 EIA/TIA232(即RS-232)、国际电信联盟(ITU)制定的串行线路接口标准V.24和V.35,以及有关各种数字接口的物理和电气特性的标准G.703等。

物理层介质主要有同轴电缆(Coaxical Cable)、双绞线(Twisted Pair)、光纤(Fiber)、无线电波(Wireless Radio)等。设备有中继器和集线器,但是随着网络的发展,这两种设备已经很少使用。

2.数据链路层

数据链路层是OSI参考模型中的第2层,介于物理层和网络层之间。它负责从上而下将源自网络层的数据封装成帧,从下而上将源自物理层的比特流划分为帧,并控制帧在物理信道上的传输,主要包括如何处理传输差错、如何调节发送速率以便与接收方相匹配,以及在两个网络实体之间进行数据链路通路的建立、维持和释放的管理。

在 IEEE 802标准中,数据链路层又分为两个逻辑子层:逻辑链路控制子层(Logic Link Control sublayer,LLC)和介质访问控制子层(Media Access Control sublayer,MAC),如图1-7所示。

LLC子层位于网络层和MAC子层之间,负责识别协议类型,并对数据进行封装以便通过网络进行传输。

MAC子层负责指定数据如何通过物理线路进行传输,并向下与物理层通信。它具有物理编址、网络拓扑、线路规范、错误通知、按序传递和流量控制等功能。

图1-7 数据链路层

MAC子层定义的物理编址用于唯一地标识一台网络设备,这个地址就是MAC地址。IEEE规定的网络设备MAC地址是全球唯一的,由48个二进制位组成,通常用12位十六进制数字来表示。其中,前6位十六进制数字由IEEE统一分配给设备制造商,后6位十六进制数由各个厂商自行分配。例如,MAC地址0x00e0.fc01.2345的前6位00e0fc即为IEEE统一分配给设备厂商的,而后6位的012345则是厂商自己定义的。标准不同,MAC地址的长度及定义可能也不一致。

数据链路层中定义的协议有以太网协议(Ethernet)、高级数据链路控制(High-level Data Link Control, HDLC)、点对点协议(Point-to-Point Protocol,PPP)、帧中继(Frame Relay,FR)协议等。数据链路层常见的设备是以太网交换机。

3.网络层

网络层负责在网络之间将数据包从源转发到目的地。在发送数据时,网络层把传输层产生的报文段加上网络层的头部信息封装成包的形式进行传送;在接收时,网络层根据对端添加的头部信息对包进行相应的处理。

网络层在整个分层结构中主要功能有两个。

(1)提供逻辑地址:网络层定义了一个地址,用于在网络层唯一标识一台网络设备。

网络层地址在TCP/IP模型中即为IP地址。IP地址目前分为两个版本,IPv4地址和IPv6地址,现阶段IPv4地址在现网中的应用较为广泛。IPv4地址的常用表示方法为点分十进制,如10.8.2.48。后续章节将对IP地址做详细的介绍。

(2)路由:将数据报文从某一链路转发到另一链路。

路由决定了分组包从源转发到目的地的路径。

网络层定义的协议常见的有网际协议(Internet Protocol,IP)、网际控制报文协议(Internet Control Message Protocol,ICMP)、地址解析协议(Address Resolution Protocol,ARP)、反向地址解析协议(Reverse Address Resolution Protocol,RARP)。网络层常见的设备是路由器。

4.传输层

传输层为上层应用屏蔽了网络的复杂性,并实现了主机应用程序间端到端的连通性,主要具备以下基本功能。

(1)将应用层发往网络层的数据分段或将网络层发往应用层的数据段进行合并。

(2)建立端到端的连接,主要是建立逻辑连接以传送数据流。

(3)实现主机间的数据段传输。在传送过程中可通过计算校验以及流控制的方式保证数据的正确性,其中流控制可以避免缓冲区溢出。

(4)部分传输层协议能保证数据传送的正确性。主要是在数据传送过程中确保同一数据既不多次传送,也不丢失,以及保证数据报的接收顺序与发送顺序一致。

TCP/IP协议栈中的传输层协议主要有两种:传输控制协议(Transmission Control Protocol,TCP)和用户数据报协议(User Datagram Protocol,UDP)。TCP提供面向连接的、可靠的字节流服务,UDP提供无连接的、面向数据报的服务,后续章节将对TCP和UDP做详细介绍。

TCP/IP协议栈介绍

5.应用层

应用层是体系结构中的最高层,直接为用户应用进程提供服务,主要功能有以下3类。

(1)为用户提供接口、处理特定的应用。

(2)数据加密、解密、压缩、解压缩。

(3)定义数据表示的标准。

应用层有许多协议,用来帮助用户使用和管理TCP/IP网络,如基于TCP传输层协议工作的文件传输协议(File Transfer Protocol,FTP)、远程登录协议(Telnet)、超文本传输协议、简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)等;基于UDP工作的简单文件传输协议(Trivial File Transfer Protocol, TFTP)、简单网络管理协议(Simple Network Management Protocol,SNMP)等。其中部分协议如域名系统(Domain Name System,DNS),既可以封装在TCP头部中,也可以封装在UDP头部中。

1.2.4 数据的封装和解封装

在前面的OSI和TCP/IP分层模型中,简单介绍了每一层的功能,如传输层,主要用于建立端到端的连接,网络层则可以给报文带上IP地址,用于给数据报文进行地址标识。

数据的发送过程和物品的邮寄比较类似,在邮寄物品的时候,会将物品封成包裹,填上收发人的信息,数据的转发也是如此,需要给待发送的数据封装上头部报文,在报头中包含了IP地址、MAC地址等信息。图1-8所示为数据的封装和解封装过程。

图1-8 数据的封装和解封装

在TCP/IP分层结构中,对等层之间互相交互的数据被称为PDU(协议数据单元)。PDU在不同层有约定俗成的名称。如在传输层中,在上层数据中加入TCP报头后得到的PDU被称为数据段(Segment);数据段被传递给网络层,网络层添加IP报头得到的PDU被称为数据包(Packet);数据包被传递到数据链路层,封装数据链路层报头得到的PDU被称为数据帧(Frame);最后,帧被转换为比特,通过网络介质传输。

假设两台主机A与B进行通信。主机A将某项应用通过上层协议转换上层数据后交给传输层;传输层将应用层的PDU作为自己的数据部分并封装传输层报头,如果报文较大,则进行分段,形成传输层的PDU,然后传递给网络层;网络层将传输层的PDU作为本层的数据部分,加上网络层的头部信息,形成网络层的PDU,传递给数据链路层;数据链路层在头部添加数据链路层的报头,形成数据帧,然后传递给物理层;物理层将数据转换为比特流,通过物理线路传送给主机 B。这种协议栈向下传递数据,并添加报头和报尾的过程就称为封装。图1-7中,数据链路层被表示为LLC和MAC两个逻辑子层。在实际应用中,根据协议的不同,有时候只需要封装MAC子层的头部信息即可。而帧检验序列(Frame Check Sequence,FCS),主要用于校验数据在传输过程中有无发生错误,是一种错误检验机制。

而当数据通过网络传输后,到达接收设备,接收方将删除添加的信息,并根据报头中的信息决定如何将数据沿协议栈上传给合适的应用程序,这个过程称为解封装。如图1-8右侧所示,主机B在物理层接收到比特流之后交给数据链路层处理,数据链路层收到报文后,从中拆离出数据链路层报文头后将数据传递给网络层,网络层收到报文后,从中拆离出IP报文头,交给传输层处理,传输层拆离传输头部后交给应用层。

TCP/IP报文封装与分片

数据的封装和解封装都是逐层处理的过程,各层都会处理上层或下层的数据,并加上或剥离到本层的封装报文头。不同设备的对等层之间依靠封装和解封装来实现相互间的通信。图1-9所示是通过抓包软件解析得到的一个报文,从中可以看到,从上层到下层的封装协议分别是TCP、IP、Ethernet II。

图1-9 报文封装

1.2.5 协议和标准

上文中提到了分层结构,提到了数据的封装和解封装。从中可以了解到,信息的传递离不开协议。本小节将对一些常见的协议和标准进行介绍。

1.TCP

在TCP/IP分层模型中,传输层位于应用层和网络层之间,为终端主机提供端到端的连接,主要的协议有两种:TCP和UDP。TCP提供面向连接的、可靠的字节流服务,而UDP则为用户提供简单的、面向数据报的服务。图1-10所示是TCP报文头部的格式,图1-11所示是通过抓包软件看到的TCP报文封装结构。

图1-10 TCP头部格式

图1-11 TCP报文封装结构

TCP数据段由头部(TCP Head)和数据(TCP Data)组成。由于TCP头部中用于指示头部长度的字段为4 bit,其最大值是15,表示最大可有15个32 bit,因此TCP最多有60个字节的头部。如果没有选项字段,则TCP头部的长度是20字节。每个TCP段都包含源端和目的端的端口号,用于寻找发端和收端的应用进程。端口号加上IP头部中的源端IP地址和目的端IP地址能够唯一确定一个TCP连接。序列号则用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的第一个数据字节。窗口大小用于表示接收端期望接收的字节,由于该字段为16 bit,因而窗口大小最大为65 535字节。检验和则是针对整个TCP报文段以及部分IP头中的信息进行的报文验证。

传输层协议——TCP、UDP介绍

TCP 提供的是可靠的面向连接的服务,在传送数据之前,会在收发双方之间建立一条连接通道。TCP连接的建立是一个三次握手的过程,如图1-12所示。具体过程有以下3步。

(1)客户端(Client)发送一个SYN段,表示客户期望连接服务器端口,初始序列号为a。

(2)服务器(Server)发回序列号为b的SYN段作为响应。同时设置确认序列号为客户端的序列号加1(a+1),作为对客户端的SYN报文的确认。

(3)客户端设置确认序列号为服务器端的序列号加1(b+1),作为对服务器端SYN报文段的确认。

这3个报文段完成了TCP连接的建立。

图1-12 TCP连接的建立过程

TCP 的可靠传输还体现在确认技术的应用方面,保证数据流从源设备准确无误地发送到目的设备。以下描述的是确认技术的工作原理。

当目的设备接收到源设备发送的数据报时,向源端发送确认报文,源设备收到确认报文后,继续发送数据报,如此重复。当源设备发送数据报后没有收到确认报文,在一定时间后(源设备在发送数据报时启动计时器,计时器开始计时到结束的时间),源设备降低数据传输速率,重发数据报,如图1-13所示。

图1-13 TCP的确认重传

源设备与目的设备建立了一条端到端的虚链路,开始数据传输。源设备向目的设备发送seq=n,ack=m,长度为q的数据报,目的设备收到数据报后,用 seq=m,ack=n+q来确认正确接收此数据报,源设备收到确认信息后,继续发送seq=n+q起始的数据报。目的设备如果未能正确接收到数据报,则继续用seq=m, ack=n+q的确认报文来进行确认,表示目前只正确接收到序列号为 n的数据报。源设备收到 seq=m, ack=n+q的确认报文后,重发序列号为nn+q-1的数据报,当目的设备正确接收到数据报后,用ack=n+q的报文进行确认。

TCP在保证数据传输的可靠性的同时,还提供了多路复用、最大报文段(Maximum Segment Size, MSS)协商、窗口机制等功能。

多路复用是指多个应用程序允许同时调用传输层从而为不同的应用建立各自的连接通道。传输层把上层发来的不同应用程序数据分成段,按照先到先发(First Input First Output,FIFO)的原则(或者其他原则)发送数据段。这些数据段可以去往同一目的地,也可以去往不同目的地。

MSS表示TCP传给另一端的最大报文段长度。当建立一个连接时,连接的双方都要通告各自的MSS,协商得到MSS的最终值。MSS的默认值为536,因此它允许IP数据包长度为576字节(536+20字节IP头部+20字节TCP头部)。通过协商最大报文段长度值,可以更好地提高网络利用率和提升应用性能。

TCP滑动窗口技术通过动态改变窗口大小来调节两台主机间的数据传输。每个TCP/IP主机支持全双工数据传输,因此TCP有两个滑动窗口:一个用于接收数据,另一个用于发送数据。

服务器在和客户端建立TCP连接后,在报文的交互过程中,服务器和客户端都会将自己的缓冲区大小(窗口大小)分别发送给对端。图1-14所示为滑动窗口机制,服务器通告给客户端的窗口大小为3,而客户端通告给服务端的初始窗口大小为4。

服务端开始发送数据,连续发4个单位的数据,在发送完这一波数据后,服务端暂停数据发送,需等待客户端的确认。客户端接收服务器发送过来的数据后,缓冲区逐渐被填满,这时候缓冲区中的两个报文被进程读取,缓冲区有了两个空位,于是客户端向服务器发送一个 ACK,这个报文中指示窗口大小为2。服务器收到客户端发过来的ACK消息,并且知道客户端将窗口大小调整为2,因此它只发送了2个单位的数据,并且等待客户端的下一个确认报文,如此反复。

图1-14 滑动窗口机制

传输层协议——TCP工作原理

2.UDP

UDP为应用程序提供面向无连接的服务,所以在传数据之前,源端和目的端之间不必像TCP那样需要事先建立连接。正由于UDP是基于无连接的传输协议,所以UDP不需要去维护连接状态和收发状态,因此服务器能以多播或者广播的形式同时向多个客户端传输相同的消息。UDP的报文头部格式如图1-15所示。

与TCP的报文头部格式进行比较,UDP头部中不包含序列号,因此UDP不保证可靠性,即不保证报文能够到达目的地。UDP更适用于对传输效率要求高的应用,如SNMP、Radius等。SNMP监控网络并断续发送告警等消息,如果每次发送少量信息都需要建立TCP连接,无疑会降低传输效率,所以诸如SNMP、Radius等更注重传输效率的应用程序都会选择UDP作为传输层协议。图1-16列举了TCP和UDP之间的不同之处。

图1-15 UDP头部格式

图1-16 TCP vs UDP

3.IP协议

IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP等数据都以IP数据包格式传输。IP协议提供不可靠、无连接的数据包传送服务。

不可靠的意思是,它不能保证IP数据包能成功地到达目的地。IP仅提供尽力而为的传输服务。如果发生某种错误,如某个路由器暂时用完了缓冲区,IP 有一个简单的错误处理算法,即丢弃该数据包,然后发送ICMP消息报给信源端。任何要求的可靠性必须由上层来提供(如TCP)。

无连接的意思是,IP 并不维护任何关于后续数据包的状态信息。每个数据包的处理是相互独立的。这也说明,IP 数据包可以不按发送顺序接收。如果某一信源向相同的信宿发送两个连续的数据包(比如先发送A,然后是B),每个数据包都是独立地进行路由选择,可能选择不同的路线,因此B可能在A到达之前先到达。IPv4头部的格式如图1-17所示,图1-18所示是抓包软件中看到的IP报文封装结构。

图1-17 IPv4头部格式

以下介绍了IP数据包中包含的各字段的含义。

● 版本号(Version)。IP协议的版本号,目前的协议版本号为4。下一代IP协议的版本号为6。

● 报文长度。IP头部的长度,字段总共4位,以4字节为单位。常规情况下取值为5,即头部长度为20字节,最大取值为15,即IP头部的最大长度为60字节。

● 服务类型(Type of Service,TOS)。共8位。包括一个3位的忧先权字段(Class of Service, COS)、4位TOS字段和1位未用位。4位TOS分别代表最小时延、最大吞吐量、最高可靠性和最小费用,只能置其中一位为1。如果所有4比特均为0,那么就意味着是一般服务。COS用于表示报文忧先级。

图1-18 IP报文封装结构

● 总长度(Total length)。整个IP数据包长度,包括数据部分。该字段长16位,所以IP数据包最长可达65 535字节。尽管可以传送一个长达65 535字节的IP数据包,但是大多数的链路层都会对它进行分片。而且,主机也要求不能接收超过576字节的UDP数据包。UDP限制用户数据包长度为512字节,小于576字节。但是,事实上现在大多数的实现(特别是那些支持网络文件系统NFS的实现)允许超过8 192字节的IP数据包。

● 标识符(Identification)。在一对主机之间一定时间内唯一标识主机发送的每一份数据包。通常每发送一份报文,它的值就会加1。一般情况下,数据链路层会限制每次发送数据帧的最大长度。如果IP包的长度超出了链路层的帧长,数据包就需要进行分片。分片可以发生在原始发送端主机上,也可以发生在中间路由器上。把一份IP数据包分片以后,只有到达目的地才进行重新组装,重组由目的端的IP层来完成。标识符字段的值在数据包被分片时会被复制到每个分片中,用于数据分片在目的主机上的重组。

● 标志位。占3比特。第一位保留,取值为0;第二位(DF)代表报文是否可以进行分片,取值为0代表可以分片,取值为1代表不能分片;第三位(MF)代表是否为最后一个分片,取值为0代表该分片是最后一个分片,取值为1代表还有更多的分片。DF和MF的取值不能同时为1。

● 片偏移。片偏移乘以8指的是该分片偏移原始数据包开始处的位置。同样用于目的主机的分片重组。

● 生存时间(Time to Live,TTL)。数据包可以经过的路由器数目。每经过一个路由器,TTL值就会减1,当该字段值为0时,数据包将被丢弃。

● 协议。在数据包内传送的上层协议,和端口号类似,IP协议用协议号区分上层协议。例如,协议字段取值6代表上层协议是TCP,取值为17代表上层协议是UDP。

● 报头校验和(Head checksum)。IP头部的校验和,用于收端检查报文头部的完整性。源IP地址和目的IP地址字段标识数据包的源端设备和目的端设备。

● 源IP地址和目的IP地址。标识数据包的源端地址和目的端地址。

1.2.6 网络类型和拓扑结构

互联网是由大大小小的网络、设备连接起来的大网络。而网络类型可以根据覆盖的地理范围,划分成局域网和广域网,如图1-19所示。

图1-19 互联网组成

1.局域网(Local Area Network,LAN)

局域网是将小区域内的各种通信设备互联在一起所形成的网络,覆盖范围一般局限在房间、大楼或园区内。局域网一般指分布于几千米范围内的网络,局域网的特点是距离短,延迟小,数据速率高,传输可靠。

局域网络建设时常用网络部件有以下几种。

线缆(Cable):局域网的距离扩展通常需要通过线缆来实现,不同的局域网有不同的连接线缆,如光纤(Fiber)、双绞线(Twisted Pair)、同轴电缆等。

网卡(Network Interface Card,NIC):插在计算机主板插槽中,负责将用户要传递的数据转换为网络上其他设备能够识别的格式,通过网络介质传输。

集线器(Hub):是单一总线共享式设备,提供很多网络接口,负责将网络中的多个计算机连接在一起。所谓共享,是指集线器所有端口共用一条数据总线,同一时刻只能有一个用户传输数据,因此平均每用户(端口)传递的数据量、速率等受活动用户(端口)总数量的限制。

交换机(Switch):也称交换式集线器(Switched Hub)。它同样具备许多接口,提供多个网络节点互联。但它的性能却较共享集线器(Shared Hub)大为提高,相当于拥有多条总线,使各端口设备能独立地进行数据传递,而不受其他设备影响,表现在用户面前即是各端口有独立、固定的带宽。此外,现在的交换机还具备集线器欠缺的功能,如数据过滤、网络分段、广播控制等。

路由器(Router):是一种用于网络互联的计算机设备,它工作在OSI参考模型的第三层(网络层),为不同网络之间的报文寻径并存储转发。通常路由器还会支持两种以上的网络协议以支持异种网络互联,一般的路由器还会运行动态路由协议以实现动态寻径。

防火墙(Firewall):也称为防护墙,位于内部网络与外部网络之间。通过设定特定的规则,允许或者限制传输的数据通过。某些情况下,也会作为网关,承担网络地址转换(Network Address Translation, NAT)。

2.广域网(Wide Area Network,WAN)

WAN连接地理范围较大,常常是一个国家或是一个洲。在大范围区域内提供数据通信服务,主要用于互联局域网。在我国,中国公用分组交换网(CHINAPAC)、中国公用数字数据网(CHINADDN)、国家教育和科研网(CERnet)、中国公用计算机互联网(CHINANET)以及中国下一代互联网(China Next Generation Internet,CNGI)都属于广域网。WAN的目的是为了让分布较远的各局域网互联。随着光通信技术的发展,以太网技术基本可以满足大部分的网络应用场景,广域网的应用除了少量场景外,已经不太常见。具有代表性的广域网的网络有以下几个。

综合业务数字网(Integrated Service Digital Network,ISDN)提供拨号连接方式。提供2B+D的数据通道,每个B通道速率为64kbit/s,其速率最高可达到128kbit/s。

专线(Leased Line),在中国称为DDN,提供点到点的连接方式,速度为64 kbit/s~2.048 Mbit/s。

帧中继(Frame Relay),是在X.25基础上发展起来的技术,速度为64 kbit/s~2.048 Mbit/s。帧中继的特点是灵活、有弹性,可实现一点对多点的连接。

异步传输模式(Asynchronous Transfer Mode,ATM),是一种信元交换网络,其最大的特点是速率高,延迟小,传输质量有保障。

需要说明的是,局域网和广域网的地理覆盖范围并没有一个严格的界限。区分局域网或者广域网,更多的是依据所使用的技术。

在网络发展初期,以太网技术受传输距离限制,只能实现短距离的网络互联,多用于局域网组网。但随着技术的发展,以太网技术已经能够用于构建大规模、长距离的互联网络。因此,目前很多的广域网技术,像 ISDN、FR 等,正逐步被以太网替换,只有在某些特定的应用场景中,才会用到一些广域网技术,如宽带拨号中用到的PPPoE。

3.网络拓扑类型

拓扑结构定义了组织网络设备的方法。现网网络中的拓扑结构有总线型、星形、环形等,如图1-20所示。

图1-20 常见网络拓扑结构

在总线型拓扑中,网络中的所有设备都连接到一个线性的网络介质上,这个线性的网络介质称为总线。当一个节点在总线型拓扑网络上传送数据时,数据会向所有节点传送。每一个设备检查经过它的数据,如果数据不是发给它的,则该设备丢弃数据;如果数据是发向它的,则接收数据并将数据交给上层协议处理。典型的总线型拓扑具有简单的线路布局,该布局使用较短的网络介质,相应的,所需要的线缆花费也较低。缺点是很难进行故障诊断和故障隔离,一旦总线出现故障,就会导致整个网络故障。而且,任何一个设备发送数据,都是向所有设备发送,消耗了大量带宽,大大影响了网络性能。

星形拓扑结构有一个中心控制点。当使用星形拓扑时,连接到局域网上的设备间的通信是通过与交换机的点到点的连线进行的。星形拓扑易于设计和安装,网络介质直接从中心的集线器或交换机处连接到工作站所在区域。星形拓扑易于维护,网络介质的布局使得网络易于修改,并且更容易对发生的问题进行诊断。在局域网构建中,大量采用了星形拓扑结构。当然星形拓扑也有缺点,一旦中心控制点设备出现了问题,容易发生单点故障。每一段网络介质只能连接一个设备,导致网络介质数量增多,局域网安装成本相应提升。

环形拓扑通过一个连续的环将每台设备连接在一起,数据在环路中沿着一个方向在各个节点间传输。在部分场景中,如果某个方向链路中断,则可以惜助另一方向的链路进行数据的传递。环形结构消除了用户通信时对中心系统的依赖性,但当环形网络中的节点过多时,会影响信息的传输效率,使网络的响应时间延长。而且环形网络的改造比较麻烦,必须先中断原来的环,才能插入新节点,以形成新环。

树形拓扑结构是分级的集中控制式网络。与星形相比,它的通信线路总长度短,成本较低,节点易于扩充,寻找路径比较方便,但除了叶节点及相连的线路外,其他任一节点或其相连的线路故障都会使系统受到影响。

网状拓扑结构将各节点通过传输线互联起来,且每一个节点至少与其他两个节点相连。网络拓扑结构具有较高的可靠性,但结构较为复杂,实现起来费用较高,管理和维护的难度相对较大。

IP网络基础——网络和Internet介绍