【计算机网络】基础知识复习-第二章-计算机网络体系结构与协议

计算机网络体系结构与协议

计算机网络系统是由各种各样的计算机和终端设备通过通信线路连接起来的复杂系统。在这个系统中,由于计算机类型、通信线路类型、连接方式、同步方式、通信方式等的不同,给网络各结点的通信带来诸多不便。

  异种网络互连要真正以协同方式进行通信是十分复杂的。要解决这个问题,势必涉及通信体系结构设计和各厂家共同遵守约定标准等问题,这也即计算机网络体系结构和协议问题。

2.1 网络体系结构

2.1.1 网络软件

为了减少协议设计的复杂性,大多数网络都按层或级的方式来组织,每一层都建立在它的下层之上。不同的网络,其层的数量、各层的名字、内容和功能都不尽相同。然而,在所有的网络中,每一层的目的都是向它的上一层提供一定的服务,而把如何实现这一服务的细节对上一层加以屏蔽。

一台机器上的第n层与另一台机器上对应的第n层进行对话,通话的规则就是第n层协议。图2-2说明了一个有5层的协议。不同机器里包含对应层的实体叫对等进程。换言之,正是对等进程利用协议进行通信。


层和协议的集合被称为网络体系结构。

 协议实现的细节和接口的描述都不是体系结构的内容,因为它们都隐藏在机器内部,对外部来说是不可见的。只要机器都能正确地使用全部协议,网络上所有机器的接口不必完全相同。

协议分层的较低层次常常以硬件或固件的方式实现。

3.面向连接的服务和无连接服务

 下层能向上层提供两种不同形式的服务,即面向连接的服务和无连接的服务。

 面向连接的服务类似于电话系统打电话的过程。在使用面向连接的服务时,用户首先要建立连接,然后使用连接,最后释放连接。

 无连接服务类似于邮政系统寄信的过程。每个报文(类似于信件)带有完整的目的地址,并且每一个报文都独立于其他报文,经由系统选定的路线传递。

 我们用服务质量QoS(Quality of Service)来评价每种服务的特性。

 文件传输比较适合于面向连接的服务。

 并不是所有的应用程序都需要连接。例如,电子邮件。

 5.服务与协议的关系

 服务和协议是完全不同的概念。

 服务是各层向它的上层提供的一组原语(操作),但未涉及这些操作是如何完成的。

 协议是定义同层对等实体之间交换的帧、分组和报文的格式及意义的一组规则。只要不改变提供给用户的服务,实体可以任意改变它们的协议。

 这样,服务和协议就被完全分离开来。

2.1.2 参考模型

1.OSI参考模型

OSI参考模型如图2-11所示。这一模型被称作ISO的OSI开放系统互连参考模型(Open System Interconnection Reference Model),因为它是关于如何把开放式系统(即为了与其他系统进行通信而相互开放的系统)连接起来的,常简称它为OSI模型。

 

OSI模型本身不是网络体系结构的全部内容,它并未确切地描述用于各层的协议和服务,它仅仅告诉我们每一层应该做什么。

 不过,OSI已经为各层制定了标准,但它们并不是参考模型的一部分,它们是作为单独的国际标准公布的。

 (1)物理层

 物理层涉及到通信在信道上传输的原始比特流。

 这里的设计主要是处理机械的、电气的和过程的接口,以及物理层下的物理传输介质等问题。

 (2)数据链路层

 数据链路层的主要任务是加强物理层传输原始比特的功能,使之对网络层呈现为一条无错线路。

 (3)网络层

网络层关系到子网的运行控制,其中一个关键问题是确定分组从源端到目的端如何选择路由。

 在广播网络中,选择路由问题很简单。因此网络层很弱,甚至不存在。

(4)传输层

 传输层的基本功能是从会话层接收数据,并且在必要时把它分成较小的单元,传递给网络层,并确保达到对方的各段信息正确无误。

 传输层使会话层不受硬件技术变化的影响。

 (5)会话层

 会话层允许不同机器上的用户建立会话关系。

 (6)表示层

 表示层关心的是所传输信息的语法和语义。

 表示层还提供数据加密和数据压缩的功能。

 (7)应用层

 应用层包含大量人们普遍需要的协议。

 例如网页浏览、电子邮件、远程作业输入、名录查询和其他各种通用和专用的功能。

2.TCP/IP参考模型

TCP/IP是20世纪70年代中期,美国国防部为其ARPANET广域网开发的网络体系结构和协议标准。到80年代它被确定为因特网的通信协议。TCP/IP虽不是国际标准,但它是为全世界广大用户和厂商所接受的网络互连的事实标准。其模型如图2-13所示。

在TCP/IP中定义了两个端到端的协议。

 第一个是传输控制协议TCP(Transmission Control Protocol)。它是一个面向连接的协议,允许从一台机器发出的字节流无差错地发往互连网上的其他机器。

 TCP还要进行处理流量控制。

 第二个协议是用户数据报协议UDP(User Datagram Protocol)。它是一个不可靠的、无连接协议,用于不需要TCP的排序和流量控制能力,而是由自己的应用程序完成这些功能。

(3)应用层

 TCP/IP模型没有会话层和表示层。

 传输层的上面是应用层。它包含所有的高层协议。最早引入的是虚拟终端协议(TELNET)、文件传输协议(FTP)和电子邮件协议(SMTP),如图2-14所示。

 这些年来又增加了不少协议,例如域名系统服务DNS用于把主机名映射到网络地址;NNTP协议,用于传递新闻文章;还有HTTP协议,用于在万维网(WWW)上获得主页等。

 (4)主机至网络层

 互连网层的下面什么也没有,TCP/IP参考模型没有真正描述这一部分,只是指出主机必须使用某种协议与网络连接,以便能在其上传递IP分组。这个协议未被定义,并且随主机和网络的不同而不同。

我们将使用去掉会话层和表示层后的OSI模型进行讨论。

2.2 物理层

物理层是网络中的最低一层,向下是物理设备之间的接口,直接与传输介质相连接,使二进制数据位流通过该接口从一台设备传给相邻的另一台设备,向上为数据链路层提供位流传输服务。

 物理层设计要考虑到机械、电气、功能和过程性的接口等一系列问题。

2.2.1 物理层协议描述

 1.机械特性

 机械特性一般指连接器的大小和形状,即合适的电缆、插头或插座。

2.电气特性

 电气特性主要考虑确定信号波形结构、电压电平和电压变化的规则以及信号的同步等。电气特性决定了传输速率和传输距离。

 表示二进制数字的码元的形式不同,便产生出不同的编码方案及波形结构。

 双极性码

曼彻斯特码和差分曼彻斯特码


3.功能特性

  功能特性是各种各样的,包括有关规定、目的要求、数据类型、控制方式等。功能特性说明接口信号引脚的功能和作用,以反映电路功能。如图2-18所示。

  4.过程特性

  过程特性是在功能特性的基础上,规定了接口的功能函数、传输数据的顺序等。如怎样建立和拆除物理线路连接,全双工还是半双工通信。

2.2.2 RS-232-C

  计算机或终端与调制解调器间的接口是物理层协议的一个实例。其中有名的物理层标准是RS-232-C。

  该接口机械方面的技术指标是:

  每个插座有25针插头,顶上一排针(从左到右)分别编号为1~13,下面一排针(也是从左到右)编号为14~25,还有其他一些严格的尺寸说明。

  RS-232-C的电气指标是:

  用低于-3V的电压表示二进制1,用高于+4V的电压表示二进制0;允许的最大数据传输率为20kbit/s;最长可驱动电缆15m。


2.3 数据链路层

数据链路层最重要的作用就是通过一些数据链路层协议,在不太可靠的物理链路上实现可靠的数据传输。

