1.5计算机网络的类别
1、按照网络的作用范围划分:
(1)广域网WAN:是互联网的核心比分,作用范围是几十到几千公里
(2)城域网MAN:跨越一个城市或几个城市
(3)局域网LAN:一般通过微型计算机或工作站相连在较小的范围,学校,工厂
(4)个人区域网PAN:把个人的设备连接起来的网络
2、按照网络使用者划分
(1)公用网:
(2)专用网:部分特殊业务而建造的网络,军队、银行等
3、用来把用户接入到互联网的网络
接入网AN:又叫本地接入网和居民接入网
接入网是从某个用户端到互联网中的第一个路由器之间的一种网络。
1.6计算机网络的性能指标
1、速率:比特率,b/s或bps,人们谈及网络速率时常常省略bit/s,多少兆,多少G
2、带宽:本来指信号拥有的频带宽度。计算机网络中表示单位时间内网络中的某个信道所能通过的最高数据率。带宽的单位就是bit/s.
3、吞吐量:表示单位时间内通过某个信道或端口的实际数据量,通常小于带宽。
4、时延:指数据(一个报文或分组)从网络一端到另一端的时间。
时延包括发送时延(传输时延)、传播时延、处理时延、排队时延。
在高速网络链路上,我们提高的仅仅是数据的发送速率而不是比特在链路上的传播速率。
提高发送速率只是减小了发送时延。
5、时延带宽积:
传播时延*带宽。在发送的第一个比特即将到达终点时,发送端一共发送的比特数
6、往返时间RTT
7、利用率
信道利用率和网络利用率
1.7计算机网络体系结构
开放系统互连基本参考模型OSI/RM,简称OSI
现在得到广泛应用的不是OSI,而是TCP/IP
网络协议:为进行网络中的数据交换而建立的规则、标准或约定称为协议。
协议的三个要素:(1)语法:数据与控制信息的结构或格式(2)语义:需要发出何种控制信息,完成何种动作及作出何种响应。
网络协议的结构应该是层次式的。
计算机网络的各层及其协议的集合就是网络的体系结构。
1、应用层交互的数据单元称为报文
2、传输层:为两台主机进程之间的通信提供通用的数据传输服务。主要使用两种协议,TCP和UDP协议。传输控制协议TCP:提供面向连接的、可靠的数据传输服务,数据传输的单位是报文段。用户数据报协议UDP:提供无连接的、尽最大努力的树传输服务,数据传输单位是用户数据报。
3、网络层:为不同主机提供通信服务,网络层将传输层的报文段或用户数据报封装成分组或包进行传送。因为网络层使用IP协议,所以分组也叫IP数据报。
网络层的另一个任务就是选择合适的路由,是的传输层下来的分组通过网络中的路由器找到目的主机。
4、数据链路层:把IP数据报组装成帧,帧包含数据和必要的控制信息。在相邻的节点之间的链路传送帧。
5、物理层:传输比特,0,1
TCP/IP体系结构:
第二章物理层
2.6宽带接入技术
有线宽带接入和无限宽带接入。
(1)非对称数字用户线ADSL技术:改造现有的模拟用户线,使其能承载宽带数字业务。
(2)光纤同轴混合网:电视、电话、宽带
(3)FTTx技术:光纤入户
第三章数据链路层
数据链路层使用的信道分为两类:点对点信道和广播信道
(1)点对点信道和广播信道这两种信道使用的协议PPP协议和CSMA/CD协议
(2)数据链路层的三个基本问题:封装成帧、透明传输和差错传输
(3)以太网MAC层的硬件地址
(4)适配器、转发器、集线器、网桥、以太网交换机的作用及场合。
3.1使用点对点信道的数据链路层
数据链路=物理线路+通信协议来控制(网络适配器来实现协议,包含硬件和软件)
点对点信道的数据链路层的协议数据单元---帧。
数据链路层把网络层传下来的IP数组报添加首部和尾部封装成帧。
(1)封装成帧
在IP数据报加上首部和尾部,这样在接收端收到物理层上交的比特流之后可以根据首部和尾部的标记确定帧的开始和结束。
使用ASCII码中有128个不同的ASCII码,有95个是可以从键盘输入的,另外33个不可输入的字符可以作为控制字符放在IP数据报的首尾。只有收到完整的开始字符和结束字符才会手下,否则丢弃。
(2)透明传输
传输的数据中不能有作为控制的字符,否则出现帧定界错误。
当传输用文本文件组成的帧时不用考虑这个问题,因为文本文件的字符都是从键盘输入的,不会出现控制字符,这就叫做透明传输。
当数据部分是非ASCII码的文本文件时(二进制代码的程序和图像),会出现与控制字符冲突,如字符EOT的二进制数据是00000100,导致错误的接收和丢弃。这就不是透明传输。
用字节填充的方式解决透明传输的问题。
在数据中出现的控制字符前加入转义字符ESC,如果数据中国也有ESC,同样在ESC前面再加一个ESC,接收端在传给网络层之前删除一个ESC.
3、差错检测
0变成1,1变成0,出现误比特。误码率BER,
目前数据链路层广泛使用循环冗余检测CRC进行检错。
一般认为接收端数据链路层接收的帧均无差错。这是误比特的方面的差错,还有一种是传输差错,多接收了帧或顺序错了等,这样就不能为网络提供可靠传输。
为此在CRC检测的基础上还加入了帧编号、确认和重传机制。接收端收到了要向发送端发送确认,若发送端未收到确认则要重传。
实际上,对于通信质量良好的链路(有限),数据链路层不采用确认和重传的机制,因为本身差错就很少,这时的差错转到上层传输层TCP层协议纠正差错。对于通信质量差的链路(无线),还是用那种确认重传的机制。
3.2点对点协议PPP
以前通过高级数据链路控制HDLC实现数据链路层的可靠传输。现在用简单的多的点对点协议PPP,它是现在使用最广泛的数据链路层协议。
用户一般通过某个ISP接入互联网,PPP协议就是计算机和ISP通信时使用的数据链路层协议。
3.3使用广播信道的数据链路层
局域网使用的就是广播信道。
局域网根据网络拓扑分类:星形网、环形网、总线网。传统的以太网就是总线网。现在的以太网占据局域网市场的绝对优势,几乎成了局域网的代名词。
传输媒体:双绞线、光纤
局域网(以太网)在信道分配上是随机接入。
以太网的两个标准:DIX Ethernet V2和IEEE 802.3
适配器的作用
适配器(网卡):使得计算机与外部局域网连接。适配器与局域网是通过串行方式传输,与处理器是通过IO总线并行传输,数据率不同,所以适配器需要能够缓存数据。
适配器要有驱动程序告诉它怎么缓存数据块。
适配器实现了数据链路层和物理层两个层次的功能,组装帧发送到局域网或从局域网接收帧。
CSMA/CD协议
以太网早期是总线网,使用广播的方式,每台总线上的计算机的适配器都有唯一的地址,发送数据帧时在首部指定接收的地址,适配器对自己的地址的数据帧接收,其他的丢弃,实现一对一通信。
为通信简便,以太网采取了一下两种措施:
1、无连接的工作方式,适配器对发送的帧不编号也不要求对方确认,以太网尽最大努力交付,即不可靠交付。差错帧是否重传有高层协议控制。总线上同一时间只允许一台计算机发送资源,如何协调总线上计算机的工作?以太网采用随机接入的方式减少冲突。使用的协议就是CSMA/CD,载波监听多点接入/碰撞检测。
2、以太网发送的数据都是用曼彻斯特编码的信号。
在使用CSMA/CD协议时,一个站不可能同时进行发送和接收,不可能进行全双工通信而只能进行双向交替通信(半双工通信)。
集线器
在以太网的星型拓扑中的中心加入集线器。与双绞线配合使用。
集线器的特点:
(1)使用集线器的以太网在逻辑上仍是一个总线网,适配器执行的是CSMA/CD协议。
(2)有很多接口,很像一个多接口的转发器。
(3)集线器工作在物理层,仅仅是简单的转发比特
(4)堆叠式的集线器提高可靠性。
以太网的MAC层
MAC层中的硬件地址叫MAC地址。
名字指出我们所要寻找的资源,地址指出那个资源在何处,路由告诉我们如何到达该处。
具体是指局域网上的每一台计算机中固化在适配器ROM中的地址。48位(6字节)
MAC帧的格式:
扩展以太网
在物理层用转发器扩展以太网的地理范围。现在可以用光纤和一对光纤调制协调器扩展主机和集线器的距离。
在数据链路层扩展以太网是更常用的方法。最初是使用网桥,对收到的帧根据其MAC帧进行转发和过滤。查找网桥中的地址表进行转发。
现在都是使用以太网交换机,它实质上是多接口的网桥。
以太交换机的自学习能力:
使用以太交换机组网时,会增加冗余链路,由于自学习的机制会产生环路,白白消耗网络资源。
使用生成树协议STP解决兜圈子的问题,在逻辑上切断某些链路,避免环路出现。
第四章网络层
重要内容:
(1)虚拟互联网络
(2)IP地址与物理地址的关系
(3)传统的分类的ip地址和无分类域间路由选择CIDR
(4)路由选择协议的工作原理
网际协议IP
虚拟互联网络,IP网络
源主机先查找自己的路由表,看目的主机是否就在此网络上,如在则不需要经过任何路由器直接交付。如不在,则必须把IP数据报转发给某个路由器,路由器在查找了自己的路由表之后再转发出去,直到最后的路由器与目的主机在一个网络上。
在虚拟互联网络上是如何寻址的:
1、分类的IP地址
将IP地址划分为若干个固定类。每一类地址由两个字段组成。网络号+主机号
网络号是全网唯一的,主机号在前面标志的网络里面也是唯一的。所以一个IP地址在整个互联网内是唯一的。
现在已经广泛用无分类的IP地址进行路由选择,ABC类都不用了。
路由器根据目的主机所连接的网络号来转发分组,可以节约路由器存储,加快查找时间。
一个路由器至少连接两个网络,所以至少有两个不同的IP地址。使用网桥或转发器连接的若干局域网仍然是一个网络。具有不同网络号的局域网必须用路由器互联。
IP地址与硬件地址的区别:
物理地址是数据链路层和物理层使用的地址,IP地址是网络层及以上使用的地址。
使用ip地址的ip数据报一但交给数据链路层会封装成使用物理地址的MAC帧,连接在链路上的主机收到Mac帧的时候,根据首部中的硬件地址决定留下还是丢弃。剥去Mac帧的首部尾部交给网络层才能在ip数据报的首部中找到源ip和目的ip
在ip层抽象的互联网上只能看到Ip数据报。路由器只根据目的站的ip地址的网络号进行路由选择。在局域网的链路层只能看见MAC帧
问题:主机或者路由器怎么知道应该在MAC帧首部加入什么样的硬件地址?
路由器的路由表是怎么来的?
通过地址解析协议ARP,根据ip地址找到对应的硬件地址。
在网络层使用ip地址,但在实际的链路上还是根据硬件地址。ip地址与硬件地址不是简单的映射关系,并且新加入或撤走主机,更换适配器(硬件地址改变),要维护这样的关系。ARP协议就是在主机的ARP缓存中存放一个映射表并动态更新。
在局域网中这样一个映射表是怎么建立的呢,如果主机(路由器)的ARP的缓存里还没有信息。
通过在局域网广播APR请求分组,发送自己的ip和硬件地址,收到请求响应之后将相应的映射写入ARP高速缓存。这是解决同一局域网的主机ip和硬件地址。
如果不是在同一局域网下,首先通过本局域网的路由器进行转发,通过转发表和ARP找到下一个路由器的硬件地址。
那为什么已经用的硬件地址,还要用ip地址?因为在各式各样的网络中存在不同的硬件地址,不能把这些转换的工作交个主机或用户来解决,ip地址的方式对用户屏蔽了底层的调用ARP的过程,提供方便。
ip层转发分组的流程:
如果路由器的路由表存主机名,那表格将过于庞大。所以只根据网络号来转发。在同一网络上使用ARP协议找到硬件地址。每一条路由最重要的两条信息是目的网络地址和下一跳地址。
前面都在说怎么根据路由表转发,但是路由表是怎么建立起来以及更新的呢?
在进一步了解路由选择之前先了解划分子网和构造超网。
划分子网:
在一个网络内,借用若干位的主机号作为子网号来划分子网。
子网掩码:通过子网掩码来看出是否使用了子网划分,前面的网络号加上借用的子网号为1,主机号全为0.
比如一个二级的ip地址(网络号16位)到了目标网络的路由器,子网掩码上的1多余16位,说明划分了子网,这时路由器将使用三级ip地址的子网掩码(24位1),与该地址做与运算,得到目的子网的网络地址。
划分子网增加了灵活性,但减少了能够连接在网络上的主机总数。
划分了子网之后,分组转发的算法也要改,路由表必须包含目的网络地址、子网掩码和下一跳地址。
路由器分组转发的算法如下:
(1)首先获得数据报的目的iP地址,先判断是否为直接交付,即对本路由器直接连接的各个网络逐一检查,将各网络的子网掩码与ip相与,看得到的结果是否与目的网络一致。若一致,则直接交付(当然也要封装成帧转发)。
(2)若都不一致,则看路由表上是否有目的地址的特定主机路由,有则直接给对应的下一跳路由器。
(3)查找路由表中的其他项目,也是将ip与子网掩码做与运算,然后检查是否与对应网络一致。
(4)若没找到,再看有无设置默认路由,可以走默认路由。
(5)都没找到则报转发分组出错。
无分类编址:
划分子网缓解了ip分配的困难,但
为什么用无分类编址?B类地址快用完了。
在一个子网划分子网的网络中使用变长子网掩码(VLSM)进一步提高ip地址利用率。在VLSM的基础上提出无分类编址方法,又叫无分类域间路由选择。(CIDR)
CIDR的特点:
(1)没有ip分类和划分子网的概念,将32位分为两部分,回到原来的两级编址,但是两部分现在分别是网络前缀和主机号。使用斜线记法。在ip地址后加上斜线/,再加上网络前缀的位数。
(2)CIDR地址把网络前缀都相同的连续地址组成一个CIDR地址块,如192.199.170.82/27,表示前27位表示网络前缀,后5位做主机号,这个地址块最多可以有32个地址,并且可以推出起始地址和结束地址,方法是将网络前缀的27位固定,后5位全取0或1得到两个地址。CIDR地址后面表示网络前缀位数的数字也可以用32位的0、1串表示,用1的个数表示网络前缀的个数。
(3)因为一个CIDR地址块中有很多地址,所以在路由选择的时候可以利用CIDR地址块来查找目的网络。这种地址的聚合称为路由聚合。可以使路由表中的一行表示以前的很多个路由。也叫构成超网。
网络前缀小于13或大于27 的都较少用。
CIDR的好处就是可以更加有效的分配IPV4地址,以前只能以/8、/16、/24来分配。现在可以很灵活的用特定的位数。网络前缀和主机号可以不是出现在整数字节处。
大学拿到一个CIDR地址块,包含1024 个地址,在大学内部可以自己增加网络前缀精确的给每个部门分配确切数量的ip地址块,路由也通过这个地址块来找。
使用了CIDR之后,路由器的路由选择应该有什么样的变化?
路由表以前是包含网络地址、子网掩码、下一跳地址。
现在只有两项:网络前缀和下一跳地址。
在查找路由表匹配的时候,可能会匹配到多个CIDR地址块,我们使用最长前缀匹配,让我们找到的下一跳地址更加精确。
例如,大学的CIDR地址块是206.0.68.0/22,大学四系的CIDR地址块是206.0.71.128/25.四系希望ISP把发给四系的数据直接发到四系,而不经过大学的路由器。这时需要在ISP的路由表加上四系的CIDR地址块206.0.71.128/25。如果有数据发送到四系下面的一个地址206.0.71.130.在ISP的路由表上,会匹配到大学的CIDR地址块和四系的CIDR地址块,因为我们使用最长前缀匹配,所以会根据四系的CIDR地址块直接转发到四系的路由器。匹配的过程就是将目的地址与两个地址块的掩码相与,因为四系的掩码匹配了25位,而大学的掩码匹配了22位,所以选择四系的路由器。
现在的问题是如何快速有效的寻找最长前缀匹配?
在路由表中必须使用很好的数据结构并使用先进的算法减少查找的时间。目前的方法是使用二叉线索查找路由表。
最简单的方法是岁所有可能的前缀长度循环查找。对每一个长度M都要进行匹配,如果路由表项目很多,查找的时间复杂度很高,如果没有这个路由,就是最坏情况要查找32次。
构造二叉线索数。首先要把路由表的每个项目在所有项目里的唯一前缀找出来,使用这个唯一前缀来构造二叉线索树。在查找时,只要与唯一前缀匹配,就能找到对应的CIDR地址块。
这个二叉树最长深度是32层,对应所有的位数。如果路由表要加入一个项目,就直接使用ip从前往后在树中插入一个节点,表示加入了一个唯一前缀。
为了再提高查找速度,再使用各种压缩技术,比如不比较前面相同的几位,直接从后面不同的开始比较。
网际控制报文协议ICMP
在网络层使用ICMP协议。
用PING测试两台主机的连通性:使用了ICMP回送请求和回送回答报文。PING是应用层直接使用网络层ICMP的一个例子,没有经过传输层。
以上学过了划分子网和构造超网,下面是介绍路由器中的路由表是怎么来的?
路由器中的路由表是通过路由选择协议建立的。
路由选择算法分为静态路由选择策略和动态路由选择策略,动态选择策略可以很好的使用网络状态变化,适合复杂的大网络。
互联网采用的路由选择协议是自适应的(动态)、分布式的。
把整个互联网划分为很多小的自治系统AS.每个AS对于其他的AS都表现出一个单一和一致的路由选择策略。
AS内部使用的路由选择协议称之为内部网关协议(比如说有RIP和OSPF)
AS之间进行数据传递时,因为不同AS内部会采用不同的内部网关协议,所以要有一个外部网关协议(目前都是用BGP-4)进行路由转换。AS之间的路由选择叫域间路由选择,AS内部的路由选择叫域内路由选择。
在AS的边界的路由器,不仅要运行内部的网关协议,还要运行外部网关协议。
内部网关协议:
(1)RIP协议的原理:简单,是分布式的基于距离向量的路由选择协议。直连的网络距离为0,经过一个路由器到非直连的网络,距离记为1。
距离不超过15,即最长找到15个路由器之外,再长相当于不可见。只适用于小型互联网。
每一个路由器都要和其他路由器交换信息。
和哪些路由器交换信息?交换哪些信息?在什么时候交换?
RIP的特点是:仅和相邻路由器交换、交换信息为自己路由表的全部信息、按照固定的时间间隔来交换。
在一般情况下,RIP协议可以收敛。路由表中的主要信息就是到某个网络的距离及下一跳地址。要是最短距离。更新最短距离的算法叫距离向量算法。
RIP报文使用传输层UDP进行传送。RIP协议的特点是:好消息传的快,坏消息传的慢。
(2)OSPF协议(开放最短路径优先),适用于大规模网络。使用了迪杰克斯拉的最短路径算法SPF。
使用分布式的链路状态协议。与RIP的不同点:
洪泛法向本自治系统内的所有路由器发送信息、发送的信息是与本路由器相邻的所有路由器的链路状态、只有链路状态发生变化才使用洪泛法交换信息。
每个路由器使用链路状态数据库中的数据通过迪杰克斯拉算法构造自己的路由表。链路状态数据库能较快的更新,OSPF的路由表的收敛过程更快。OSPF可以将一个AS再分成若干区域,这样可以减小洪泛的范围,减少通信量。一个区域内部的路由器只知道本区域的完整网络拓扑。
OSPF直接使用IP数据报传送。
OSPF还有其他的特点:
(a)对于不同类型的业务可以计算出不同的路由,根据业务的类别,对于时间的敏感程度,对链路设置不同的代价来计算路由。
(b)如果计算出多条代价相同的路由,可以做负载均衡。RIP只能选一条。
(c)OSPF路由器之间交换分组,可以根据链路状态更新的分组来交换链路信息。
(d)OSPF支持可变长的子网划分和无分类编址CIDR
OSPF有5种分组:
问候分组、数据库描述分组、链路状态请求分组、链路状态更新分组、链路状态确认分组。
问候分组是确认哪些邻站可达。其他四种用于链路状态数据库的同步。
首先相邻路由器发送数据库描述分组,交换链路状态的摘要信息(哪些路由器的链路状态信息已经写入了数据库),然后发送链路状态请求分组,请求自己缺少的项目信息,经过一系列分组交换,建立全网同步的数据链路状态表。
在运行过程中,只要一个路由器的链路状态发生变化,就要像全网洪泛链路状态更新分组。OSPF的洪泛是可靠洪泛,不会洪泛到之前的路由器。
外部网关协议BGP
外部网关协议为什么不选择像内部的网关协议一样?
因为互联网规模巨大,使得不同AS之间的路由选择十分困难,如果使用链路状态协议,每个路由器都要维护很大的链路状态数据库。而且不同的AS对于路由选择的协议不同,而且如果使用计算代价的方式,不同AS选用的代价的尺度不一样,在AS之间使用计算代价的方法计算AS之间的最短路由行不通。所以只在AS之间交换“可达性”信息。
AS之间的路由选择必须支持多种策略。比如最短路径、代价最小、安全性最好等等。有的AS只允许对自己付费的AS从自己的路由器经过。国内的不要经过国外的兜圈子。
所以BGP不是要找最佳路由,而是要找一条能够到达目的网络的比较好的路由。
BGP采用路径向量选择协议,与RIP和OSPF都不同。
(1)每个AS至少选择一个BGP发言人,即BGP边界路由器。
(2)不同AS的BGP发言人交换路由信息:首先建立TCP连接,交换BGP报文建立BGP会话(session),利用TCP会话交换路由信息,使用TCP连接提供可靠的服务。每个BGP发言人除了运行BGP协议之外还要运行内部网关协议。
BGP协议交换的路由信息即可达性信息就是要到达某个网络所要经过的一系列AS。BGP的路由信息的数量级是AS的个数的量级,这远比网络的数量少的多。
BGP支持无分类域间路由选择CIDR。BGP发言人的路由表包含网络前缀、下一跳地址以及到达目标网络需要经过的AS序列。使用路径向量信息避免兜圈子路由。
BGP刚运行时与邻站交换整个BGP路由表,之后只交换更新变化的部分。BGP有四种报文
OPEN(建立关系,初始化通信)、UPDATE(通知更新路由信息)、KEEPALIVE(验证连通性)、NOTIFICATION(发送检测到的差错)四种。
路由器的结构
路由器是多输入多输出端口的专用计算机,用来转发分组。
在输入端口和输出端口都使用了缓冲区,这个缓冲区就是一个队列。来不及转发的分组会暂时存在这个队列里,如果因为处理速率赶不上数据进入队列的速率,缓冲空间就会耗尽,之后的分组就会被丢弃。
IPv6
更大的地址空间:从IPv4的32位增大到128 位,可以划分更多的层次。
IPv6数据报由两部分构成,基本首部和有效载荷(净载荷)净载荷里面还有零个或多个扩展首部,后面是数据部分,扩展首部不属于首部。
从IPv4向IPv6过渡,IPv6需要能够向后兼容。有两种过渡的策略:双协议栈和隧道技术
1、双协议栈,使一部分主机或路由器装有双协议栈,即能和IPv6的系统通信又能和IPv4的系统通信。那如何知道使用的是那种地址呢?使用域名系统DNS查询地址,看返回的是IPv4还是IPv6地址。在数据报的传输过程中,IPv4与IPv6的转换需要转换首部,而在恢复的时候,IPv6的一些首部信息无法恢复,会置为空缺,这种损失无法避免。
2、隧道技术
在IPv6数据报要进入IPv4网络时,将IPv6数据报封装成IPv4数据报,IPv6数据报变成了IPv4数据包的数据部分。
ICMPv6
IPv6也不保证可靠交付,因为路由器可能会丢弃数据报,所以依靠ICMPv6反馈差错信息,已合并了ARP地址解析协议
虚拟专用网VPN和网络地址转换NAT
专用地址只用做本地地址,用于机构的内部通信。互联网中的所有路由器对目的地址是专用地址的数据报一律不进行转发。
专用网用作内部的主机通信,但由于机构的部门范围很广,专用网的不同网点之间的通信必须经过公用的互联网,这需要加密。
实现虚拟专用网的方法: IP隧道技术
内部的主机分到了本地的地址,但是又想和互联网上的主机通信。可以采用网络地址转换的方式。NAT要有一个全球IP地址,用NAT地址转换表,转换本地地址和路由器的全球IP地址。