计算机网络的类别可以按照网络的作用范围划分,包括广域网WAN、城域网MAN、局域网LAN和个人区域网PAN;按照网络使用者划分,包括公用网和专用网;用来把用户接入到互联网的网络,包括接入网AN。
计算机网络的性能指标包括速率、带宽、吞吐量、时延、时延带宽积、往返时间RTT和利用率等。其中,时延又包括发送时延(传输时延)、传播时延、处理时延和排队时延。而在高速网络链路上,我们提高的仅仅是数据的发送速率而不是比特在链路上的传播速率,提高发送速率只是减小了发送时延。
计算机网络体系结构由开放系统互连基本参考模型OSI/RM(简称OSI)演变而来。现在得到广泛应用的不是OSI,而是TCP/IP。网络协议是为进行网络中的数据交换而建立的规则、标准或约定称为协议。协议的三个要素:(1)语法:数据与控制信息的结构或格式(2)语义:需要发出何种控制信息,完成何种动作及作出何种响应。网络协议的结构应该是层次式的。计算机网络的各层及其协议的集合就是网络的体系结构。其中,应用层交互的数据单元称为报文;传输层为两台主机进程之间的通信提供通用的数据传输服务,主要使用两种协议,TCP和UDP协议;而TCP提供面向连接的、可靠的数据传输服务,数据传输的单位是报文段;UDP则提供无连接的、尽最大努力的树传输服务,数据传输单位是用户数据报。
TCP/IP体系结构包括以下五个层次:
1. 应用层:为不同主机提供通信服务,如HTTP、FTP等。
2. 传输层:将应用层的报文段或用户数据报封装成分组或包进行传送,并选择合适的路由,使传输层下来的分组通过网络中的路由器找到目的主机。
3. 网络层:为不同主机提供通信服务,网络层将传输层的报文段或用户数据报封装成分组或包进行传送。因为网络层使用IP协议,所以分组也叫IP数据报。网络层的另一个任务就是选择合适的路由,是的传输层下来的分组通过网络中的路由器找到目的主机。
4. 数据链路层:把IP数据报组装成帧,帧包含数据和必要的控制信息。在相邻的节点之间的链路传送帧。
5. 物理层:传输比特,0,1。
TCP/IP体系结构中,第二章主要介绍物理层,包括宽带接入技术,如有线宽带接入和无限宽带接入。其中非对称数字用户线ADSL技术、光纤同轴混合网(电视、电话、宽带)和FTTx技术(光纤入户)都是宽带接入技术的例子。
第三章主要介绍数据链路层,包括点对点信道和广播信道这两种信道使用的协议PPP协议和CSMA/CD协议。数据链路层的三个基本问题是封装成帧、透明传输和差错传输。此外,还介绍了以太网MAC层的硬件地址以及适配器、转发器、集线器、网桥、以太网交换机的作用及场合。
3.1使用点对点信道的数据链路层,数据链路=物理线路+通信协议来控制(网络适配器来实现协议,包含硬件和软件)。点对点信道的数据链路层的协议数据单元是帧。数据链路层把网络层传下来的IP数组报添加首部和尾部封装成帧。封装成帧的过程包括在IP数据报加上首部和尾部,这样在接收端收到物理层上交的比特流之后可以根据首部和尾部的标记确定帧的开始和结束。此外,还有透明传输和差错传输的问题需要解决。
以下是重构后的内容:
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载波监听多点接入/碰撞检测。
以太网是一种局域网技术,它使用曼彻斯特编码的信号进行数据传输。在使用CSMA/CD协议时,一个站不可能同时进行发送和接收,只能进行双向交替通信(半双工通信)。集线器在以太网的星型拓扑中的中心加入,与双绞线配合使用。集线器的特点有:使用集线器的以太网在逻辑上仍是一个总线网,适配器执行的是CSMA/CD协议;有很多接口,很像一个多接口的转发器;集线器工作在物理层,仅仅是简单的转发比特;堆叠式的集线器提高可靠性。
MAC层中的硬件地址叫MAC地址。名字指出我们所要寻找的资源,地址指出那个资源在何处,路由告诉我们如何到达该处。具体是指局域网上的每一台计算机中固化在适配器ROM中的地址。48位(6字节)。
扩展以太网在物理层用转发器扩展以太网的地理范围。现在可以用光纤和一对光纤调制协调器扩展主机和集线器的距离。在数据链路层扩展以太网是更常用的方法。最初是使用网桥,对收到的帧根据其MAC帧进行转发和过滤。查找网桥中的地址表进行转发。现在都是使用以太网交换机,它实质上是多接口的网桥。
第四章网络层重要内容包括:虚拟互联网络、IP地址与物理地址的关系、传统的分类的ip地址和无分类域间路由选择CIDR、路由选择协议的工作原理。
IP协议是互联网协议,它定义了数据在网络上的传输规则。源主机先查找自己的路由表,看目的主机是否就在此网络上,如在则不需要经过任何路由器直接交付。如不在,则必须把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.
无分类编址(CIDR)是一种网络技术,用于在互联网上创建独立的 IP 地址分配策略的方法。它允许更细粒度的 IP 地址分配,从而提供了比传统的 IP 地址类 A、B、C 更高效的使用。CIDR 的特点是没有 IP 分类和划分子网的概念,将 32 位分为两部分,回到原来的两级编址,但是两部分现在分别是网络前缀和主机号。使用斜线记法。在 IP 地址后加上斜线 /,再加上网络前缀的位数。
CIDR 地址把网络前缀都相同的连续地址组成一个 CIDR 地址块,如 192.199.170.82/27,表示前 27 位表示网络前缀,后 5 位做主机号,这个地址块最多可以有 32 个地址,并且可以推出起始地址和结束地址,方法是将网络前缀的 27 位固定,后 5 位全取 0 或 1 得到两个地址。CIDR 地址后面表示网络前缀位数的数字也可以用 32 位的 0、1 串表示,用 1 的个数表示网络前缀的个数。因为一个 CIDR 地址块中有很多地址,所以在路由选择的时候可以利用 CIDR 地址块来查找目的网络。这种地址的聚合称为路由聚合。可以使路由表中的一行表示以前的很多个路由。也叫构成超网。
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协议。
路由器中的路由表是通过路由选择协议建立的。路由选择算法分为静态路由选择策略和动态路由选择策略,动态选择策略可以很好地使用网络状态变化,适合复杂的大网络。互联网采用的路由选择协议是自适应的(动态)、分布式的。把整个互联网划分为很多小的自治系统AS.每个AS对于其他的AS都表现出一个单一和一致的路由选择策略。AS内部使用的路由选择协议称之为内部网关协议(比如说有RIP和OSPF)AS之间进行数据传递时,因为不同AS内部会采用不同的内部网关协议,所以要有一个外部网关协议(目前都是用BGP-4)进行路由转换。AS之间的路由选择叫域间路由选择,AS内部的路由选择叫域内路由选择。在AS的边界的路由器,不仅要运行内部的网关协议,还要运行外部网关协议。
内部网关协议:
(1)RIP协议原理:简单,是分布式的基于距离向量的路由选择协议。直连的网络距离为0,经过一个路由器到非直连的网络,距离记为1。距离不超过15,即最长找到15个路由器之外,再长相当于不可见。只适用于小型互联网。每一个路由器都要和其他路由器交换信息。和哪些路由器交换信息?交换哪些信息?在什么时候交换?RIP特点:仅和相邻路由器交换、交换信息为自己路由表全部信息、按照固定时间间隔来交换。
(2)OSPF协议原理:开放最短路径优先,适用于大规模网络。使用了迪杰克斯拉的最短路径算法SPF。使用分布式链路状态协议。与RIP不同点:洪泛法向本自治系统内所有路由器发送信息;发送信息为本自治系统相邻的所有路由器链路状态;只有链路状态发生变化才使用洪泛法交换信息 。
每个路由器使用链路状态数据库中的数据通过迪杰克斯拉算法构造自己的路由表。链路状态数据库能较快地更新,OSPF的路由表的收敛过程更快。OSPF可以将一个AS再分成若干区域,这样可以减小洪泛的范围,减少通信量。一个区域内部的路由器只知道本区域的完整网络拓扑。
OSPF直接使用IP数据报传送。
OSPF还有其他的特点:
(a)对于不同类型的业务可以计算出不同的路由,根据业务的类别、对于时间的敏感程度、对链路设置不同的代价来计算路由。如果计算出多条代价相同的路由,可以做负载均衡。RIP只能选一条。
(b)OSPF路由器之间交换分组,可以根据链路状态更新的分组来交换链路信息。
(c)OSPF支持可变长的子网划分和无分类编址CIDR。
OSPF有5种分组:
问候分组、数据库描述分组、链路状态请求分组、链路状态更新分组、链路状态确认分组。
问候分组是确认哪些邻站可达。其他四种用于链路状态数据库的同步。首先相邻路由器发送数据库描述分组,交换链路状态的摘要信息(哪些路由器的链路状态信息已经写入了数据库),然后发送链路状态请求分组,请求自己缺少的项目信息,经过一系列分组交换,建立全网同步的数据链路状态表。在运行过程中,只要一个路由器的链路状态发生变化,就要像全网洪泛链路状态更新分组。OSPF的洪泛是可靠洪泛,不会洪泛到之前的路由器。
外部网关协议BGP为什么不选择像内部的网关协议一样?
因为互联网规模巨大,使得不同AS之间的路由选择十分困难。如果使用链路状态协议,每个路由器都要维护很大的链路状态数据库。而且不同的AS对于路由选择的协议不同,而且如果使用计算代价的方式,不同AS选用的代价的尺度不一样,在AS之间使用计算代价的方法计算AS之间的最短路由行不通。所以只在AS之间交换“可达性”信息。AS之间的路由选择必须支持多种策略。比如最短路径、代价最小、安全性最好等等...
GP(Border Gateway Protocol)是一种自治系统间的路由协议,用于在自治系统之间交换网络可达性信息。它通过TCP连接来实现可靠地交换路由信息。每个BGP发言人除了运行BGP协议之外还要运行内部网关协议。
BGP协议交换的路由信息即可达性信息就是要到达某个网络所要经过的一系列AS。BGP的路由信息的数量级是AS的个数的量级,这远比网络的数量少得多。
BGP支持无分类域间路由选择CIDR(Classless Inter-Domain Routing)。BGP发言人的路由表包含网络前缀、下一跳地址以及到达目标网络需要经过的AS序列。使用路径向量信息避免兜圈子路由。
当BGP刚运行时,与邻站交换整个BGP路由表,之后只交换更新变化的部分。BGP有四种报文:OPEN(建立关系,初始化通信)、UPDATE(通知更新路由信息)、KEEPALIVE(验证连通性)和NOTIFICATION(发送检测到的差错)四种。
路由器是一种多输入多输出端口的专用计算机,用来转发分组。在输入端口和输出端口都使用了缓冲区,这个缓冲区就是一个队列。来不及转发的分组会暂时存在这个队列里,如果因为处理速率赶不上数据进入队列的速率,缓冲空间就会耗尽,之后的分组就会被丢弃。
从IPv4向IPv6过渡时需要能够向后兼容。有两种过渡策略:双协议栈和隧道技术。双协议栈使一部分主机或路由器装有双协议栈,即能和IPv6的系统通信又能和IPv4的系统通信。在使用域名系统DNS查询地址时,看返回的是IPv4还是IPv6地址。在数据报传输过程中,IPv4与IPv6之间需要转换首部;而在恢复时,IPv6中的一些首部信息无法恢复,会置为空缺,这种损失无法避免。隧道技术将IPv6数据报封装成IPv4数据报后进入IPv4网络中进行传输。
专用地址是指在局域网内部使用的一种IP地址,用于机构的内部通信。互联网中的所有路由器对目的地址是专用地址的数据报一律不进行转发。而NAT(Network Address Translation)是一种将私有IP地址转换为公共IP地址的技术,以实现主机在Internet上的通信 。
专用网用作内部的主机通信,但由于机构的部门范围很广,专用网的不同网点之间的通信必须经过公用的互联网,这需要加密。实现虚拟专用网的方法:IP隧道技术。