2.3.1 数据链路层的功能

  数据链路层要完成许多特定的功能。

  这些功能包括为网络层提供设计良好的服务接口,处理帧同步,处理传输差错,调整帧的流速,不至于使慢速接收方被快速发送方淹没。



 (3)带位填充的首尾标志法

  这种方法允许数据帧包含任意个数的比特,而且也允许每个字符的编码包含任意个数的比特。

  它的工作方式如下:

  每一帧使用一个特殊的位模式,即01111110作为开始和结束标志字节。

  当发送方的数据链路层在数据中遇到5个连续的1时,它自动在其后插入一个0到输出比特流中(也称为零比特填充法)。这种位填充技术类似于字符填充技术。

  当接收方看到5个连续的1后面跟着一个0时,自动将此0删去。如果用户数据中包含着与位模式相同的数据01111110,则将以011111010的形式传送出去,但是仍然以01111110的形式存放在接收方的存储器中。如图2-28所示。

 (4)物理层违例编码法

  这种方法只适用于那些在物理介质的编码策略中采用冗余编码的网络。

  例如,曼彻斯特编码方案,"高---高"电平对和"低---低"电平对在数据编码中是违例的。

  局域网IEEE 802标准中就采用了这种方法。违例编码法不需要任何填充技术,便能实现数据的透明性,但它只适用于采用冗余编码的特殊编码环境。

很多数据链路协议使用字符计数与其他方法相结合来提高可靠性。当一个帧到达时,其计数字段被用来确定帧尾的位置。只有当帧界定符出现在帧尾的位置,而且校验和是正确的时候,这个帧才会被接收为有效帧。否则,将继续扫描输入流直到下一个界定符。

2.3.3 因特网中的数据链路层

在大多数宽阔的区域内,网络的结构是通过点到点线路建成的。

  下面将讨论因特网中的点到点线路中的数据链路层协议。

  在实践中,点到点通信主要用在以下几种情况下。

在点到点线路上都需要一些点到点的数据链路层协议。

  有两个协议广泛应用在因特网上,即SLIP(Serial Line Interface Protocol,串行线路接口协议)和PPP(Point to Point Protocol,点到点协议)。

  它们是TCP/IP协议簇的一部分,相连的两端设备(主机或路由器)都具有独立的IP地址。

  IP数据报被自动封装在SLIP/PPP帧中传送。

2.4 网络层

2.4.1 网络层设计的有关问题

  1.为传输层提供的服务

  网络层在网络层和传输层的接口上为传输层提供服务。它是通信子网的边界。

  网络层可以提供面向连接的服务,也可以提供无连接的服务,它们之间的差别就是将分组排序、差错控制、流量控制等复杂的功能放在何处。

  在面向连接服务中,认为通信子网是可靠的,从而将以上复杂的功能置于网络层(通信子网)中;

  在无连接服务中,认为通信子网是不可靠的,从而将以上复杂的功能置于传输层(主机)中。

.通信子网的内部结构

  通信子网的构成基本上有两种不同的思想,一种是采用连接的,另一种是无连接的。

  连接通常叫做虚电路。

  无连接组织结构中的独立分组称为数据报。

  (1)虚电路服务

  虚电路服务是网络层向传输层提供的一种使所有分组按顺序到达目的端系统的可靠的数据传送方式。进行数据交换的两个端系统之间存在着一条为它们服务的虚电路。

  上述虚电路的服务是网络层向传输层提供的服务,也是通信子网向端系统提供的网络服务。

(2)数据报服务

  数据报服务一般仅由数据报交换网来提供。

  由虚电路交换网提供数据报服务的组合方式并不常见,因为,这既不经济,效率也低。

  2.4.2 路由选择算法

  网络层的主要功能是将分组从源端机器经选定的路由送到目的端机器。

  路由选择算法和它们使用的数据结构是网络层设计的一个主要内容。

路由选择算法是网络层软件的一部分,负责确定所收到的分组应传送的外出线路。

  路由选择算法可以分为两大类:非自适应的和自适应的。

  非自适应算法不根据实测和估计的网络的当前通信量和拓扑结构来作路由选择。网络结点之间的路由是事先计算好的,在网络启动时就已设置到路由器中。这一过程有时称作静态路由选择。

  自适应算法根据拓扑结构、通信量的变化来改变其路由选择。这一过程有时称作动态路由选择。

  距离向量路由选择算法和链路状态路由选择算法都是常用的动态路由选择算法。

 1.距离向量(D-V)算法

  (1)距离向量算法的两个基本要素

  在距离向量算法中有两个基本的要素:一个为向量,另一个为距离。这两个要素构成了动态路由表的基本元素结构。

  向量是指源路由器去目的网络的路径(方向)。

  路径是指源路由器去目的网络途径中,首先应把包传递给它的哪个相邻路由器,至于相邻路由器为达到目的网络接着把包再传给下面哪一个路由器,源路由器是不关心的。

  一个路由器经与所有相邻路由器的层层连接,构成了去所有目的网络的路径拓扑构图。

(2)距离向量算法的路由表的形成

  距离向量算法路由表的形成和刷新的基本思想是:

  路由器启动时,首先从其各端口获取所连网络的网络号信息而形成初始路由表;

  然后定期向相邻路由器广播路由消息。

  某路由器收到的相邻路由器发来的路由表信息中,如果有一部分是记录了经相邻路由器能到达的网络而该路由器路由表中没有,则增加之;

  如果有去某个目的网络更佳的路径,则修改之;

  如果原有经相邻路由器可以到达目的网络而现在因故相邻路由器不能到达,则该路由器的路由表也要作相应修改。

 2.链路状态(L-S)算法

 链路状态算法又称最短路径优先(Shortest Path First,SPF)算法。著名的OSPF(开放式最短路径优先)协议就是采用这类算法。

 链路状态算法的基本思想是:

 每台路由器在启动时首先获得链路状态元素;

 每台路由器定期向互连网上所有的路由器广播链路状态通告(LSA);

 每台路由器累积LSA后形成拓扑结构数据库,并以此算出本路由器去目的网络的最佳路径。

 如图2-50所示。

 

(1)链路状态

 这里链路是指连接路由器的网络;

 状态是指相邻路由器是开通还是关断。

 所以链路状态是指一台路由器所连的网络和相邻路由器是开还是关的状态。

 链路状态反映了一台路由器最基本的网络拓扑结构。

(2)链路状态通告(LSA)

 链路状态通告(Link State Advertisements,LSA)包含了一台路由器最基本的网络拓扑结构信息。

 当一台路由器的相邻路由器状态发生变化时,即该路由器的物理链路状态发生变化时会很快检查出来,该路由器就会向互连网中所有的路由器广播LSA报文。

 LSA报文广播的是路由更新消息。

 每台路由器还会周期性地发送LSA报文,以保证拓扑数据库的同步。

 一台路由器所发的LSA是向全网所有路由器广播的,而不是仅局限于相邻路由器。

(3)拓扑结构数据库

 每台路由器接收互连网中所有其他路由器发来的LSA报文,不断积累并归入到该路由器的拓扑结构数据库中。

 每台路由器根据拓扑结构数据库即能用一定算法计算出去所有目的网络的最佳途径。如图2-51所示。

 拓扑结构数据库反映了整个互连网的拓扑结构图,在互连网中所有路由器中的拓扑结构数据库都是相同的。

 但是互连网中各路由器都是分别以本路由器作为源站点计算路径的,即是以本路由器作为树根,计算出一棵最短路径树,所以各路由器最终产生的路由表是各不相同的。

2.4.4 因特网上的网络层

1.IP协议




