𝓝𝓮𝓶𝓸&博客

【计算机网络】网络层

功能

异构网络互连

  • 当中继系统是转发器,网桥或者交换机时,一般并不称之为网络互连,因为这仅仅是把一个网络扩大了,而这仍然是一个网络。
  • 网络互连通常是指用路由器进行网络互联和路由选择。
  • 网络的异构性是指传输介质、数据编码方式、链路控制协议,即 不同的数据单元格式和转发机制,即 物理层和数据链路层均不同
  • 异构网络互联时,两个是不同的网络,所以要求本层(网络层)及本层以下可以不同,但是本层以上必须相同。(不同网络,网络层及以下当然可以不同(因为本来就是异构网络),但是以上必须相同,不然啥都不同怎么互联)

(异构网络互联时利用路由器,路由器是第三层设备,向传输层及以上层次隐藏下层的具体实现,所以网络层及网络层以下协议可以不同,但是网络层之上的协议数据是路由器所不能处理的,因此网络层以上的高层协议必须相同。

  • 注意:两个网段在A层互联(可以相互传送信号)时,处于同一网络,所以要求本层(如数据链路层)及本层以下协议必须相同,本层以上协议可以不同。(同一网络,数据链路层及以下协议当然必须相同,不然就异构了)

注意区别:各种网络在物理层互联时要求数据传输率和链路层协议相同
数据链路(即 逻辑链路)与链路(即 物理链路)

  • IP数据报的传送:(源地址与目的地址都是公共地址时)网络地址不变,链路层地址变化(层次化)(即 IP源、目的地址不变,只是交通工具MAC源、目的地址改变了

注意:当有私有地址时,转发需要借助NAT来转换为公共地址,所以网络地址也会改变。(私有地址→NAT→公共地址)
网络地址IP地址,源、目的均不变
数据链路层地址交通工具):MAC地址,源、目的均改变

路由与转发

  • 拥塞控制:

在通信子网中,因出现过量的分组而引起的网络性能下降的现象称为拥塞。
- 拥塞观察方法:观察网络的吞吐量与网络负载的关系。
- 如果网络负载↑,网络的吞吐量明显小于正常的吞吐量,那么网络就可能已进入“轻度拥塞”;
- 如果网络负载↑,吞吐量↓,那么网络就可能已进入拥塞状态;
- 如果网络负载继续↑,而吞吐量↓到0,那么就可能已进入死锁状态。
- 作用:
确保子网能够承载所达到的流量,这是一个全局性的过程,涉及各个方面的行为:主机、路由器及路由器内部的转发处理过程等。单一地增加资源并不能解决拥塞。
- 分类:
- 开环控制(即 未闭,事先控制):在设计网络时事先考虑周到
- 闭环控制(即 运作时控制):事先不考虑,采用监测网络系统取监视,然后解决。

  • 拥塞控制与流量控制的区别:
    • 流量控制往往是指在发送端和接收端之间的点对点通信量的控制。流量控制所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收。
    • 拥塞控制必须确保通信子网能够传送待传送的数据,是一个全局性的问题,涉及网络中的主机、路由器及导致网络传输能力下降的所有因素。

路由算法

  • 静态路由算法:

    • 基本概念:
      又称非自适应路由算法。指由网络管理员手工配置的路由信息。
    • 优点:
      简便、可靠
    • 适用性:
      • 大型和复杂的网络环境通常不宜采用静态路由。
      • 负荷稳定、拓扑变化不大的网络中运行效果很好
      • 故仍广泛用于高度安全的军事系统较小的商业网络
  • 动态路由算法:

    • 基本概念:
      又称自适应路由算法。值路由器上的路由表项是通过相互连接的路由器之间彼此交换信息,然后按照一定的算法优化出来的,而这些路由信息会在一定时间间隙里不断更新,以适应不断变化的网络,以随时获得最优的寻路效果。
    • 优点:
      能改善网络的性能并有助于流量控制
    • 缺点:
      算法复杂,会增加网络的负担,有时因对动态变化的反应太快而引起振荡,或反应太慢而影响网络路由的一致性。

距离-向量路由算法

每个结点仅与它的直接邻居交谈,它为它的邻居提供从自己到网络中所有其它节点的最低费用估计

距离-向量路由算法中,所有结点都定期地将它们的整个路由选择表传达给所有与之直接相邻的结点。
迭代计算一条路由中的站段数(RIP算法)或延迟时间,从而得到到达一个目标的最短(最小代价)道路。

  • 路由选择表:
    • 每条路径的目的地(另一结点)
    • 路径的代价(也称距离)

    注意:这里的距离是一个抽象的概念,如RIP就将距离定义为“跳数”跳数是指从源端口到目的端口所经过的路由个数,每经过一个路由器,跳数+1。(直接连接距离为1,-1之后直接被丢弃了,不转发出去,因为目的地址就在本网络直接连接)

  • 更新路由表:
    • 被通告一条新的路由,该路由在本节点的路由表中不存在,此时本地系统加入这条新的路由。
    • 发来的路由信息中有一条到达某个目的地的路由,该路由与当前使用的路由相比,有较短的距离(较小的代价)。此种情况下,就用经过发送路由信息的结点的新路由替换路由表中到达那个目的地的现有路由。(即 下一跳地址不同)
  • 缺点:
    • 更新报文的大小与通信子网的结点个数成正比,所以路由选择信息的数量很容易变得非常大。
    • 有可能遇到路由环路等问题。

    “好消息快,坏消息慢”(慢收敛是导致发生路由回路的根本原因)路由器之间不断传递无效的路由信息。这种条件下,路由器对无法到达的网络路由不予理睬,(一直以为可以到达)导致用户的发往该不可达网络的数据包不停在网络上循环发送(没有出路),最终造成网络资源的严重浪费。
    路由环路:就是数据包不断在这个网络传输,始终到达不了目的地,导致掉线或者网络瘫痪。
    路由收敛:是指当路由环境发生变化后,各路由器调整自己的路由表以适应网络拓扑结构的变化,最终达到稳定状态(路由表与网络拓扑状态保持一致)。

最常见的距离-向量路由算法是RIP算法,它采用“跳数”作为距离的通量。

  • 例子:

子网使用距离向量算法,下面的向量刚刚到达路由器C:来自B的向量为(5,0,8,12,6,2);来自D的向量为(16,12,6,0,9,10);来自E的向量为(7,6,3,9,0,4)。经过测量,C到B、D和E的延迟分别为6、3和5,那么C到达所有结点的最短路径是?
- C到B的距离是6,那么从C开始通过B到达各节点的最短距离向量是(11,6,14,18,12,8)(即 B的向量+6
- 同理,通过D到达各节点的最短距离向量是(19,15,9,3,12,13)
- 通过E到达各节点的最短距离向量是(12,11,8,14,5,9)
- 比较三个向量,分别取最短的距离组成一个新的向量(11,6,0,3,5,8)。
注意:从C到C自己的距离为0。

链路状态路由算法

每个结点通过广播的方式与所有其他结点交谈,但它仅告诉它们与它直接相连的链路的费用。(这点就像数据结构中的path[],一个找一个往上找,就能构成一个完整的路径)

链路状态路由算法要求每个参与该算法的结点都具有完全的网络拓扑信息。它们主动测试所有邻接结点的状态,定期地将链路状态传播给所有其他结点(或称路由节点)。

  • 更新路由表:
    每当链路状态报文到达时,路由节点便使用这些状态信息取更新自己的网络拓扑和状态“视野图”,一旦链路状态发生变化,结点就对更新的网络图利用Dijsktra最短路径算法重新计算路由,从单一的源出发计算到达所有目的结点的最短路径。

  • 特征:

    • 向本自治系统中所有路由器发送信息,这里使用的方法是泛洪法(其实就是组播),即 每个路由器通过所有端口向所有相邻的路由器发送信息,而每个相邻路由器又将此信息发往其所有相邻路由器(但不再发送给刚刚发来信息的那个路由器)
    • 发送的信息是与路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息

    “链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)

    • 只有当链路状态发送变化时,路由器才向所有路由器发送此消息
  • 优点:

    • 每个路由节点都使用同样的原始状态数据独立地计算路径,而不依赖中间节点的计算。
    • 链路状态报文不加改变地传播,故易于查找故障。
    • 比距离-向量算法由更好的规模可伸展性。

典型的链路状态算法是OSPF算法

  • 例子:

这里的例子与Dijsktra算法一致,所以省略。

路径向量路由算法

边界网关协议BGP使用的算法

层次路由

因特网将整个互联网划分为许多较小的自治系统(注意一个自治系统中包含很多局域网),路由选择按照层次的方式进行。

  • 路由器选择协议:
    • 内部网关协议(IGP):也称域内路由选择,一个自治系统内部所使用的路由选择协议。具体有RIP和OSPF等。
    • 外部网关协议(EGP):也称域间路由选择,自治系统之间所使用的的路由选择协议。具体有BGP

注意:采用层次路由时,OSPF将一个自治系统再划分为若干区域,每个路由器都知道在本区域内如何把分主路由到目的地的细节,但不用知道其他区域的内部结构。
采用分层次划分区域的方法虽然会使交换信息的种类增多(额外的区域信息),但也会使OSPF协议更加复杂(要处理不同的区域)。
但这样做却能使每个区域内部交换路由信息的通信量大大减小,因而使OSPF协议能够用于规模很大的自治系统中

IPv4

很多同学可能会想有了IP地址,为什么还需要MAC地址?
其实事实上IP地址理论上确实可以完全取代MAC地址。
但是由于MAC地址先一步出现,而IP地址是后一步出现的,所以有历史遗留的问题,所以我们在规划取代方案的时候,我们需要考虑成本因素。
相当于我们已经建好了一个高达100层的大楼,却仅仅因为地基的外表不符合我们的心意,就将大楼整个爆破拆除,重新修建,这是很不划算的一件事情。所以我们能做的仅仅只是在这个地基的基础上进行兼容,继续向上修建。

https://blog.csdn.net/baidu_38890653/article/details/128790362

IPv4分组

一个IP分组由首部数据两部分组成。首部前一部分的长度固定,共20B,是所有IP分组必须具有的。在首部固定部分的后面是一些可选字段,其长度可变(最长为40B),用来提供错误检测及安全等机制。

  • 版本:4位。指IP的版本,目前版本号一般为4。
  • 首部长度:4位,单位为4B。整个首部以4B为一组进行统计,所以首部长度最大值为60B(15(即四个1)*4B),最小值为20B,所以可选字段为0~40B。
  • 区分服务:8位。为解决服务质量问题在网络上将用户发送的数据流按照它对服务质量的要求划分等级的一种协议。永远为00。
  • 总长度:16位,单位为1B。指首部和数据之和的长度,单位为字节。因此数据报的最大长度为\(2^{16}-1=65535B\)以太网帧的最大传输单元(MTU)为1500B,因此当一个IP数据报封装成帧时,数据报的总长度一定不能超过下面数据链路层的MTU值。
  • 标识(identification):16位。(相当于快递的一个订单号)它是一个计数器,每产生一个数据报就+1,并复制给标识字段。但它并不是“序号”(因为IP是无连接服务)。但一个数据报的长度超过网络的MTU时,必须分片,此时每个数据报片都复制一次标识号(即 一个数据报对应一个标识号,即使分片了,也是同一个原始数据报),以便能正确重装成原来的数据报。
  • 标志(flag):3位。-- DF MF

    目前只有后两位有意义。

    • 最低位为MF(More Fragment)(更多分片):MF=1表示后面“还有分片”;MF=0表示后面“没有分片”了,这是最后一个分片。
    • 中间的一位是DF(Don't Fragment)(不要分片):DF=1表示“不允许分片”(若长度超过MTU又不允许分片,那就丢弃,并向源主机报错);DF=0表示“允许分片”。

注意区别标识和标志,在中文上“标识”同“标志”,主要区分其英文。

  • 片偏移:13位,单位为8B。指较长的分组在分片后,某片在原分组中的相对位置。片偏移以8个字节为偏移单位(即 8B为一组统计),故每个分片的长度一定是8B的整数倍(除最后一个片外)

  • 生存时间(TTL, Time To Live):8位。数据报在网络中可通过的路由器数的最大值(即 “跳数”),标识分组在网络中的寿命,以确保分组不会永远在网络中循环。每经过一个路由器,路由器在转发分组前,先把TTL-1,若TTL减为0,则丢弃。(即 主机→路由器→主机 这个过程中,路由器的个数的最大值(每要转发一次就减一,到0丢弃)

  • 协议:8位。指出此分组携带的数据使用何种协议,即分组的数据部分应交给哪个传输层协议。如TCP:6, UDP:17, ICMP, OSPF等。

  • 首部校验和:16位。****只检验分组的首部,而不检验数据部分。每经过一个路由器都要改变(因为TTL在改变)

  • 源地址:32位。标识发送方的IP地址

  • 目的地址:32位。标识接收方的IP地址

  • 可选字段:0~40B。60B-20B=40B

注意:首部长度单位4B,总长度单位1B,片偏移单位8B。
分片和组装相关的字段是:标识、标志、片偏移。
记得分片的时候应先去掉首部(20B),提取出数据,再将数据分片,加上首部(20B)(总共最大传输单元MTU=1500B)。
分片与重组都是关于数据部分的,与首部无关)(每个分片的长度(数据)一定是8B的整数倍(除最后一个片外)(即 分片的数据部分长度⌊(MTU-20)/8⌋*8))

①4000B的IP数据报,去掉原本的20B首部,剩下3980B数据
②因为MTU为1500B,又需要加上首部20B,所以分片之后每片的数据为1480B;
③判断分片1480是否为8的整数倍
④将数据分片1480B。
例外,当MTU=576B的时候,分片的数据部分576-20=556B,但556B不能被8整除,所以分片时的数据部分最大只能取552

注意:IP数据报经过路由器R转发时,可能需修改IP分组头中的
源IP地址:私有地址和Internet上的主机通信时,须由NAT路由器进行网络地址转换,把IP数据报的源地址转换为NAT路由器的一个全球IP地址。
TTL:IP数据报每经过一个路由器,TTL值就-1。
首部校验和
总长度字段、标志字段、片偏移字段:若IP分组的长度超过输出链路的MTU,则这些字段也会变化。

注意:路由器收到TTL=1包时,会查本地路由表。(-1后,变成0,直接丢了,直接连接,不转发)
如果直连,意味着马上就达到目的主机了,那么就从相应网口发送出去;
如果路由表中,目的主机还要经过其它路由器(非直连),它会判断出,下一个路由器收到包,ttl减1后,包必然被丢弃。于是路由器就不发送了。丢弃包同时,向源主机,发送ICMP数据包(而非超时的数据包),通知超时。

转发流程

网络层的路由器执行的分组转发算法如下:

  1. 从数据报的首部提取目的主机的IP地址D,得出目的地址N。
  2. 若网络N与此路由器直接相连,则把数据报直接交付给目的主机D,这称为路由器的直接交付;否则是间接交付,执行3
  3. 若路由表中有目的地址为D的特定主机路由(对特定的主机指明一个特定的路由,通常是为了控制或测试网络,或出于安全考虑才采用的),则把数据报传送给路由表中所指明的下一跳路由器;否则,执行4
  4. 若路由表中有到达网络N的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行5
  5. 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行6
  6. 报告转发分组出错

注意:得到下一跳路由器的IP地址后并不是直接将该IP地址填入待发送的数据报,而是将该IP地址转换成MAC地址(通过ARP),将其放到MAC帧首部中,然后根据这个MAC地址找到下一跳路由器。

不同网络中传送时,MAC帧中的源MAC地址和目的MAC地址要发送变化,但是网桥在转发帧时,不改变帧的源地址,请注意区分。
网络地址不变,链路层地址变化(层次化)(即 源、目的地址不变,只是交通工具(途中经过的物理设备)改变了

IPv4地址

127.0.0.1和0.0.0.0地址的区别

0.0.0.0

IPV4中,0.0.0.0地址被用于表示一个无效的,未知的或者不可用的目标。

  • 在服务器中,0.0.0.0指的是本机上的所有IPV4地址,如果一个主机有两个IP地址,192.168.1.1 和 10.1.2.1,并且该主机上的一个服务监听的地址是0.0.0.0,那么通过两个ip地址都能够访问该服务。
  • 在路由中,0.0.0.0表示的是默认路由,即当路由表中没有找到完全匹配的路由的时候所对应的路由。

用途总结

  • 当一台主机还没有被分配一个IP地址的时候,用于表示主机本身。(DHCP分配IP地址的时候)
  • 用作默认路由,表示”任意IPV4主机”。

用来表示目标机器不可用。

  • 用作服务端,表示本机上的任意IPV4地址。

127.0.0.1

127.0.0.1属于{127,}集合中的一个,而所有网络号为127的地址都被称之为回环地址,所以回环地址!=127.0.0.1,它们是包含关系,即回环地址包含127.0.0.1。

回环地址:所有发往该类地址的数据包都应该被loop back。

用途

  • 回环测试,通过使用ping 127.0.0.1 测试某台机器上的网络设备,操作系统或者TCP/IP实现是否工作正常。
  • DDos攻击防御:网站收到DDos攻击之后,将域名A记录到127.0.0.1,即让攻击者自己攻击自己。
  • 大部分Web容器测试的时候绑定的本机地址。

localhost

相比127.0.0.1,localhost具有更多的意义。localhost是个域名,而不是一个ip地址。之所以我们经常把localhost与127.0.0.1认为是同一个是因为我们使用的大多数电脑上都讲localhost指向了127.0.0.1这个地址。

在ubuntu系统中,/ets/hosts文件中都会有如下内容:

127.0.0.1   localhost

127.0.1.1   jason-Lenovo-V3000

# The following lines are desirable for IPv6 capable hosts

::1     ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

上面第一行是几乎每台电脑上都会有的默认配置。

但是localhost的意义并不局限于127.0.0.1。

localhost是一个域名,用于指代this computer或者this host,可以用它来获取运行在本机上的网络服务。

在大多数系统中,localhost被指向了IPV4的127.0.0.1和IPV6的::1。

127.0.0.1    localhost

::1          localhost

所以,在使用的时候要注意确认IPV4还是IPV6

总结

127.0.0.1 是一个环回地址。并不表示“本机”。0.0.0.0才是真正表示“本网络中的本机”。

在实际应用中,一般我们在服务端绑定端口的时候可以选择绑定到0.0.0.0,这样我的服务访问方就可以通过我的多个ip地址访问我的服务。

比如我有一台服务器,一个外放地址A,一个内网地址B,如果我绑定的端口指定了0.0.0.0,那么通过内网地址或外网地址都可以访问我的应用。但是如果我之绑定了内网地址,那么通过外网地址就不能访问。 所以如果绑定0.0.0.0,也有一定安全隐患,对于只需要内网访问的服务,可以只绑定内网地址。

分类的IPv4地址

连接到因特网上的每台主机(或路由器)都分配一个32比特的全球唯一标识符,即IP地址。传统的IP地址是分类的地址,分为A、B、C、D、E五类。
IP地址分类的IP地址→(为了解决IP地址用完)划分子网(3级结构)→(为了解决路由器危机)构成超网(CIDR)→地址转换(NAT)(ISP接入需要)

这个划分方法是不是很眼熟,没错,就是可变长子网划分的划分方法。(每次都分一半走)
0
10
110
1110
11110

  • A类地址:适用于有大量主机的大型网络

  • B类地址:适用于一些国际性大公司政府机构中等大小的组织使用。

  • C类地址:适用于一些小公司普通的研究机构

  • D类地址:适用于其他特殊的用途,如组播地址Multicasting(即 源主机发一个数据出去,经过路由器进行复制转发给下面的主机)(即 一个小组相互转告)。

  • E类地址:适用于某些实验和将来使用

  • IP地址的使用范围:

    网络类别 最大可用网络数 第一个可用的网络号 最后一个可用的网络号 每个网络中的最大主机数
    A \(2^7-2\) 1(要) 126 \(2^{24}-2\)
    B \(2^{14}-1\) 128.1(要爱不?) 191.255 \(2^{16}-2\)
    C \(2^{21}-1\) 192.0.1(要久爱) 223.255.255 \(2^8-2\)

    注意:127用于环路自检。

  • IP地址::={<网络号>,<主机号>}采用点分十进制记法

  • 网络号:

    • A类地址:
      • 网络号字段全为0的IP地址是保留地址,意思是“本网络”
      • 网络号字段全为1(即 127)的IP地址是环回测试地址
      • 可用网络地址数\(2^7-2\)减2是因为上面两个地址不用。
    • B类地址:
      • 网络号字段全为0(即 128.0)是不可指派的。
      • 可用网络地址数\(2^{14}-1\)减1是因为上面一个地址不用。
    • C类地址:
      • 网络号字段全为0(即 192.0.0)的网络是不可指派的。
      • 可用网络地址数\(2^{21}-1\)减1是因为上面一个地址不用。
  • 主机号:

    • 全为0表示本网络本身
    • 全为1表示本网络的广播地址,又称直接广播地址
    • 127.0.0.1保留为环路自检(Loopback Test)地址,此地址表示任意主机本身,目的地址为环回地址的IP数据报永远不会出现在任何网络上。
    • 32位全为0,即 0.0.0.0表示本网络上的本主机

    注意:与上面的127.0.0.1只能本机访问不同,如果路由配置为此0.0.0.0,那么其他机器也能通过本机ip在局域网或者公网环境中访问本机,这样项目的路径ip就是当前服务主机的ip。
    即 配置127.0.0.1只能本机自我访问,而配置0.0.0.0可以给其他机器来通过当前服务主机ip来访问本机。

    • 32位全为1,即 255.255.255.255表示整个TCP/IP网络的广播地址,又称受限广播地址

    注意:实际使用时,由于路由器对广播域的隔离,255.255.255.255等效为本网络的广播地址。

    • 169.254.0.0到169.254.255.255是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器,这时你将会从169.254.0.1到169.254.255.254中临时获得一个IP地址。
  • 一般不使用的特殊的IP地址:

    网络号 主机号 源地址使用 目的地址使用 用途
    全0 全0 可以 不可 在本网络上的本主机(见DHCP协议),路由表中用于表示默认路由(表示整个Internet网络)(子网掩码也为0.0.0.0,相“与”就全为0了)
    全0 host-id(特定值) 可以 不可 在本网络上的某台特定主机host-id
    全1 全1 不可 可以 只在本网络上进行广播(各路由器均不转发,有限广播,本地广播
    net-id 全0 不可以 不可以 网络地址,表示一个网络
    net-id 全1 不可 可以 对net-id上的所有主机进行广播(直接广播
    127 非全0或全1的任何数 可以 可以 用作本地软件环回测试之用
  • 特点:

    • 每个IP地址都由网络号和主机号两部分组成,因此IP地址是一种分等级的地址结构。
    • IP地址是标志一台主机(或路由器)和一条链路的接口。当一台主机同时连接到两个网络时,该主机就必须同时拥有两个相应的IP地址,每个IP地址的网络号必须与所在网络的网络号相同,且这两个IP地址的网络号是不同的。故路由器至少有两个IP地址。(每个端口必须至少分配一个IP地址)

    注意:一台主机可以有多个IP地址,但是必须要属于多个逻辑网络(子网)。(不然A→B,B有两个IP地址,不知道发给哪一个)

    • 用转发器或网桥等连接起来的若干局域网仍为一个网络,因此这些局域网都具有同样的网络号net-id
  • IP地址与硬件地址:

    • 硬件地址(或物理地址)是数据链路层和物理层使用的地址。
    • IP地址是网络层和以上各层使用的地址,是一种逻辑地址(称IP地址是逻辑地址,是因为IP地址是用软件实现的)

子网划分

等长子网划分→可变长子网划分→CIDR

  • 子网划分:

子网划分:在IP地址中增加了一个“子网号字段”,使两级IP地址变成了三级IP地址。
- 子网划分纯属于一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
- 从主机号(host-id)借若干比特作为子网号(subnet-id)IP地址={<网络号>,<子网号>,<主机号>}
注意:子网掩码只是把IP地址的主机号这部分进行再划分,而不改变IP地址原来的网络号。

![](https://img2018.cnblogs.com/blog/1542615/201909/1542615-20190919103649890-1172812438.png)

- 凡是从其他网络发送给本单位某台主机的IP数据报,
	- 仍然是根据IP数据报的**目的网络号**,先找到连接到本网络上的路由器
	- 然后该路由器在收到IP数据报后,按目的网络号和子网号找到**目的子网**
	- 最后把IP数据报直接交付给**目的主机**
- **子网中主机号:**全为0或全为1的地址**都不能被指派**
> **注意:**在**分类的地址**分配网络时,**子网号**或**主机号个数**都**应该-2**才能得到**可分配的个数**。
而CIDR,只有主机号个数才需要-2,子网号不需要-2(全0、全1都可以用)。
	- **全为0:**子网的网络号
	- **全为1:**子网的广播地址
- 分类:
	- **固定长度子网:**(**子网号**全0、全1**不能使用**)所划分的**所有子网的子网掩码都是相同的**。
	- **变长子网**(**子网号**全0、全1**可以使用**)
  • 子网掩码:

从一个IP数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。使用子网掩码(subnet mask)可以找出IP地址中的子网部分
- 子网掩码长度=32位
- 某位=1:IP地址中对应位为网络号和子网号
- 某位=0:IP地址中对应位为主机号

$$(IP地址)AND(子网掩码)=网络地址(按位进行“与”运算)$$
![](https://img2018.cnblogs.com/blog/1542615/201909/1542615-20190919103646736-20284008.png)
> 1000 0000 = 128
1100 0000 = 192
1110 0000 = 224
1111 0000 = 240
1111 1000 = 248
1111 1100 = 252
1111 1110 = 254
1111 1111 = 255
  • 使用子网掩码时路由器的分组转发算法
    1. 从收到的分组首部提取目的IP地址,记为D
    2. 先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相与,看结果是否可相应的网络地址匹配。若匹配,则将分组直接交付;否则间接交付,执行步骤3
    3. 若路由表中有目的地址为D的特定主机路由,则将分组传送给路由表中所指明的下一跳路由器;否则执行4
    4. 对路由表中每一行(目的网络地址、子网掩码、下一跳地址)中的子网掩码和D逐位相与,其结果为N。若N与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行步骤5
    5. 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行步骤6
    6. 报告转发分组出错

变长子网掩码(VLSM)

变长子网掩码(Variable length subnet masks ,VLSM):是指在一个层次结构的网络中,可以使用多个不同的掩码,即 可以对一个经过子网划分的网络再次划分。变长子网掩码的引入,有效解决了地址分配的浪费问题。

  • VLSM:是将一个网划分为多个子网,充分利用网络资源。
  • CIDR:将路由表中的条目汇总,如 将多个C类地址汇总为一个B类地址。
  • 总结:
    • 等长子网划分:IP与掩码不成对出现使用的都是同一个子网掩码);(因为子网掩码等长,该网络内部怎么分它自己知道,全部等长分,所以不需要IP与掩码一起)
    • VLSM:是把一个IP分成几个连续的IP网段;(使用不同的子网掩码)(每个子网的掩码长度可能不同,所以要IP与掩码要成对出现
    • CIDR:是把几个IP地址合并成一个IP在外网显示。(使用不同的子网掩码)(每个子网的掩码长度可能不同,所以要IP与掩码要成对出现

无分类域间路由选择(CIDR)

使用变长子网掩码VLSM(Variable Length Subnet Mask)可进一步提高IP地址资源的利用率。

在变长子网掩码(VLSM)的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择CIDR(Classless Inter-Domain Routing)。
CIDR消除了传统的A类、B类和C类地址以及划分子网的概念,因而可以更加有效地分配IPv4的地址空间。

  • 作用:把小的网络汇聚成大的超网。(如8个C类地址)

超网(supernetting)是与子网类似的概念——IP地址根据子网掩码被分为独立的网络地址和主机地址超网(supernetting),也称无类别域间路由选择(CIDR),它是集合多个同类互联网地址的一种方法。

  • CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。IP地址从三级地址又回到了二级地址。

  • IP地址::={<网络前缀>,<主机号>}采用“斜线记法”

“斜线记法”(slash notation),又称为CIDR记法,即 在IP地址后面加上一个斜线“/”,然后写上网络前缀所占的位数(这个数值对应于三级编址子网掩码中1的个数)

  • CIDR把网络前缀都相同的连续IP地址组成“CIDR地址块”

例如,如果一个单位需要2000个地址,那么就给它分配一个2048地址的块(即 8个连续的C类地址),而不是一个完整的B类地址。这样可以大幅度提高IP地址空间的利用率,减小路由器的路由表大小,提高路由转发能力。
类比:相当于有一种小蛋糕和一种大蛋糕,一块小蛋糕吃不饱,一块大蛋糕太太太太太多了,所以就吃3个小蛋糕,刚刚好。

- **CIDR地址块**中的**地址数一定是2的整数次幂**,**实际可指派**的地址数通常为**$2^N-2$**,N表示主机号的位数。
  • 主机号:全0和全1的主机号地址一般不使用
    • 全0:网络前缀的网络号
    • 全1:网络前缀的广播地址

注意:无分类的地址分配网络时,子网号不需要-2,主机号个数****应该-2才能得到可分配的个数。(与子网划分的分类的地址不同

  • 路由聚合:可以利用路由聚合技术,使路由表中的路由项尽可能少。(路由器一个接口一个路由项)(一个接口对应一个下一跳)

一个CIDR地址块可以表示很多地址,这种地址的聚合常称为路由聚合(route aggregation),也称为构成超网(supernetting)。它使得路由器中的一个项目可以表示很多个(如 上千个)原来传统分类地址的路由。
例如,从路由器R1到网络206.1.0.0/16~206.1.128.0/16的路由的下一跳均为R2,
那么如果采用传统分类地址的路由记录路由表,这样就要从206.1.0.0/24记录到206.1.128.0/24,记录很多项;
如果采用CIDR地址块的路由聚合,只需记录共同的最长前缀206.1.0.0/16即可。将众多项聚合为了一项。
- 路由表须具有相同的下一跳地址
- 须选取相同网络前缀的最长部分

  • CIDR的优点:在于网络前缀长度的灵活性。
  • CIDR查找路由表的方法:
    为了更加有效地查找最长前缀匹配,通常将无分类编址的路由表存放在一种层次的数据结构中,然后从上而下地按层次进行查找。这里最常用的数据结构就是二叉线索

子网划分与CIDR

注意:****分配地址的时候,不光要分配给所有主机,还要分配给路由器端口一个地址,别忘了!

  • 当路由器端口d接入IP地址为(例子)61.60.21.80的互联网地址时,那么它的端口地址就是61.60.21.80,不用给它另外分配了。(即 路由器端口以该地址接入互联网)

  • 每次变长子网划分只占用一位末尾的0(即 此子网的一半),下面如果要继续划分,则把此位的0改为1(即 此子网的另一半),则可以继续划分了。
    划分n个变长子网需要n-1位
    变长划分,最后平分

    0
    10
    110
    1110
    111110
    1111110
    。。。
    直到最后两个可以平分(此处的八位是样例,其实不一定八位)
    11111110
    11111111

注意:一定要记得最后两个可以平分,否则会多分配一位,造成浪费。

  • 等长子网划分为什么不能使用全0全1子网号?(分类的地址(ABC类地址),子网号不能全0和全1(要-2),主机号不能全0和全1)
    看看RFC950提到的原因:(掩码和IP地址不成对地出现)(因为子网掩码等长,该网络内部怎么分它自己知道,全部等长分就完了,所以不需要IP与掩码一起)
    假设我们有一个网络:192.168.0.0/24,我们现在需要两个子网,那么按照RFC950,应该使用使用两位子网号,即/26,得到两个可以使用的子网192.168.0.64/26和192.168.0.128/26
    对于主网络192.168.0.0/24,网络地址是192.168.0.0,广播地址是192.168.0.255
    对于子网192.168.0.0/26(子网号全0),网络地址是192.168.0.0,广播地址是192.168.0.63
    对于子网192.168.0.64/26,网络地址是192.168.0.64,广播地址是192.168.0.127
    对于子网192.168.0.128/26,网络地址是192.168.0.128,广播地址是192.168.0.191
    对于子网192.168.0.192/26(子网号全1),网络地址是192.168.0.192,广播地址是192.168.0.255

    可以看出,对于第一个子网,其网络地址和主网络的网络地址是重叠的,对于最后一个子网,其广播地址和主网络的广播地址也是重叠的。这样的重叠将导致极大的混乱。比如,一个发往192.168.0.255的广播是发给主网络的还是子网的?这就是为什么在当时不建议使用全0和全1子网。

  • 可变长子网划分(VLSM)为什么能使用全0全1子网号?(其实可变长子网划分与CIDR已经差不多了)(每个子网的掩码长度可能不同,所以要IP与掩码要成对出现)
    等长子网划分时的各个子网网络规模一样大,每个子网中能够容纳的计算机太熟最大值一样。同时各个子网的子网掩码相同,这时候全0子网和全1子网不能用。
    可变长子网划分是在等长子网划分基础上进行的进一步划分,这时候各个子网的网络规模不相同,并且每个子网的子网掩码不完全相同了。在可变长子网划分中全0子网和全1子网就可以使用了(利用了一种更加聪明的路由器)

  • CIDR为什么能使用全0全1子网号?(无分类的地址(CIDR),子网号可以全0和全1(不用-2),但主机号不能全0和全1)
    在严格按照TCP/IP,A、B、C、D给IP地址分类的环境下,为了避免二义性全0和全1网段都不能使用。这种环境叫作Classful。在这种环境下,子网掩码只在所定义的路由器内有效,掩码信息到不了其它路由器。例如RIP-1在做路由广播时便不带掩码信息,收到路由广播的路由器因为无从知道这个网络的掩码,只能按照标准TCP/IP的定义赋予它一个掩码。
    但在Classless的环境下,掩码任何时候都和IP地址成对地出现,这样,前面谈到的二义性就不会存在,全0和全1的子网位可以使用。是Classful还是Classless取决于路由器运行的路由协议,一个路由器可同时运行Classful和Classless路由协议。RIP是Classful,OSPF、EIGRP、BGP4是Classless,它们可以同时运行在同一台路由器上。
    以上面的情况为例。在子网划分下,一个发往192.168.0.255的广播不能确认是发给主网络的还是子网;然而采用CIDR后,由于CIDR在路由时采取最长前缀匹配,目的地址192.168.0.255/26和地址块192.168.0.192/26的前缀匹配长度最长,所以广播发送到192.168.0.192/26地址块。
    若想主网络广播,则目的地址198.168.0.255/24即可。

网络地址转换(NAT)

网络地址转换(NAT, Network Address Translation)是指通过将专用(私有)网络地址(如Intranet内联网)转换为公用地址(如Internet互联网),从而对外隐藏内部管理的IP地址。它使得整个专用网只需要一个全球IP地址就可与因特网连通,由于专用网本地IP地址是可重用的,所以NAT大大节省了IP地址的消耗

  • 私有IP地址只用于LAN,不用于WAN连接,并且允许私有IP地址被LAN重复使用。

  • Internet中的路由器不转发目的地址为专用地址的包

  • 私有IP地址网段:(这是从分类IP地址中划出来的一部分作为私有IP)

    • A类:1个A类网段,即 10.0.0.0~10.255.255.255(CIDR记法:10/8
    • B类:16个B类网段,即 172.16.0.0~172.31.255.255(CIDR记法:172.16/12
    • C类:256个C类网段,即 192.168.0.0~192.168.255.255(CIDR记法:192.168/16

    这些地址只能用于机构的内部
    这种采用私有IP地址的互联网络称为专用互联网本地互联网。私有IP地址也称为可重用地址

  • 使用NET时需要在专用网连接到因特网的路由器上安装NAT软件,NAT路由器至少有一个有效的外部全球地址

  • NAT路由器地址转换:

    • 离开专用网时,替换源地址,将内部地址替换为全球地址;
    • 进入专用网时,替换目的地址,将全球地址替换为内部地址。

    注意:使用NAPT将物理地址与端口号转换,即 旧的IP地址+端口号→新的IP地址+端口号,这样就可以把专用网络中的主机地址对外转换时用不同端口号分开

    • NAT转换表中存放着{本地IP地址:端口}到{全球IP地址:端口}的映射。通过这样的映射方式,可让多个私有IP地址映射到同一个全球IP地址

    注意:****普通路由器在转发IP数据报时,不改变其源IP地址或目的IP地址。
    NAT路由器在转发IP数据报时,一定要更换其IP地址(转换源IP地址或目的IP地址)。
    普通路由器仅工作在网络层,而NAT路由器转发数据报时需要查看和转换传输层的端口号。

    • 本地IP:端口↔全球IP:端口

    注意:转换时,本地IP地址:端口必须全部匹配才能进行转换;一旦不匹配,则丢弃。(添加新的表项是管理员的工作)

地址解析协议(ARP)

地址解析协议(Address Resolution Protocol, ARP):无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址,所以需要一种方法来完成IP地址MAC地址的映射。


  • 其实,就相当于点外卖。
    买家=MAC地址
    住址=IP地址
    骑手知道了你的住址,到达了之后,还得给你打个电话,叫你拿。
    IP数据报知道你IP地址,到达之后,得给送到你机器MAC地址上。
  • IP地址在互联网内找到某个局域网,用MAC地址具体找到某个主机。

总的来说,****IP地址在网络中体现的是“我在哪里”(现居住地),而mac地址则在二层通信中体现“我是谁”(身份证)。身份证永远不变,而现居住地是可能改变的。

  • 工作原理:当主机A欲向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址

    • 如果,就可以查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址。
    • 如果没有,ARP进程在本局域网上广播发送一个ARP请求分组,主机B收到该ARP请求后,向主机A单播ARP响应分组。A收到ARP响应分组后,将得到IP地址到硬件地址的映射写入ARP高速缓存

    (“我是XXX(IP地址),硬件地址是XXX,我想知道主机XXX(IP地址)的硬件地址”)
    (“我是你要找的XXX,硬件地址是XXX”)

  • ARP分组:

    • ARP请求分组:包含发送方的硬件地址/发送方IP地址/目标方硬件地址(未知时填0)/目标方IP地址。(请求包含自己的地址信息,方便别人回应)
    • 本地广播ARP请求(路由器不转发ARP广播请求)
    • ARP响应分组:包含发送方硬件地址/发送方IP地址/目标方硬件地址/目标方IP地址
    • ARP分组封装在物理网络中的帧中传输
  • 总结:

    • ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。
    • 如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组发送给下一个网络,剩下的工作就由下一个网络来做。
    • 从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。
    • 只要主机或路由器要和本网络上的另一个已知的IP地址的主机或路由器进行通信,ARP协议就会自动地将该IP地址解析为链路层所需要的硬件地址。

动态主机配置协议(DHCP)

应用层协议,基于UDP
动态主机配置协议(Dynamic Host Configuration Protocol, DHCP)常用于给主机动态地分配IP地址,它提供了即插即用联网的机制,这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与。DHCP应用层协议,它是基于UDP的。

  • 加入网络所需:IP地址、掩码、网关地址、DNS

注意:这些是一台主机通过WIFI或4G能够上网的前提条件。
网关地址:接入Internet路由器地址

  • 工作原理:使用C/S(客户/服务器)方式

    1. 需要IP地址的主机在启动时就向DHCP服务器广播发送发现报文(DHCP DISCOVER),这时该主机就成为DHCP客户。
    2. 本地网络上所有主机都能收到此广播报文,但只有DHCP服务器才回答此广播报文。
    3. DHCP服务器先在其数据库中查找该计算机的配置信息。
      • 找到,则返回找到的信息。
      • 找不到,则从服务器的IP地址池(address pool)中取一个地址分配给该计算机。DHCP服务器的回答报文叫做提供报文(DHCP OFFER)。
  • C/S交换过程如下:

    1. DHCP客户机(对这个网络什么信息都不知道,只能广播广播“DHCP发现”消息,试图找到网络中的DHCP服务器,以使其从DHCP服务器获得一个IP地址。
    2. DHCP服务器收到“DHCP发现”消息后,向网络中广播“DHCP提供”消息,其中包括提供DHCP客户机的IP地址和相关配置信息。(由于新来的客户机还没有被分配IP地址,所以只能广播
    3. DHCP客户机收到“DHCP提供”信息,如果接收DHCP服务器所提供的相关参数,那么通过广播“DHCP请求”消息向DHCP服务器请求提供IP地址。(可能收到多台服务器的OFFER,所以得挑选其中一个进行请求,并使用广播使其他服务器知道已有选择
    4. DHCP服务器广播“DHCP确认”消息,将IP地址分配给DHCP客户机。(主机还未被分配IP,所以广播

    注意:本过程中,客户端和服务器端都需要通过广播方式来进行交互,因为在DHCP执行期间,客户端和服务器端都没有标识自己身份的IP地址,因此不可能通过单播的形式进行交互。
    采用UDP而不采用TCP的原因也很明显:TCP需要连接,如果连对方的IP地址都不知道,那么更不可能通过双方的套接字建立连接。

  • 租用期(lease period):

    • DHCP服务器分配给DHCP用户的IP地址是临时的,因此DHCP用户只能在一段有限的时间内使用这个分配到的IP地址。(当然是可以续约的,但如 笔记本走出范围了,不再续约了,那么服务器就会一段时间回收掉)。DHCP协议称这段时间为租用期
    • 租用期的数值应由DHCP服务器自己决定。
    • DHCP客户也可在自己发送的报文中(例如 发现报文)提出对租用期的要求。

网际控制报文协议(ICMP)

网际控制报文协议(Internet Control Message Protocol, ICMP):为了提高IP数据报交付成功的机会,在网络层使用ICMP来让主机或路由器报告差错和异常情况

  • ICMP报文作为IP层数据报的数据(这是TCP/IP的不完美之处,作为IP数据报的数据应该是传输层,但它还是IP层的协议),加上数据报的首部,组成IP数据报发送出去。

  • ICMP不是高层协议,而是IP层的协议。

  • ICMP报文:
    • ICMP差错报告报文:用于目标主机或到目标主机路径上的路由器先源主机报告差错和异常情况。
      • 终点不可达:当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。
      • 源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。
      • 时间超过:当路由器收到生存时间(TTL)为0的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间类不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。
      • 参数问题:当路由器或目的主机收到的数据报首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
      • 改变路径(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
    • ICMP询问报文:
      • 回送请求和回答报文
      • 时间戳请求和回答报文
      • 掩码地址请求和回答报文
      • 路由器询问和通告报文

      回时掩路:荒山野岭

  • 不应发送ICMP差错报告报文:
    • 对ICMP差错报告报文不再发送ICMP差错报告报文
    • 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
    • 对具有组播地址的数据报都不发送ICMP差错报告报文
    • 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文
  • ICMP常见应用:
    • 分组网间探测PING(用来测试两台主机之间的连通性):使用了ICMP回送请求和回答报文。
    • Traceroute/tracert(用来跟踪分组经过的路由):使用了ICMP时间超过报文。

    注意:PING工作在应用层,它直接使用网络层的ICMP,而未使用传输层的TCP或UDP。
    Traceroute/tracert工作在网络层

IPv6

解决IP地址耗尽问题的措施有以下三种:①采用无类别编址CIDR,使IP地址的分配更加合理;②采用网络地址转换(NAT)方法以节省全球IP地址;③采用具有更大地址空间的新版本的IPv6。
其中前两种方法只延长了IPv4地址分配结束的时间,只有第三种方法从根本上解决了IP地址的耗尽问题。
IPv4:4B,32bit;
IPv6:16B,128bit。(平方)

使用IPV6可以让我们的所有主机都拥有自己的公网IP,每一个主机都可以直接访问到世界上任意的一个主机,而无需申请公网IP或者处于同一局域网内。

  • 版本号:占4位。表示协议版本.值为6。

  • 流量等级:占8位。主要用于QoS,以满足实时、多媒体通信的需要。

  • 流标签:占20位。用来标识同一个流里面的报文。

  • 载荷长度:占20位,单位为1B。表明该IPv6包头部后包含的字节数,包含扩展头部。

  • 下一报头:占8位。该字段用来指明报头后接的报文头部的类型,若存在扩展头,表示第一个扩展头的类型,否则表示其上层协议的类型,它是IPv6各种功能的核心实现方法。

  • 跳数限制:占8位。该字段类似于IPv4中的TTL,每次转发跳数减一,该字段达到0时包将会被丢弃。

  • 源地址:占128位。标识该报文的来源地址。

  • 目的地址:占128位。标识该报文的目的地址。

  • 主要特点:

    • 更大的地址空间。IPv6地址将地址从IPv4的32位(4B)增大到了128位(16B)字节数是IPv4的平方
    • 固定首部40B,比IPv4的20B增加了一倍。
    • 支持即插即用(即 自动配置),因此IPv6不需要使用DHCP
    • IPv6首部改为8字节对齐首部长度必须是8B的整数倍,原来的IPv4首部是4B对齐。
    • 扩展的地址层次结构
    • 灵活的首部格式
    • 改进的选项。
    • 允许协议继续扩充
    • 支持资源的预分配

IPv6地址

  • IPv6数据报的目的地址可以是以下三种基本类型地址之一:

    • 单播。
    • 多播。
    • 任播。这是IPv6增加的一种类型。任播的目的站是一组计算机,当数据报在交付时只交付其中的一台计算机,通常是距离最近的一台计算机。
  • 采用“冒号十六进制表示法”

  • 缩写:

    • 当16位域的开头有一些0时,可以采用一种缩写表示法,但在域中必须至少有一个数字。

    例如,4BF5:0000:0000:0000:BA5F:039A:000A:2176 → 4BF5:0:0:0:BA5F:39A:A:2176

    • 当有相继的0值域时,还可以进一步缩写。这些域可以用双冒号缩写(:😃。当然,双冒号表示法在一个地址中仅能出现一次,因为0值域的个数没有编码,需要从指定的总的域的个数来推算。

    4BF5::BA5F:39A:A:2176

  • 与IPv4区别:

    • 首部长度:
      IPv4首部长度可变,IPv4首部的选项字段允许IP首部被扩展,由此导致数据报首部长度可变,故不能预先确定数据字段从何开始,同时也使路由器处理一个IP数据报所需时间差异很大(有的要处理选项,有的不需要)。基于此,IPv6采用固定40字节长度的报头长度(称基本报头)。IPv6如何实现IPv4选项字段类似的功能,答案是扩展报头,并由IPv6基本报头的下一个首部指向扩展报头(如果有的话)。路由器不处理扩展报头,提升了路由器处理效率。

    • 分片/重组:
      IPv6在传输过程中不允许分片,分片与重组只能在源与目的地上执行,不允许在中间路由器进行。分片与重组是个耗时的操作,将该功能从路由器转移到端系统,大大加快了网络中的IP转发速率。那,如果路由器收到IPv6数据报太大而不能转发到出链路上怎么办?该路由器丢弃该包,并向发送发发回一个"分组太大"的ICMP差错报文,于是发送方使用较小长度的IP数据报重发数据。
      而IPv4在传输过程中可以分片,超过MTU时路由器可以自行分片。

      注意:MTU=1500B只是以太网帧的最大传输单元,每个不同类型的帧的最大传输单元不一定一样,所以中途可能要分片。(如 从以太网经过路由器到其他类型的网络,MTU改变了,1500B可能要在途中分成更小的部分)

    • 首部检查和:
      每个路由器上,IPv4首部检查和都需要重新计算,是一项耗时操作。加之,目前网络传输介质的可靠性较高,出现比特错误的可能性很低,且传输层和链接层协议执行了检验操作,网络传输可靠性提升,所以IPv6不进行首部检查和,从而更快速处理IP分组。

邻居发现协议(NDP)

邻居发现协议(Neighbor Discovery Protocol, NDP或ND)是TCP/IP协议栈的一部分,主要与IPv6共同使用。它工作在网络层,负责在链路上发现其他节点和相应的地址,并确定可用路由和维护关于可用路径和其他活动节点的信息可达性。

邻居发现协议(NDP)替代了IPv4的ARP,并且添加了新的功能。它的所有功能都是基于ICMPv6报文来实现。NDP基于ICMPv6实现,NDP使用的所有报文均封装在ICMPv6报文中,所以ND被认为是3层协议。
在三层完成地址解析,主要好处是:地址解析在三层完成,不同的二层介质可以采用相同的地址解析协议。可以使用三层的安全机制避免地址解析攻击。使用组播方式发送请求报文,减少了二层网络的性能压力。

功能:

  • 地址解析:这个功能对应的是IPv4的ARP(地址解析协议)。主机A要和主机B通信,需要知道主机B的二层地址。
  • 跟踪邻居状态NUD(Neighbor Unreachable Detection,邻居不可达检测)
  • 重复地址检测DAD(Duplicate Address Detect)
  • 路由器发现
  • 重定向功能(router redirect)

路由协议

路由协议用于路由器之间不断地交换路由信息,并根据接到的信息,运行路由算法,优化更新路由,维持路由器有一个动态的优化的路由表。

  • 自治系统(Autonomous System, AS):
    • 单一计数管理下的一组路由器,这些路由器使用一种AS内部的路由选择协议和共同的度量来确定分组在该AS内的路由,同时还使用一种AS之间的路由选择协议来确定分组在AS之间的路由。
    • 路由寻址是自治的
    • 自治系统内部的路由器了解内部全部网络的路由信息,并能够通过一条路径将发送到其他自治系统的分组传送到连接本自治系统的主干路由器。
    • 自治系统内部的路由器要向主干路由器报告内部路由器信息。
  • 内部网关协议(Interior Gateway Protocol, IGP):也称域内路由选择,一个自治系统内部所使用的路由选择协议。具体有RIP和OSPF等。
  • 外部网关协议(External Gateway Protocol, EGP):也称域间路由选择,自治系统之间所使用的的路由选择协议。具体有BGP

路由信息协议(RIP)

应用层协议,基于UDP(一对多,广播)
路由信息协议(Routing Information Protocol, RIP)是内部网关协议(IGP)中最先得到广泛应用的协议。
RIP是一种分布式的基于距离向量的路由选择协议,其最大的优点就是简单。

  • 规定:

    • 网络中的每个路由器都要维护从它自身到其他每个目的网络的距离记录(因此这是一组距离,称为距离向量)。
    • 距离也称跳数(Hop Count),规定从一个路由器到直接连接网络的距离(跳数)为1。而每经过一个路由器,距离(跳数)+1。(即 主机→路由器→主机 这个过程中,经过路由器的个数的最大值(每要转发一次就减一,到0丢弃))
      • 从一个路由器到直接连接的网络的距离定义为1。(因为转发前-1,然后就直接丢了不转发,直接相连不需要转发)
      • 从一个路由器到非直接相连的网络的距离定义为所经过的路由器数+1,也就是经过n个路由器,距离n
    • RIP认为好的路由就是它通过的路由器的数目少,即 优先选择跳数少的路径
    • RIP允许一条路径最多只能包含15个路由器(即 最多允许15跳)。因此距离等于16时,它表示网络不可达

    注意:故RIP只适用于小型互联网。距离向量路由可能会出现环路的情况,所以规定了最高跳数。

    • RIP默认在任意两个使用RIP的路由器之间每30s广播一次RIP路由更新信息,以便自动建立并维护路由表(动态维护)
    • 在RIP中不支持子网掩码的RIP广播,所以RIP中每个网络的子网掩码必须相同。但在新的RIP2中,支持变长子网掩码和CIDR。
  • 特点:

    • 仅和相邻路由器交换信息。
    • 路由器交换的信息是当前路由器所知道的全部信息,即 自己的路由表。
    • 按固定的时间间隔交换路由信息,如间隔30秒。

距离向量算法

每个路由表羡慕都有三个关键数据:<目的网络N,距离d,下一跳路由器X>。对于每个相邻路由器发送过来的RIP报文,执行如下步骤:

  • 地址为X的相邻路由器发来的RIP报文,先修改此报文中所有项目:把“下一跳”字段中的地址都改为X,并把所有“距离”字段的值+1.(即 经过X到达其他地方的距离
  • 对修改后的RIP报文中的每个项目,执行如下步骤:
    • 当原来的路由表中没有目的网络N时,把该项目添加到路由表中。
    • 当原来的路由表中有目的网络N,且下一跳路由器的地址是X(相同)时(即 下一跳是发给你RIP报文的那个路由器,即 两个路由项目的下一跳相同,都为X),用收到的项目替换原路由表中的项目。(原来经过X到达目的地的距离是a,现在经过相同的X到达目的地的距离是b,所以修改成现在的b
    • 当原来的路由表中有目的网络N,且下一跳路由器的地址不是X(不相同)时,
      • 如果收到的项目中的距离d小于路由表中的距离,那么就用收到的项目替换原路由表中的项目;
      • 否则(收到项目中的距离d大于等于路由表中的距离),什么也不做。
  • 如果3分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即 将距离置为16
  • 返回。

  • 优点:实现简单、开销小、收敛过程较快

  • 缺点:

    • RIP限制了网络的规模,它能使用的最大距离为15(16表示不可达)
    • 路由器之间交换的是路由器中的完整路由表,因此网络规模越大,开销也越大。
    • “好消息快,坏消息慢”:当网络出现故障时,会出现慢收敛现象(即 需要较长时间才能将此信息传送到所有路由器)。


    网1突然出现故障,R1认为网1,距离16(不可达),直接交付,但R2还未发觉网1出现故障,当R1告诉R2时,R2同时也告诉R1从自己到网1的距离为2(也就是说你R1到网1的距离为3<16),所以R1又认为自己可以走3步经过R2到达网1,改变自己的路由表,
    这样不断更新下去,直到R1和R2到网1的距离都增大到16,R1和R2才知道网1是不可达的。

  • 适用性:
    只适用于小型互联网

注意:****RIP应用层协议,它使用UDP传送数据(端口520)。RIP选择的路径不一定是时间最短的,但一定是具有最少路由器的路径。

开放最短路径优先(OSPF)协议

开放最短路径优先(Open Shortest Path First, OSPF)协议是使用分布式链路状态路由算法的典型代表,也是内部网关协议的一种。

  • “开放”:表明OSPF协议不是受某一家厂商控制,而是公开发表的。

  • “最短路径优先”:表明使用了Dijkstra提出的最短路径算法SPF,也称Dijkstra算法。

  • 特征:

    • 向本自治系统中所有路由器发送信息,这里使用的方法是泛洪法(其实就是组播),即 每个路由器通过所有端口向所有相邻的路由器发送信息,而每个相邻路由器又将此信息发往其所有相邻路由器(但不再发送给刚刚发来信息的那个路由器)(逻辑上是给所有路由器发送了信息)。而RIP仅向自己相邻的几个路由器发送信息
    • 发送的信息是与路由器相邻的所有路由器的链路状态(如 A:我与B相邻),但这只是路由器所知道的部分信息

    “链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)

    • 只有当链路状态发送变化时,路由器才向所有路由器发送此消息

    注意:最终所有的路由器都能建立一个链路状态数据库(即 全网的拓扑结构图

  • 区域:

    • 为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围,叫作区域
    • 每一个区域都有一个32位的区域标识符(用点分十进制表示)(主干区域(在上层)(0.0.0.0)用来连通其他在下层的区域)
    • 区域也不能太大,在一个区域内的路由器最好不超过200个

    划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个自治系统,这就减少了整个网络上的通信量。
    在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的情况。

  • 工作原理:

    1. 构造发送Hello包、接收Hello包,得知本地链路状态。
    2. 通过一系列的分组交换,全网各路由器达到链路状态数据库的同步;或链路状态发送变化时用洪泛法向全网更新链路状态。
    3. 各路由器根据收集到的链路状态建立链路状态数据库
    4. 启动dijsktra算法,以自己为源点计算SPF树。
    5. 建立到达所有信宿的路由表(经由端口和代价)
  • 分组类型:

    • 问候分组(Hello):用来发现和维护邻站的可达性。(每隔一段时间(10s)使用,以便知道哪些站可达)
    • 数据库描述分组(Database Description):向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。(路由器刚开始工作时使用)
    • 链路状态请求分组(Link State Request):向对方请求发送某些链路状态项目的详细信息。(请求发送自己所缺少的某些链路状态项目的详细信息)
    • 链路状态更新分组(Link State Update):用洪泛法对全网更新链路状态。
    • 链路状态确认分组(Link State Acknowledgment):对链路更新分组的确认
  • 适用性:
    适用于规模很大的网络。

注意:由于采用洪泛法,为了减少通信量,OSPF协议不使用UDP数据报传送,而是直接使用IP数据报传送

边界网关协议(BGP)

应用层协议,基于TCP
边界网关协议(Border Gateway Protocol, BGP)是不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议。边界网关协议常用于互联网的网关之间。路由表包含目的网络前缀下一跳路由器到达该目的网络所要经过的各个自治系统序列

  • 背景:

    • 因特网的规模太大,使得自治系统之间路由选择非常困难。对于自治系统之间的路由选择,要寻找最佳路由是很不现实的。
      • 当一条路径通过几个不同的AS时,要想对这样的路径计算出有意义的代价是不太可能的。
      • 比较合理的做法是在AS之间交换“可达性”信息。(即 只考虑能否到达
    • 因此,边界网关协议BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。
  • BGP发言人(BGP speaker):

    • 每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”。
    • 一般说来,两个BGP发言人都是通过一个共享网络连接在一起的,而BGP发言人往往就是BGP边界路由器,但也可以不是BGP边界路由器。

  • 工作原理:

    1. 一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息,就要先建立TCP连接(可见BGP报文是通过TCP传送的),
    2. 然后在此连接上交换BGP报文建立BGP会话
    3. 利用BGP会话交换路由信息
    • 当所有BGP发言人都相互交换网络可达性信息后,各BGP发言人就可以找出到达各个自治系统的较好路由

    注意:BGP所交换的网络可达性信息:(路径向量,即 到达某个网络所经过的路径)就是要到达某个网络(用网络前缀表示)所要经过的一系列AS(即 自治系统)。
    路径向量与距离向量不同,路径向量只考虑路径可达。

    • 使用TCP连接能提供可靠的服务,也可简化路由选择协议。
    • 使用TCP连接交换路由信息的两个BGP发言人,彼此成为对方的邻站对等站
  • 特点:

    1. 在BGP刚开始运行时,BGP边界路由器与相邻的边界路由器交换整个的BGP路由表,在以后只需要在发生变化时更新有变化的部分
    2. 当两个边界路由器属于两个不同的自制系统,边界路由器之间定期地交换路由信息,维持相邻的关系。
    3. 当某个路由器或链路出现故障时,BGP发言人可以从不止一个相邻边界路由器获得路由信息。
  • 报文:

    • 打开(Open)报文:用来与相邻的另一个BGP发言人建立关系。
    • 更新(Update)报文:用来发送某一路由的信息,以及列出要撤销的多条路由。
    • 保活(Keep alive)报文:用来确认打开报文并周期性地证实邻站关系。
    • 通知(Notification)报文:用来发送检测到的差错。

总结

协议 RIP OSPF BGP
类型 内部 内部 外部
路由算法 距离向量 链路状态 路径向量
传递协议 UDP IP TCP
路由选择 跳数最少 代价最低 可达性,较好,非最佳
交换结点 和本节点相邻的路由器 网络中的所有路由器 和本节点相邻的路由器
交换内容 当前本路由器知道的全部信息,即 自己的路由表 与本路由器相邻的所有路由器的链路状态 首次:整个路由表
非首次:有变化的部分

问题:****RIP使用UDPOSPF使用IP,而BGP使用TCP。这样做有何优点?
RIP协议采用UDP是因为RIP每周期需全网组播路由信息,路由信息数目较大,故使用UDP协议可以提高效率;
OSPF本身提供主从协商机制,可以保证可靠的传输,另外全网路由器保持着同样的一个LSDB(链路状态数据库),即 每个路由器都有全网的拓扑结构图,当拓扑发生变化时仅用修改部分,需要携带的变更信息较少,通过IP协议即可完成;
BGP为边界网关协议,因携带的路由信息较多,且可能跨不同网络传送路由信息,为保证可靠性,需使用TCP协议,可兼顾容量和可靠性。

IP组播

仅应用于UDP
组播机制:是让源计算机依次发送的单个分组可以抵达用一个组地址标识的若干目标主机,并被它们正确接收。(即 一个领导发布命令,小组成员向下转告下层成员

  • 工作原理:
    • 有的应用程序要把一个分组发送给多个目的地主机。不是让源主机给每个目的地主机都发送一个单独的分组,而是让源主机把单个分组发送给一个组播地址,该组播地址标识一组地址。
    • 网络(如因特网)把这个分组的副本投递给该组中的每台主机。
    • 主机可以选择加入或离开一个组,因此一台主机可以同时属于多个组。

注意:主机组播时仅发送一份数据,只有数据在传送路径(路由器出现分岔时才将分组复制后继续转发

因特网组管理协议(IGMP)

主机使用一个称为IGMP的协议加入组播组
同时,要使路由器知道组播组员的信息,需要利用因特网组管理协议(Internet Group Management Protocol, IGMP)。

  • 它们使用该协议通知本地网络上的路由器关于要接收发送给某个组播组的分组的愿望。

  • 工作原理:

    1. 当某台主机加入新的组播组时,该主机应向组播组的组播地址发送一个IGMP报文,声明自己要成为该组的成员。
    2. 本地的组播组路由器收到IGMP报文后,将组成员关系转发给因特网上其他组播路由器。
    3. 因为组成员关系是动态的,本地组播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否仍继续是组的成员。
      • 只要对某个组有一台主机响应,那么组播路由器就认为这个组是活跃的。
      • 但一个组在经过几次的探询后,仍然没有一台主机响应时,则不再见该组的成员关系转发给其他的组播路由器。
  • 组播路由选择:

    • 实际上就是要找出以源主机为根结点的组播转发树,其中每个分组在每条链路上只传送一次(即 在组播转发树上的路由器不会受到重复的组播数据报)。
    • 在许多有路由器互连的支持硬件多点传送的网络上实现因特网组播时,主要有三种路由算法:
      • 基于链路状态的路由选择
      • 基于距离向量的路由选择
      • 可以建立在任何路由器协议之上,因此成为协议无关的组播(PIM)

IP组播地址

IP组播使用D类地址格式。每个D类IP地址标志一个组播组。
注意:并非所有的D类地址都可作为组播地址。

  • 因特网号码指派局IANA拥有的以太网地址块的高24位01-00-5E
  • 因此TCP/IP协议使用的以太网组播地址(MAC地址)的范围是:从01-00-5E-00-00-00到01-00-5E-7F-FF-FF(在每个地址中,只有23位可用作组播
  • D类IP地址可供分配的有28位,在这28位中的前5位不能用来构成以太网硬件地址(MAC地址)

注意:组播IP地址与以太网硬件地址的映射关系不是唯一的,因此受到组播数据报的主机,还要再IP层利用软件进行过滤,把不是本主机要接收的数据报丢弃。

  • 映射方法:
    • 组播IP地址的后23位与组播MAC地址的后23位映射。

    助记:(距离产生美,虽然是一组的,但是也要保持“1”点距离)(8*3=24,24-1=23)

    • 即 组播IP地址三个域:一个0+23位+(0+23个x)每4个一组化为16进制(也可以想成第二域的值-128,然后化成16进制(除16取余法))
    • 这16进制的6个数就是组播MAC地址的后6位,即 01-00-5E-XX-XX-XX

移动IP

支持移动性的因特网体系结构与协议共称为移动IP,它是为了满足移动节点(计算机、服务器、网段等)在移动中保持其连接性而设计的。

  • 移动IP技术是指移动节点以固定的网络IP地址时延实现不同网段的漫游功能(从一个网络到另一个网络)(与数据链路层的扩展服务集区分开,扩展服务集还是处于同一个网络中)。

  • 使用移动IP,一个移动节点可以在不改变其IP地址的情况下改变其驻留位置。

  • 基于IPv4的移动IP定义三种功能实体:

    • 移动节点:具有永久IP地址的移动节点。
    • 本地代理:在一个网络环境中,一个移动节点的永久“居所”被称为归属网络,在归属网络中代表移动节点执行移动管理功能的实体称为本地代理(归属代理),它感觉移动用户的转交地址,采用隧道技术移动节点的数据包。
    • 外部代理:在外部网络中帮助移动节点完成移动管理功能的实体。
  • 支持移动性的因特网体系结构与协议统称为移动IP(RFC3220)

  • 移动标准的组成:

    • 代理发现
    • 向归属代理注册
    • 数据报的间接路由
  • 注册:

  • 路由:

    • 间接路由:通信者如果需要与移动用户通信,归属代理首先截获这些数据报,然后通过移动用户的转交地址(care-of address, COA)将数据报转发给外部代理,然后从该外部代理转发给移动用户。
    • 直接路由:通信者获取移动用户的外部地址,然后直接将数据报发给移动用户。

  • 通信过程:

    dest:目的地(destination)。
    如果这时候该主机和其他主机通信,对端需要把数据发给什么地址?
    设立移动IP的目的就是为了在任何地方都能够使用同样的IP,所以通信对端还是使用主地址。

    • 在移动IP中,每个移动节点都有一个唯一的本地地址,当移动节点移动时,它的本地地址是不变的
    • 在本地网络链路上每个本地结点还必须有一个本地代理来为它维护当前的位置信息,这就需要引入转交地址
    • 当移动节点连接到外地网络链路上时,转交地址就用来标识移动节点现在所处的位置,以便进行路由选择。
    • 移动节点的本地地址当前转交地址的联合称为移动绑定或简称绑定
    • 当移动节点得到一个新的转交地址时,通过绑定向本地代理进行注册,以便让本地代理及时了解移动节点的当前位置。

    即 移动IP为移动主机设置了两个IP地址,即 主地址辅地址(转交地址)。移动主机在本地网时,使用的是主地址。当移动到另一个网络时,需要获得一个临时的辅地址,但此时主地址仍然不变。从外网一会本地网时,辅地址改变或撤销,而主地址仍然保持不变

  • 简化过程:代理发现→注册→分组路由→注销

    • 结点在本地网段时,地址为主地址,通信对端以主地址为目的IP发送分组给移动节点。
    • 当移动节点移动到其他网段后,移动IP技术开始工作

    注意:在移动节点移动后,本地代理是不知道此时移动节点的地址的家里人不知道现在你去哪玩了),但移动节点永远知道它的本地代理的地址(但你永远知道回家的路) ,所以它先向外部代理申请一个辅地址(也就是转交地址),通过这个转交地址与自己的本地代理相联系,注册, 而此时的本地代理就知道了移动节点现在所处的位置,从而能把通信对端发送的数据通过外部代理转交给移动节点。
    - 首先结点找到外部网段的外部代理,并向它申请一个辅地址(外部代理的地址)
    - 有了辅地址后,结点将在本地代理上注册当前的辅地址
    - 本地代理将主、辅地址的映射记录下来
    - 然后就可以分组路由
    - 本地代理在收到通信对端发送给移动节点的分组后,采用隧道技术将分组封装在以辅地址为目的地址的IP包内,再套一层),转交给外部代理,最后到达移动节点
    - 在移动节点继续移动到其他网段时,向本地代理注销主、辅地址绑定。

这里不细致展开。

虚拟局域网

虚拟局域网(Virtual Local Area Network, VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得名虚拟局域网。

  • 利用以太网交换机可以很方便地实现虚拟局域网VLAN (Virtual LAN) 。

在计算机网络中,一个二层网络可以被划分为多个不同的广播域,一个广播域对应了一个特定的用户组,默认情况下这些不同的广播域是相互隔离的。不同的广播域之间想要通信,需要通过一个或多个路由器。这样的一个广播域就称为VLAN。

  • 虚拟局域网VLAN是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个VLAN的帧都有一个明确的标识符指明发送这个帧的计算机是属于哪一个VLAN
  • 虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网。
  • 由于虚拟局域网是用户和网络资源的逻辑组合,因此可按照需要将有关设备和资源非常方便地重新组合,使用户从不同的服务器或数据库中存取所需的资源。
  • 虚拟局域网使用的以太网帧格式:
    • IEEE批准了802.3ac标准,该标准定义了以太网的帧格式的扩展,以支持虚拟局域网。
    • 虚拟局域网协议允许在以太网的帧格式中插入一个4字节的标识符,称为VLAN标记(tag),用来指明发送该帧的计算机属于哪一个虚拟局域网
    • 插入VLAN标记得出的帧称为802.1Q帧带标记的以太网帧

网络层设备(路由器)

路由器是一种具有多个输入输出端口的专用计算机,其任务是连接不同的网络(连接异构网络)并完成路由转发。
连接网络、存储转发、路由选择、隔离广播域

  • 在多个逻辑网络(即 多个广播域)互联时必须使用路由器。
  • 路由器也可以作为最基础的包过滤防火墙应用。

  • 工作原理:

  • 功能:

    • 路由选择(确定哪一条路径):值按照复杂的分布式算法,根据从各相邻路由器所得到的关于整个网络拓扑的变化情况,动态地改变所选择的路由。

    根据特定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。

    • 分组转发(当一个分组到达时所采取的的动作):指路由器根据转发表将用户的IP数据报从合适的端口转发出去。

    处理通过路由器的数据流,关键操作是转发查询、转发及相关的队列管理和任务调度等。
    路由表是根据路由选择算法得出的,而转发表是从路由表得出的。转发表的结构应当使查找过程最优化,路由表则需要对网络拓扑变化的计算最优化。

    • 补充:路由器工作在第三层,但是不意味着不使用上层协议,如RIP、BGP、HTTP等。(即 可以使用着上层的协议,实现着下层的功能,而设备的层次划分是按功能划分的)
      路由器作为一台网络设备,有硬件(cpu,内存,转发芯片,输入输出接口),有bios(boot loader),有操作系统( ios)组成。其中,操作系统内置了大量的应用程序与功能,有静态路由,有策略路由,有rip,有ospf等。
      在路由器内部,rip和ospf运行在应用层。然后看动态路由协议的功能,是分析ip数据报的目的地址,然后选择路径转发。所以我们说动态路由协议运行在osi参考模型的第三层。

    这也就解释了为什么路由器是网络层设备,但是能使用RIP等应用层协议了。路由器的功能只到网络层,但是使用的协议可能超过网络层。(如同 步行和飞机的功能都是代步,只是一个使用的道具比较高端而已)

  • 转发和路由选择的区别:

    • 转发:是路由器根据转发表把收到的IP数据报从合适的端口转发出去,它仅涉及一个路由器。
    • 路由选择:则涉及很多路由器。路由表是许多路由器协同工作的结果。这些路由器按照复杂的路由算法,根据从各相邻路由器得到的相关网络拓扑的变化情况,动态地改变所选择的路由,并由此构造出整个路由表。

    路由算法负责填充和更新路由表;
    转发功能则根据路由表的内容来确定当每个分组到来时应该采取什么动作(如 从哪个端口转发出去)。

  • 路由表:(在谈论路由选择的原理时,往往不去区分转发表和路由表,而是笼统地使用路由表一词)

    目的网络IP地址 子网掩码 下一跳IP地址 接口
    X.X.X.X(直接相连 。。 —— 。。
    X.X.X.X(特定主机 255.255.255.255 。。 。。
    X.X.X.X(间接网络 。。 。。 。。
    0.0.0.0默认路由 0.0.0.0 。。 。。

    注意:****默认路由的目的地址一般为0.0.0.0,子网掩码一般为0.0.0.0(即 网络前缀长度为0,全是主机号)
    因为查找路由表需要与子网掩码逐位相与,那么默认路由的0.0.0.0就可以达到默认的目的任何网络IP地址,与子网掩码0.0.0.0逐位相与,都能得到默认路由0.0.0.0
    网关地址、路由器到互联网的路由实质上相当于一个默认路由(即 当某一目的网络IP地址与路由表中其他任何一项都不匹配时,匹配该路由表项),一般写为0/0,即 目的地址为0.0.0.0,子网掩码为0.0.0.0。
    网关地址:接入Internet路由器地址

  • 若需要路由聚合,那么路由器一个接口一个路由项

路由聚合需要:①相同的下一跳地址(下一跳地址与接口一一对应),②相同网络前缀的最长部分

  • 当路由器端口d接入IP地址为(例子)61.60.21.80的互联网地址时,那么它的端口地址就是61.60.21.80,不用给它另外分配了。(即 路由器端口以该地址接入互联网)

  • 使用子网掩码时路由器的分组转发算法

    1. 从收到的分组首部提取目的IP地址,记为D
    2. 先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相与,看结果是否可相应的网络地址匹配。若匹配,则将分组直接交付;否则间接交付,执行步骤3
    3. 若路由表中有目的地址为D的特定主机路由,则将分组传送给路由表中所指明的下一跳路由器;否则执行4
    4. 对路由表中每一行(目的网络地址、子网掩码、下一跳地址)中的子网掩码和D逐位相与,其结果为N。若N与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行步骤5
    5. 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行步骤6
    6. 报告转发分组出错

    注意:要按照目的地址和那条路由条目最长匹配

    由此可知,同一个子网不能使用不同的子网号
    因为当使用不同子网号时,双方发送数据包时都会发送到路由器,而路由器收到时,发现一个找不到路由项,一个是该路由器端口冲突域内部的发送(属于自己网段的交流),所以不予转发,丢弃。(即 源站和目的站处在同一网段,这时不需要经过设备进行转发)

  • 转发表:

    目的站 下一跳
  • 设备总结:

    设备 隔离冲突域 隔离广播域
    网络层 路由器
    数据链路层 交换机
    网桥
    ×
    虚拟局域网VLAN
    物理层 集线器
    中继器
    × ×

    其实也很好理解:
    集线器可以在同一网段中将收到的数据广播到所有连接在它端口上的设备。(收到比特流的时候,并不存储转发,所以也不区分发给谁的)
    交换机(维护MAC地址与端口的映射表)可以在同一局域网中将数据直接转发给目标机器,而不广播惊动其他机器。收到帧的时候,发现该帧是给自己这个网段的,所以它就不转发了。(即 源站和目的站处在同一网段,这时不需要经过设备进行转发)
    路由器(维护IP地址路由表)可以在整个互联网中将数据从一个局域网直接转发到另一个局域网。收到包的时候,既可以发现是自己网段,而不转发,又可以通过路由表发现广播是自己这个端口内部发的,而不转发(因为广播地址全为1,与子网掩码相“与”之后,得到的是自身这个子网的网络号,所以不转发)(即 源站和目的站处在同一网段,这时不需要经过设备进行转发)

    利用交换机可以实现虚拟局域网(VLAN),VLAN不仅可以隔离冲突域,而且可以隔离广播域

    网段(network segment)一般指一个计算机网络中使用同一物理层设备(传输介质,中继器,集线器等)能够直接通讯的那一部分。
    一般来说,一个网段就是一个冲突域
    一个局域网就是一个广播域

IEEE 802.11:无线连接(WIFI)类似于有线的集线器,不隔离冲突域,wireshark开启monitor模式可直接抓包(有密码的需要设置密码解密)。

正是因为路由器很万能,既可以隔离冲突域,又可以隔离广播域,即可以有线,又可以无线,所以我们日常生活也不区分适用场景,直接用它。

posted @ 2019-09-18 14:51  Nemo&  阅读(1854)  评论(0编辑  收藏  举报