2.I P地址

 (2)IP地址的书写格式

  32位的IP地址通常用点分十进制标记法书写。

  其书写格式为:W.X.Y.Z,

  每字节以十进制记录,从0到255。

  各类IP地址的书写格式特点如下:

  A类:0<W<=127,网络地址段为:W,主机地址段为:X.Y.Z

  B类:128<=W<=191,网络地址段为:W.X,主机地址段为:Y.Z

  C类:192<=W<=223,网络地址段为:W.X.Y,主机地址段为:Z

  D类:224<=W<=239,用于组播地址,无网络地址主机地址的分段。

  E类:240<=W<=247,用于研究。

  值为全0和全255(对应二进制就是全1)时有特殊的意义。值为全0时表示本网络或本主机。值为全255时表示一个广播地址,它代表网络中的所有主机。

(3)网络地址

  IP地址0.0.0.0通常用于表示主机本机或默认网络。

  默认情况下,

  A类网络地址格式为:W.0.0.0,

  B类网络地址格式为:W.X.0.0,

  C类网络地址格式为:W.X.Y.0,

  即网络地址是IP地址中对应主机的位为全0。

  例如,20.0.0.0代表网络号为20的一个A类网络,也可称之为是一个A类网络地址。

(4)广播地址

 全部由1组成的地址(255.255.255.255)通常代表当前内部局域网网络上的所有结点,这是一个局域网中的广播地址。

 有一个正确的网络号,主机号全为1的地址(如:20.255.255.255)可以用来向因特网上任意远程局域网发送广播分组。

 默认情况下,

 A类广播地址格式为:W.255.255.255,

 B类广播地址格式为:W.X.255.255,

 C类广播地址格式为:W.X.Y.255,

 即广播地址是IP地址中对应主机的位为全1。

 例如,20.255.255.255代表网络号为20的网络中的所有主机,也可称之为是一个A类广播地址。

 如上所述,在一类IP地址段中,主机位为全0的用作了网络地址,主机位为全1的用作了广播地址,它们不能再分配给主机用,所以,在计算每段地址主机可用的IP地址数时都要减2,例如,一个C类网段主机位有8位,它可用的主机IP地址数为28-2=254。

(5)特殊的IP地址

 所有形如127.x.y.z的地址都保留作为回路(loopback)测试,

 例如人们常用的ping 127.0.0.1命令,就是用于测试本机的TCP/IP协议是否正常工作。

 在每一类地址中还有一些内部保留的私有IP地址供用户的内部局域网使用,

 如:

 10.x.y.z,

 172.16.y.z ~ 172.31.y.z,

 192.168.y.z。

 用户在其内部局域网中使用这些地址不会与因特网发生冲突。

(6)默认网关

 一个物理网络内只有网络地址相同的两台主机才能直接通信,否则要利用路由器才能转发。

 在主机上设置IP地址时,还经常要设置默认网关的IP地址。

 默认网关是本网段路由器接口地址。

 默认网关的网络地址与本网段主机的网络地址必须相同。

3.子网

一个网络上的所有主机都必须有相同的网络号。有时,这种IP编址特性会引发问题。

 让网络内部可以分成多个部分,但对外像任何一个单独网络一样动作,这些内部再分的网络都称作子网。在网络外部,子网是不可见的,因此分配一个新子网不必与NIC联系或改变程序外部数据库。

(1)IP子网划分概述

  子网的划分,实际上就是设计子网掩码的过程。

 子网掩码是用来屏蔽IP地址的一部分,从IP地址中分离出网络地址和主机地址。

 子网掩码是由4个十进制数组成的数值,中间用"."分隔,如255.255.255.0。若将它写成二进制的形式即为:11111111.11111111.11111111.00000000,其中为"1"的区段用于分离出网络地址,为"0"的区段用于分离出主机地址,通过将IP地址与子网掩码进行"与"逻辑运算,就可得出网络地址。

 例如,假设IP地址为192.160.4.1,子网掩码为255.255.255.0,先将它们转化成二进制,每节不足8位的要在前面补0,写满8位,然后再进行"与"运算,过程和结果如下:

再将运算结果转化成十进制,则得出网络地址为192.160.4.0。

 每类地址具有默认的子网掩码,
 A类子网掩码为:255.0.0.0,
 B类子网掩码为:255.255.0.0,
 C类子网掩码为:255.255.255.0,

 即子网掩码中对应IP地址网络的位为全1,对应IP地址主机的位为全0。

除了使用上述的表示方法之外,还有使用子网掩码中"1"的位数来表示的,

 例如,如果A类的某个地址写为12.10.10.3/8,这里的最后一个"8"说明该地址的子网掩码有8位"1",与默认的子网掩码255.0.0.0是等效的;而199.42.26.0/28表示网络199.42.26.0的子网掩码位数有28位(注意,这已不是默认的子网掩码了,详见后述)。

如果有5个LAN,每个LAN有30台主机,均少于C类地址允许的最大主机数254。为这5个LAN申请5个C类IP网段显然有点浪费。如果从主机位部分拿出几位作为子网号当网络号用,以区分不同的LAN,又保证每个子网的主机地址数量能够容纳30台主机,这就可用一个C类网段来解决问题。

我们知道,一个C类地址,只有最后8位是主机位,现在把这个C类地址分成5个LAN,我们可向主机位借用3位作为子网号,就可以保证5个LAN的需求(因为23=8>5)。

例如:C类网络192.168.1.0,主机号部分的前三位用于标识子网号,

 即:11000000.10101000.00000001.xxxyyyyy

 网络号+子网号+新的主机号部分

 其中:xxx部分是子网号,yyyyy部分是新的主机号,新的主机号有5位二进制数,25-2=32-2=30,正好可以编出30个主机地址,容纳30台主机。

 为了能分离出新的网络地址,即带子网号的网络地址,在子网掩码与IP地址进行"与"运算时,必须将子网号保留下来,因此,此例的子网掩码就应该设计成如下形式:

 11111111.11111111.11111111.11100000

 转换成十进制后子网掩码就是:255.255.255.224,这就不再是原来的默认子网掩码了,而是自定义的子网掩码。

这种在原来IP地址结构的基础上增加一级结构的方法称为子网划分。

  前提是网络规模较小,IP地址空间没有全部利用。



(2)子网掩码的计算与地址区间的确定

  ①已知子网内的主机数量

  假设已知子网内的主机数量,则按"2n-2≥主机数量"算式(减2是为了去掉本子网内的1个网络地址和1个广播地址),计算出最接近主机数量值的n值,n值即是子网掩码中最右边主机位应具有的二进制位数,这几位应全为0,主机位左边的位数即是子网号占用的位数,这几位应全为1。

例如:设一个C类网段为192.168.1.0,要求子网内的主机数量为50,按2n-2≥50算式计算,最接近主机数量值的n值为6,则主机位应具有6位,子网号占用的位数为8-6=2位,这时的子网掩码为:

 11111111.11111111.11111111.11000000

 十进制表示为:255.255.255.192

因此,在这个C类网段中,可以包含22=4个子网,每个子网段可以容纳26-2=62台主机。

  ②已知子网的数量

  假设已知子网的数量,则按"2m≥子网数量"算式,计算出最接近子网数量值的m值,m值即是子网掩码中子网号占用的位数,这几位应全为1,由此可以推算出剩下的最右边主机位应具有的二进制位数,这几位应全为0。

 例如:设一个C类网段为192.168.1.0,要求有4个子网,按2m≥4算式计算,最接近子网数量值的m值为2,则子网号占用的位数为2位,主机位应具有8-2=6位,这时的子网掩码为:

 11111111.11111111.11111111.11000000

 十进制表示为:255.255.255.192

说明:

早期,由于地址分类(如:A、B、C类IP地址的分类)对网络规划方式的限制,所划分的子网段内,子网地址的最前一个值与最后一个值不可以采用,即子网地址(不是主机地址)为全0和全1的都不能用,所以,那时算子网数量就要按"2m-2≥子网数量"算式来算子网应具有的位数,使得实际所能运用的子网数量会比原来可组成的子网数量少2个,在IP地址不足的情况下,又平白造成另一次IP地址规划的浪费。

为此,IETF提出CIDR(Classless Inter-Domain Routing,无分类网际寻址)的架构。CIDR打破了以往地址分类的限制,网段的规划完全依照子网掩码进行定义,使得原来A、B、C类网络地址是固定长度区块的划分,变成可变长度区块的架构(VLSM,可变长子网掩码),因此,现在在CIDR的架构下,子网数量就可按"2m≥子网数量"算式来算子网应具有的位数了,例如,2位子网位,4个子网都能用。

现在几乎所有的路由器都提供CIDR的功能,所以,可放心的运用CIDR机制来进行子网划分,以充分利用到每一个IP地址。

4.因特网控制协议

除了用于数据传送的IP协议外,因特网还有多个用于网络层的控制协议,包括ICMP,ARP,RARP以及BOOTP。

 (1)因特网控制消息协议(ICMP)

 因特网的操作被路由器严密监视。当发生意外事故时,这些事件由ICMP(Internet Control Message Protocol)报告,它也可以用来检测因特网。

常用于检测网络连通性的ping命令,就是使用了ICMP进行操作的。

(2)地址分辨协议(ARP)

 虽然因特网上的每个机器都有一个或多个IP地址,却不能真正用它们来发送分组,因为主机名和IP地址都是逻辑地址,数据链路层硬件不能识别它们。

 如今,大多数主机都是通过一个只识别局域网地址的网络接口卡连上局域网的。例如,每个出厂的以太网卡都有一个48位以太网地址。以太网卡的生产商向一个权威机构申请一大批地址,以保证没有两个相同地址的网卡,避免当两个网卡用于同一个局域网时出现冲突。

 这些网卡发送和接收基于48位的以太网地址的帧,它们完全不知道32位IP地址。

 真正通信时是要使用物理地址经过物理网络(如以太网)来完成的,那么,IP地址如何映射到数据链路层的物理地址上。

地址分辨协议(Address Resolution Protocol,ARP)就是用来将IP地址翻译成物理网络地址的。

 当应用程序把IP分组交给网络接口驱动程序时,由接口驱动程序完成IP地址到物理地址的映射请求。

 若在本地映射表中找不到,该接口驱动程序就广播一个ARP分组给本地网所有主机。这时网络上所有支持ARP的主机便会收到ARP请求分组,但是只有ARP分组中IP地址和自己的IP地址一致的主机才会响应,将它的物理地址告诉给请求者。


 当以太网卡拆除并换上新卡(新以太网地址)时,为了使地址映射可变,ARP缓存区中的项每过几秒钟就会刷新一次。

值得说明的是,ARP表是存放在内存里的,当计算机断电后ARP表将消失,计算机下次加电启动时还是要通过ARP广播重建ARP表。

5.路由选择协议


 一个自治系统内部的路由器之间的交互没有统一的协议可用。

  大部分自治系统使用少数协议中的一种在内部传播可达性信息。图2-71表示的3种内部网关协议,分别称作路由选择信息协议(Routing Information Protocol,RIP),Hello和OSPF协议。

  EGP虽然不是真正的路由选择算法,但它规定了一个自治系统内的路由器与另一个自治系统内的路由器互相通信的方式。

  虽然EGP是一种很有用的技术,但也有其缺陷,如它不像一种路由协议而像一个可达性协议。

  边界网关协议(Border Gateway Protocol,BGP)正是为了克服EGP的问题而开发的。

  BGP是一种AS之间的路由协议,用于因特网。在两个路由器间最初的数据交换是整个BGP的路由表,更多的更新是作为路由表的变化而发送出去的。与其他的路由协议不同,BGP不需要对整个路由表到进行定期的更新。虽然BGP对一个特定的网用所有灵活的路径来维护一张路由表,但它在更新信息中仅传输主要的优化的路径。

RIP是使用广泛的IP路由选择算法之一,它实现了距离向量算法,并使用跨度(即跳数)为计算标准:0个跨度是直接连接的局域网,1个跨度是通过一个路由器可达,16个跨度被认为是最大极限,表示无穷距离,意即不可达。

HELLO协议是另一个距离向量路由选择协议,但它的计量对象是延时,而不是跨度。

OSPF是一个现代的链路状态协议,每个路由器将它所连接的链路状态信息向其他路由器传播。链路状态机制解决了距离向量产生的许多收敛问题,适用可伸缩的环境。

2.4.5 下一代IP协议IPv6

1. IPv6概述

现在使用的IP版本是IPv4,IPv4的32比特的IP地址空间已经无法满足迅速膨胀的因特网规模。为此,IETF推出了IPv6。

 在IPv6的设计过程中除了一劳永逸地解决地址短缺问题以外,还考虑了在IPv4中解决不好的其它问题。

IPv6的主要优势体现在以下几方面:扩大地址空间、提高网络的整体吞吐量、改善服务质量(QoS)、安全性有更好的保证、支持即插即用和移动性、更好实现多播功能。

IPv6与IPv4相比,IPv6所引进的主要变化如下:

 (1)更大的地址空间。

 IPv4中规定IP地址长度为32,即有232-1个地址;而IPv6中IP地址的长度为128,即有2128-1个地址。有了大量的可用地址,地址保留技术(例如NAT的部署)将不再是必须的。

(2)灵活的头部格式。

 IPv6使用了一种全新的分组格式,且允许与IPv4在若干年内共存。它使用一系列固定格式的扩展头部取代了IPv4中可变长度的选项字段。IPv4包头和IPv6包头不能共同使用,并且IPv6协议与IPv4协议不逆向兼容。为了能识别和处理两种包头,主机或路由器必须同时装有IPv4和IPv6。

(3)简化了协议,加快了分组的转发。

 如取消了头部校验和字段,分段只在源站进行而不在路由器上进行。

(4)内置的安全性。

 IPSec对IPv4而言是可选的,而对IPSec的支持是IPv6协议套件内置的。这为网络安全的需求提供了基于标准的解决方案,并提高了不同IPv6实现之间的互操作性。

 使用IPv6,网络中用户可以对网络层的数据进行加密并对IP报文进行校验,这极大的增强了网络安全。

(5)对服务质量(QoS)的更好支持。

 IPv6包头中的新字段定义了如何处理和识别通信。通过在IPv6包头中使用"流标号"字段,通信标识允许路由器识别属于流的数据包并为之提供特殊处理。流是从一个源到一个目标的一系列数据包,所有属于同一个流的数据包都具有同样的流标号。因为在IPv6包头中标识通信,所以即使在数据包有效负载使用IPSec加密时也很容易实现对QoS的支持。

(6)加入了对自动配置的支持。

 这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷,从而达到即插即用。

 (7)更小的路由表。

 IPv6的地址分配一开始就遵循聚类的原则,这使得路由器能在路由表中用一条记录表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。

(8)可扩展性好。

 通过在IPv6包头后添加扩展包头,可以扩展IPv6来实现新功能。与IPv4包头(只支持40字节的选项)不同,IPv6扩展包头的大小只受IPv6数据包的大小限制。

2. IPv6地址格式

(1)IPv6地址类型

 众所周知,目前的IPv4地址有3种类型:单播(unicast)地址,多播(multicast)地址,广播(broadcast)地址。而IPv6地址虽然也是3种类型,但是已经有所改变,分别为:单播(unicast),多播(multicast),任播(anycast)。IPv6地址不再分A、B、C类。

(2)IPv6地址表示形式

 以下是用来将IPv6地址表示为文本字符串的三种常规形式:

①冒号十六进制形式

 这是首选形式 n:n:n:n:n:n:n:n。

 一共16个字节,分成8组来书写,每组是4个十六进制数字,组之间用冒号隔开。

 例如:

 3FFE:FFFF:7654:FEDA:1245:BA98:3210:4562

 ②压缩形式

 由于地址长度要求,地址包含由零组成的长字符串的情况十分常见。为了简化对这些地址的写入,可以使用压缩形式,在这一压缩形式中,多个0块的单个连续序列由双冒号符号(::)表示。此符号只能在地址中出现一次。

 例如,

 多路广播地址FFED:0:0:0:0:BA98:3210:4562的压缩形式为FFED::BA98:3210:4562。

 单播地址3FFE:FFFF:0:0:8:800:20C4:0的压缩形式为3FFE:FFFF::8:800:20C4:0。

 环回地址0:0:0:0:0:0:0:1的压缩形式为::1。

 未指定的地址0:0:0:0:0:0:0:0的压缩形式为::。

③混合形式

 此形式组合IPv4和IPv6地址。在此情况下,地址格式为n:n:n:n:n:n:d.d.d.d,其中每个n都表示六个IPv6高序位16位地址元素之一的十六进制值,每个d都表示IPv4地址的十进制值。

④IPv6前缀

 地址中的前导位定义特定的IPv6地址类型。包含这些前导位的变长字段称作格式前缀。

 IPv6单播地址常由两个逻辑部分组成,第一部分为一个64位网络地址前缀,第二部分为一个64位的主机地址,主机地址(接口标识符)也叫做EUI-64接口标识符,可根据物理地址自动生成,这时也可由手工指派,还可由操作系统随机生成,以保证主机安全。

前缀是IPv6地址的一部分,用来表示IP地址中某些前面的位是固定的值,或用来反映其所代表的网络号(或子网),类似于IPv4中的子网掩码的作用。IPv6路由和子网标识的前缀,与IPv4的"无类别域中路由"(CIDR)表达法的表达方式一样。IPv6前缀用"ipv6 地址/前缀长度"表达法书写。例如,21DA:D3::/48前缀表示地址的前48位为网络标识,具体的网络号为:21DA:D3:0:。

IPv4实现通常用带句点的十进制表示叫做子网掩码的网络前缀。IPv6中不使用子网掩码,只支持前缀长度表达法。

 以下是具有64位前缀的地址的示例。

 3FFE:FFFF:0:CD30:0:0:0:0/64

  此示例中的前缀是3FFE:FFFF:0:CD30。该地址还可以以压缩形式写入,如:3FFE:FFFF:0:CD30::/64。

(3)单播地址

单播地址就是传统的一个网络接口的地址。

多路广播地址的高序列8位的字节具有十六进制值FF。此8位的字节的任何其他值都标识单播地址。

用户常用的IPv6单播地址有:可聚合的全局单播地址、链接本地地址、站点本地地址、特殊地址、兼容性地址等类型。

①可聚合的全局单播地址

由001(二进制)开头的可聚合全局单播地址,等价于IPv4公用地址。在IPv6的因特网上,它们是全局可路由的和可达的。可聚合的全局单播地址也称为全局地址。

可聚合的全局单播地址前64位为前缀,后64位是唯一的接口标识符。其地址结构如下图所示。

(IPv6地址一般以128位地址的一半即64位为分界线)

②链接本地地址

链接本地地址在与同一个链接上的邻居节点通信时由节点使用。链接本地地址等价于"自动专用IP寻址(APIPA)"的IPv4地址(使用169.254.0.0/16前缀)。链接本地地址的作用域是本地链接。链接本地地址是"邻居探索"过程所需要的,即使没有所有的其他单播地址,它总是会自动进行配置。

链接本地地址的前缀总是FE80::/64,前缀与主机地址位之间都为0,后64位为接口标识符(主机地址)。IPv6路由器不会转发基于链接本地地址的本地通信。

例如:FE80::226:18FF:FE09:260C/64就是一个链接本地地址。

③站点本地地址

站点本地地址等价于IPv4私有地址(10.0.0.0/8、172.16.0.0/12和192.168.0.0/16)。如果没有连到IPv6的因特网,在LAN中可以使用站点本地地址,而不与可聚合全局单播地址发生冲突。站点本地地址的作用域是该站点(组织的LAN网络)。

与链接本地地址不同,站点本地地址不会自动得到配置,必须指派。

站点本地地址的前缀总是FEC0::/10,前缀占用10位,再后就是54位子网标识符,利用它就可以在组织中创建子网,子网ID字段之后,是64位的接口ID字段,用来标识子网上的特定接口。新版的站点本地地址称为"唯一的本地IPv6地址",前缀为FD00::/8。

链接本地地址与站点本地地址主要用于本地LAN。

例如:FEC0:0:0:1::1/64,FEC0:0:0:1::2/64, FD00:0:0:1::1/64等都是站点本地地址。

④特殊地址

下面是特殊的IPv6地址:

●未指定地址

未指定地址(0:0:0:0:0:0:0:0或::)仅用于表示某个地址不存在。它等价于IPv4未指定地址0.0.0.0。未指定地址通常被用作临时性的数据包的源地址。未指定地址永远不会指派给某个接口或用作目标地址。

●环回地址

环回地址(0:0:0:0:0:0:0:1或::1)用于标识环回接口,允许节点将数据包发送给自己。它等价于IPv4回路地址127.0.0.1。环回地址通常被用作测试。

(4)多播地址

IPv6中的组播(多播)在功能上与IPv4中的组播类似,表现为一组接口对看到的流量都很感兴趣。

在IPv6中去掉了广播地址,主要是考虑到网络中由于大量广播包的存在,容易造成网络的阻塞,而且由于网络中各节点都要对这些大部分与自己无关的广播包进行处理,对网络节点的性能也造成影响。IPv6将广播看作是多播的一个特例。

IPv6很容易区分多播地址,因为它总是以FF开始。多播地址不能被用作源地址。

(5)任播地址

一个任播地址是一组接口(一般属于不同节点)的网络地址,通常这一组网络地址对应的设备提供同样的服务,如一个网络的多个出口地址。这是IPv6增加的一种类型。可将单个任意播地址分配给多个接口,这种地址被称为"一对最近"地址。

送往一个任播地址的包只被传送至该组接口其中的一个接口上,通常是根据路由协议对于距离的计算方法,选择"最近"的一个。

多播地址用于一对多通信,发送到多个接口。任意播地址用于一对另一组中之一的通信,发送到单个接口。

目前,任播地址只用于目标地址,并且只指派给路由器。在分配任播地址给路由器时,必须指明其为任播地址。

任播地址从单播地址空间指派,在语法上不能与其他地址区别开来。任播地址的作用域,是指派任播地址的单播地址类型的作用域。

子网路由器任播地址既是预定义,也是必需的。子网路由器任播地址用于和连接远程子网的多个路由器中的一个进行通信。

(6)主机地址

安装单个网络适配器的IPv4主机,有一个指派给该适配器的单独的IPv4地址。而一个IPv6主机通常自动配置有多个IPv6地址,即使只有单一的网络接口。

IPv6主机指派有以下单播地址:

●用于每个接口的链接本地地址

●用于每个接口的单播地址(可以是站点本地地址和一个或多个全局地址)

●用于回环接口的回环地址(::1)

在Windows中,可以通过以

下命令行命令查看IPv6地址。

ipconfig /all

netsh interface ipv6 show address

2.5 传输层

传输层不仅仅是另外的一层,它是整个协议层次结构的核心。

  其任务是为从源端机到目的机提供可靠的、价格合理的数据传输,而与所使用的网络无关。

2.5.1 传输服务

1.提供给高层的服务

传输层的最终目标是向其用户(一般是指应用层的进程),提供有效、可靠且价格合理的服务。

  为了达到这一目标,传输层利用了网络层所提供的服务。

  传输服务也有两种类型。

  面向连接的传输服务在很多方面类似于面向连接的网络服务。两层的寻址和流量控制方式也类似。

  无连接的传输服务与无连接的网络服务也很类似。

 传输层的存在使传输服务远比其低层的网络服务更可靠。

  分组丢失、数据残缺均会被传输层检测到并采取相应的补救措施。

  传输服务原语的设计可以独立于网络服务原语,后者是随网络不同而会有很大差异的。

  有了传输层后,应用于各种网络的应用程序便能采用一个标准的原语集来编写,而不必担心不同的子网接口和不可靠的数据传输。

  传输层起着将子网的技术、设计和各种缺陷与上层相隔离的关键作用。

2.服务质量
3.传输服务原语

2.5.2 传输协议的功能要素

1.寻址

  传输层要在用户进程之间提供可靠和有效的端到端服务,必须把一个目标用户进程和其他的用户进程区分开来,这是由传输地址来实现的。

  为确保所有传输地址在全网上是唯一的,传输地址规定由网络号、主机号以及由主机分配的端口组成。

  传输地址的构成有两种办法:

  (1)层次地址

  该地址由一系列的域组合而成,把它们在空间上分开来。例如:

   (地址)=<国家><网络><主机><端口>

  (2)平面地址空间

  平面名称对于地理上或任何其他层次方面都无特定关系的传输地址,可以用一个号码当作单一系统内的地址。用这种方法确定的地址是唯一的,而同它所处的部位无关。

2.建立连接

  一个传输实体要向目的机器发送一个连接请求TPDU,并等待对方接受连接的应答。

3.释放连接

  释放连接有两种方式,即非对称释放和对称释放。

  非对称释放类似电话系统动作方式,当一方挂机后,连接即告中断。如图2-85所示。

4.流量控制和缓冲策略

  传输层中的流量控制问题在某些方面与数据链路层的相似,但在另外一些方面,则是有区别的。

  其基本的相似之处是它们均需采用滑动窗口或其他机制。

  它们之间的主要差别是,路由器通常只有相对较少的线路连接,而主机则可有很多个连接。这样,传输层就不可能采用数据链路层实施的缓冲策略。

  在传输层中,是在源端进行缓冲还是在目的端进行缓冲取决于传输信息的类型。

  对于低速突发性的信息,最好在发送端进行数据缓存;

  对于高速平稳的信息传输,最好在接收端进行数据缓存。

5.多路复用

  在传输层中进行多路复用可以有两种方式:向上多路复用和向下多路复用。

  向上多路复用是指把多个连接多路复合到一个下一层连接上实现多路复用。如图2-87所示。

  向上多路复用可以使用户充分利用昂贵的虚电路资源。

6.崩溃恢复

  如果主机和路由器易遭受崩溃,那么就存在着从崩溃中恢复的问题。

  如果连接的两端均保持了当前的状态信息,传输层可以从网络层的错误中进行恢复。如图2-89所示。

2.5.3 因特网传输协议

因特网在传输层有两种主要的协议:

  一种是面向连接的协议TCP;

  另一种是无连接的协议UDP。

  传输控制协议TCP(Transmission Control Protocol)是专门设计用于在不可靠的因特网上提供可靠的、端到端的字节流通信的协议。

  IP层并不能保证将数据报正确地传送到目的端,因此TCP实体需要判定是否超时并且根据需要重发数据报。到达的数据报也可能是按错误的顺序传到的,这也需要由TCP实体按正确的顺序重新将这些数据报组装为报文。

  简单地说,TCP协议提供了用户所要的可靠性,而这是IP层所未提供的。

1.TCP服务模型

通过在发送方和接收方分别创建一个称为套接字(socket)的通信端点,可以获得TCP服务。

  每个套接字有一个套接字序号(地址),它包含主机的IP地址以及一个主机本地的16位号码,称为端口(port),端口号的最大取值为65535(216-1)。

  应用程序间的通信具体由多个进程实现,在多用户多任务的网络中要求一台主机能并发处理多个进程。

  TCP/IP协议在传输层顶端提供了多个端口的服务,一个端口对应一个进程,从而使一台主机能同时并发处理多个进程。TCP/IP端口的概念在通常网络中称为服务访问点,亦即本层与上层的层间接口。在TCP/IP中,网络层(IP层)不设多个服务访问点(多端口),传输层(TCP层或UDP层)上设立多端口是对IP层的功能的一种补充和加强。

  在TCP/IP中进程采用"客户/服务器"模式,这是一种不对等的主客模式。在该模式中进程总是由客户机(即客户程序)发起,而服务器(服务程序)总是随时等待客户机进程要求,并予以响应提供相应进程服务。

TCP/IP为服务器规定了一组标准的端口号,把该组端口的每个端口分给一个固定的标准服务进程。

  例如,

  对应TCP协议上Telnet(远程登录)规定使用端口号23,

  FTP(文件传输协议)规定使用端口号21,

  SMTP(简单电子邮件传输协议)规定使用端口号25,

  HTTP(超文本传输协议)规定使用端口号80等等。

在传输层的UDP协议上也规定了一组固定的端口号,

  如TFTP(简单文件传输协议)规定使用端口号69等。

复制代码
     TCP和UDP协议都可支持DNS(域名服务),都规定使用端口号53。

在Windows中,可以通过以下命令行命令查看本机正在使用的端口号。
     netstat -an

除"保留端口"外,应用程序还需使用到的其他大量端口称为"自由端口"。

  保留端口是固定的全局性的,而自由端口则是本地机随机动态分配的。

  所有的TCP连接均是全双工的和点到点的。点到点的意思是每个连接只有两个端点。

  TCP不支持多点播送和广播。

2.TCP协议格式

TCP连接上的每个字节均有它自己的32位顺序号。

  发送和接收方TCP实体以数据段的形式交换数据。

  TCP软件决定数据段的大小。

  它可以将几次写入的数据归并到一个数据段中或是将一次写入的数据段分为多个数据段。

  每个网络都存在最大传送单位MTU(Maximum Transfer Unit),要求每个数据段必须适合MTU。

  TCP实体所用的基本协议是滑动窗口协议。当发送方传送一个数据段时,它还要启动计时器。

3.TCP数据段头

下面详细介绍TCP头中每个字段的意义。

  源端口和目的端口字段(各16位)标识出本地和远端的连接点。

  顺序号和确认号字段(各32位)执行它的通常功能。顺序号是本报文段所发送的数据部分第一个字节的序号。

注意,TCP不是按报文段的个数来编号的,而是一个字节一个编号。 发送顺序号是从系统内定的顺序号的初值开始,发送一个字节加一个1,不断在发送方累加;确认号是在发送顺序号的初值开始,再加上本次所接收的包的字节总数形成的。

但返回的确认号是在已收到的数据的最高序号上加1,指希望接收的下一个字节的序号,也就是期望收到的下一个报文段的头部中的顺序号。例如,一报文段的顺序号为300,而其发送的数据共100字节,则返回的确认号是400,即下一个发送的报文段的顺序号也是400。

通过顺序号和确认号的值,便可判定所传送的数据是否已经收到。

TCP头长(4位)表明TCP头部长度,以4个字节(32位)为单位。

  接下来的6位未用,设为0。

后面为控制标识字段,是6个1位的标志。

  URG(紧急)位置1,表示此包为紧急数据包,需要立即处理,而不要按原来的排队顺序来传送。紧急数据放置的位置在后面的紧急指针字段进行描述。

  ACK(响应)位置1,表明带有响应确认信息。

  PSH(推进)位置1,表示要求包直接将携带的数据往上层应用程序送去,信息不再经过TCP的包处理。

  RST(重设)位置1,用于复位TCP,表示重新对TCP包进行设定传送。

  SYN(同步)位置1,表示TCP正在进行双方同步。用于建立连接。

  FIN(结束)位置1,表示某端点的TCP数据传送工作已经结束,用于释放连接。源主机与目的主机都要有正确的响应才表示是个完整的结束(对称释放)。

TCP中的流量控制是通过使用可变大小的滑动窗口来处理的。

  窗口大小字段(16位)表示在发送数据但还未收到确认时,之后还可以接收多少字节(即还剩多少缓冲区的空间)。

4.TCP协议功能

TCP除了提供多个端口保证多进程通信外,主要提供信源机与信宿机之间可靠的端到端的面向连接的服务,包括流量控制和拥塞控制。

(1)确认和超时重传机制

  确认和超时重传机制的基本思想是:

  信宿机在收到每一正确分组时向信源机回送一个确认,信源机在某个时间片内没收到确认时,则重传该分组。

  随之产生的问题是重传,即可能导致某个报文重复出现。IP数据报在网上都有一个生命期TTL,当TTL减为0时该IP数据报被抛弃。但当IP数据报被存储在某网关而未到生命期时,而信源机的时间片已到,则也对其认为超时而重传,导致有两个相同的报文在网上重传,致使信宿机难以判断和处理重复的报文。

  信源机重传机构中的时间片大小是很难确定的。

  由于重传机制的重复报文存在,TCP中的确认机制不是针对段而是采用以字节为单位的"累计确认"方法,在n字节累计确认后,前面字节的确认丢失就不需再重传(参见TCP头部中的顺序号和确认号)。

  另外,在最初端到端间建立连接时采用"三次握手"方法,以识别重复的报文。

(2)TCP连接的建立与拆除

  ①TCP连接的建立

  TCP采用"三次握手"建立连接的基本思想是:

  信源机发一个带本次连接序号的请求(第一次握手);

  信宿机收到请求后如同意连接则发回一个带本次连接序号(全双工发送)的确认应答,应答还包含信源机连接序号(第二次握手);

  信源机收到应答(含两个初始序号)后再向信宿机发一个含两个序号的确认(第三次握手),

  信宿机收到后确认,则双方连接建立。

 ②连接的拆除

  由于TCP连接是一个全双工的数据通道,在一方(如主机A)发起拆除连接信号后(设置FIN位为1),只是表示没有数据要传送了,相当于拆除一个"半连接",另一方(如主机B)收到信息后,会对这个结束请求信息进行响应,但这个响应信息只是表示收到对方(主机A)结束联机的请求,并不表示已经答应终止联机,因此,该节点(主机B)仍然可以对提出联机结束的一方(主机A)进行数据传送,而要求的一方(主机A)仍然会对这些数据进行接收,直到所有数据传送结束,另一方(主机B)再发出FIN信息,同意结束双方的联机,相当于拆除另一个方向的"半连接",联机要求的一方(主机A)收到这个信息后,会执行响应动作,确定整个联机结束的作业流程。TCP连接的拆除过程如图2-95所示。

上述连接拆除的过程,相当于TCP采用三次握手方法拆除两个"半连接"。

5.UDP协议功能

2.6 应用层

2.6.1 应用层概述

应用层以下各层提供可靠的传输,但对用户来说,它们并没有提供实际的应用。

  因特网应用层包含两类不同性质的协议。

  第一类是一般用户能直接调用或使用的协议,如TELNET,FTP和SMTP。这是用户使用因特网资源的用户界面或工具。

  第二类是为系统本身服务的协议,如DNS协议等。

2.6.2 用户能直接调用的协议

1.TELNET - 远程登录协议

  在用户主机上键入TELNET命令后可连接一台远程主机,用户主机作为终端能共享该远程主机的资源。

  为实现这种互操作性,TELNET协议包含了一个名叫虚拟终端(NVT)的软件。

3.SMTP - 简单邮件传输协议

  SMTP称为简单邮件传输协议,在因特网上绝大部分电子邮件都基于此协议。

4.适用于UNIX系统间的应用协议

  除了上面三种基本协议外,如果网际互相通信的主机都为UNIX主机,则还可以使用一套以R开头的R实用程序。

  用于远程登录有rlogin、rexec、rxh,用于文件传输的有rcp等。

2.6.3 DNS

1.域名系统

  为了共享因特网上某台主机的资源,可以使用该主机的IP地址作为标识。

  大多数用户还是更习惯于用机器名,而不是用IP地址。

  为此TCP/IP在应用层中提供了一种域名系统(DNS)的服务。在用户使用机器名作为主机标识时,DNS会自动把机器名转变为IP地址,例如,以128.6.18.15作为IP地址的主机名为archie.rutgers.edu,则下面登录命令是等价的,用户可以任意选择:

  telnet 128.6.18.15 或 telnet archie.rutgers.edu

  一个域名由多个部分组成,中间用"."分隔,是一种有层次的域树结构。最右边的部分是高层次的部分,称为第一级域(本例中为edu)。第一级域可以派生出多个第二级域,如本例中的rutgers是一级域edu下面的一个二级域之一。一个二级域同样可以派生出多个三级域等。

  域名对大小写不敏感,即edu与EDU是等效的。域名全名不能超过255个字符。

在因特网上,有两种不同的域名组织模式。

  第一种是按部门机构组织的,称为"组织模式",

  第二种是按地理位置组织的,称为"地理模式"。

在因特网上我们看到的绝大部分主机都是按组织模式命名域名的,而且高层域都已经国际标准化了,如表2-7所示。在表中除最后一项是按地理模式外,其余各项都是组织模式域名的高层域。

在美国以组织模式命名域名的主机,通常都是以表中的域名作为第一级域。

  在美国以外的国家第一级域名则为该国家的代码,由2个字母缩写组成并且已经标准化。

  域名的最高管理机构是国际NIC(网络信息中心),管理第一级和第二级域名,整个域名管理机构是按树形层次结构分布管理的。

  域名和IP地址有一定对应关系,但并不属于同一结构体系。

  一台主机只能有唯一的IP地址,但其可以有多个域名。

  在一台主机的IP地址改变时,其原来的域名仍然有效。

2.域名管理和实施

  DNS是通过域名服务器管理,把一个管理域名的软件装在一台主机上,该主机就称为域名服务器,地区域名服务器以树形结构连入上级域名服务器。

  当请求将域名解析为IP地址时,首先向本地域名服务器请求解析。如有则返回解析,如域名不在本地域名服务器范围,则指向上级域名服务器。

当DNS客户端向DNS服务器查询IP地址时,或者某台DNS服务器(此时这台DNS服务器扮演着DNS客户端的角色)向另一台DNS服务器查询IP地址时,有两种查询模式。

一种是递归查询。DNS客户端发出查询请求后,若DNS服务器中没有所需的记录,则DNS服务器会为其客户端向其它DNS服务器发起查询。DNS客户端提出的查询请求一般属于递归查询(Recursive Query)。

另一种是迭代查询。DNS服务器与DNS服务器之间的查询,大部分属于迭代查询(Iterative Query)。当第1台DNS服务器向第2台DNS服务器提出查询请求后,若第2台DNS服务器中没有所需的记录,它会提供第3台DNS服务器的IP地址给第1台DNS服务器,让第1台DNS服务器自行向第3台DNS服务器查询,如此类推,直到查到为止。

3.资源记录

  每个域,都有相关的资源记录集合。

  当解析器给DNS一个域名,它所取回的是与该名有关的资源记录。因此DNS的实际功能就是把域名映射到资源记录上。

  一条资源记录共有5项。大多数情况下资源记录以ASCII文本显示,每条资源记录一行。

  格式如下:

  <Domain_name> <Time_To_Live>

Domain_name(域名)指出这条记录所指向的域。

  Time_To_Live(生存时间)字段指出记录的稳定性。

  每条资源记录的Class(类别)字段对于因特网信息,它总是IN。

 Type(类型)字段指出记录的类型。最重要的几种类型如下所示。

  (1)SOA记录:起始授权机构(Start of Authority,SOA)记录在一个区域必须是唯一的,定义了区域的全局参数,进行整个区域的管理设置。

  提供了名字服务器区域的主DNS服务器的完整域名,管理者的电子邮件地址,一个唯一的序列号,以及各种标志和时间范围。

  (2)A记录:最重要的记录类型是A(地址)记录。它将DNS域名映射到Value字段中指定的IPv4的32位地址(IPv6对应的记录类型是AAAA)。每个网络连接(每个IP地址)都有一个A类型的资源记录。

  (3)MX记录:次重要的记录类型是MX记录。这种记录提供邮件路由,指出邮件转发的下一个域。

  (4)NS记录:指明名字服务器。即用来指定该域名由哪个DNS服务器来进行解析。

  (5)CNAME记录:允许创建别名。

  (6)PTR记录:PTR总是用来将名字和IP地址联系起来,允许查找IP地址并返回相应机器的名字,这种功能被称为反向查找。

  (7)HINFO记录:允许人们找出一个域相应的机器和操作系统类型。

  (8)TXT记录:一般是为某个主机名或域名设置的说明。。

Value(值)字段。这个字段可以是数字、域名或ASCII串。其语义基于记录类型。

2.7 局域网体系结构

2.7.1 局域网参考模型

  在ISO的开放系统互连模型(OSI/RM)中,其下三层主要涉及的是通信功能。

  在这方面局域网有自身的特点。

  首先,局域网中数据以帧为单位传输;

  其次,局域网内一般不需要中间交换,其拓扑结构有总线形、星形和环形,故路径选择功能可大大简化,通常不设单独的网络层。

 由于局域网的种类繁多,其介质访问的方法也各不相同。

  为了使局域网中数据链路层不致过于复杂,LAN/RM将其划分为两个子层,即介质访问控制(MAC)子层和逻辑链路控制(LLC)子层。

  与访问各种传输介质有关的问题都放在MAC子层,当介质存取方法改变时,不致于影响其他较高层协议。

  数据链路层中与介质访问无关的部分都集中在LLC子层。

LAN/RM中物理层和数据链路层的功能如下:

  1.物理层

  物理层提供在物理层实体间发送和接收比特的能力,一对物理层实体能确认出两个介质访问控制MAC子层实体间同等层比特单元的交换。

  物理层也要实现电气、机械、功能和规程四大特性的匹配。

  2.数据链路层

  数据链路层的功能分别由其LLC子层和MAC子层承担。

  LLC子层向高层提供一个或多个逻辑接口(具有发送帧和接收帧的功能)。  还具有帧顺序控制及流量控制等功能。

  LLC子层还包括某些网络层功能,由于局域网中的数据是按编址的帧传送,没有中间交换,因而不需要路由选择。

  MAC子层支持数据链路功能,并为LLC子层提供服务。支持CSMA/CD,令牌环、令牌总线等介质访问控制方式。

  它判断哪一个设备具有享用介质的权力以及介质操作所需要的寻址。

2.8 局域网络介质访问方式

网络介质访问方式是一种方法,网络站利用它使用实际网络通道,以便通过网络发送报文。

  下列是用于局域网通信中最常用的访问方式。

  1.查询(Polling);

  2.令牌环(Token Ring);

  3.载波检测多路访问/冲突检测(Carrier Sense Multiple Access/Collision Detection, 简写为CSMA/CD);

  4.令牌总线(Token Bus)。

 2.8.1 查询

  在查询方案中,用户按照下列步骤取得对网络通道的访问。

  1.中心结点有规律地查询每个网络站,以获悉它是否有报文要发送。

  2.每当网络站有报文要发送,就清除通道,网络站得到通道的专用权并发送报文。

  这个方案最适用于有中心控制结点的结构,如星形拓扑。

2.8.2 令牌环

  在用于环形和总线网络中的令牌传递方案中,令牌沿网络通道传送,有规律地经过每个结点,令牌通常是一个8位的包。

  以下是令牌传递过程的简述:

  1.当有一个结点有数据帧要发送时,它首先检测令牌是否有空,如果有空,它夺取令牌并将其数据帧附在令牌上。

  2.当携带数据帧的令牌继续环行时,后面的每个结点都校验数据帧。

  3.目的设备辨认出此数据帧,接收它,并将一个收据信号附在令牌上,随后令牌继续环行。

  4.当源设备收到收据信号后,它就解除令牌的忙状态,于是令牌自由环行,过程又重新开始。

令牌环的主要优点在于它提供的访问方式的可调整性和确定性;

  各站具有同等访问环的权力,但也可以有优先权操作和带宽保护。

  适合使用光纤通信介质,实现高速传输,实时性强,适用于分布控制应用环境。

令牌环主要缺点是有较复杂的令牌维护要求。

  空闲令牌的丢失,将降低环路的利用率;

  令牌重复也会破坏网的正常运行;

  故必须选一个客户机作为监控站。

  如果监控站失效,竞争协议将保证很快地选出另一站点作为监控站(每个站点都具有成为监控站的能力)。

  当监控站正常运行时,它单独负责判断整个环的工作是否正确。

2.8.3 载波检测多路访问/冲突检测(CSMA/CD)

  CSMA/CD允许所有网络用户对网络通道进行同等访问,并无中央结点来控制通道的访问,也没有令牌。

  这一方案用于总线拓扑上较多。

  下面是CSMA/CD的工作过程简述:

  1.要发送报文的结点必须监视通道以辨别何时通道是可用的(该时刻没有其他网络站在发送),这是载波检测。

  2.当结点检测到通道有空时,它就发送报文,并以接收设备的地址进行标志。

  3.所有空闲的网络站(未进行传输的站)继续监视通道报文。

  4.被标记的结点接收报文,并返回一个确认帧。

  5.当发送通道检测到冲突,它们就停止传输,等待一个随机时间后重新发送。如图2-102所示。

  6.网络站在通知用户网络太忙之前,典型地重发16次。

 发送冲突的信息必须重发。

  参与冲突的各站分别延迟不同时间(称为后退)后重新发送。为公平起见,各站后退一随机时间周期再去抢占线路发送。

  一般采用称作"二进制指数后退算法",确定后退时间周期。

  方法是:

  i次冲突后,等待时隙数就从0~2i-1中随机选出。最小后退周期至少是一个时隙(一个时隙是信息在网上传输往返一次所需的时间)。如果冲突次数高,表明网络繁忙,发送站应增加后退时间,以降低再次产生冲突的可能性。 当达到10次冲突后,随机等待的最大时隙数就被固定在1023。16次冲突后,控制器将不再动作,并向计算机报告发送失败。进一步的恢复留待高层进行。

CSMA/CD的主要优点是简单、可靠、传输延迟小且成本低,但它不能适用实时控制的需要,传输效率不高,只能在负载不太重的局域网中使用。

2.9 以太网MAC帧格式

以太网II标准的MAC帧比较为简单,由5个字段组成。

前2个字段分别为6字节长的目的地址和源地址字段。

第3个字段是2字节的类型字段(IEEE 802.3类型的帧将此字段定义为长度字段),用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。例如,类型值0x0800表示帧中封装的数据为IP分组,0x8138代表Novell的IPX协议数据,0x0806表示帧中封装的数据为ARP分组等。

第4个字段是数据字段,其长度在46到1500(0x05DC)字节之间。

  考虑到MAC帧首部和尾部的长度共有18字节,可以得出有效的MAC帧长度为64~1518字节之间。

第5个字段,即最后1个字段是4字节的帧检验序列FCS(使用CRC检验)。

TCP/IP协议集总结(补充)









相关推荐
MrSYJ4 天前
TCP协议理解
后端·tcp/ip
两个人的幸福11 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
zzzzzz31011 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
BingoGo13 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack13 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户30745969820714 天前
PHP 扩展——从入门到理解
php
鹏仔先生15 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
大树8815 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
小宇宙Zz15 天前
Maven依赖冲突
java·服务器·maven
云水一下15 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php