文章目录
五层协议之网络层
- 网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一,与 IP 协议配套使用的还有四个协议:
- 地址解析协议 ARP (Address Resolution Protocol)
- 逆地址解析协议 RARP (Reverse Address Resolution Protocol)
- 网际控制报文协议 ICMP (Internet Control Message Protocol)
- 网际组管理协议 IGMP (Internet Group Management Protocol)
一、绪论
在计算机网络领域,网络层应该向传输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。
争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?
电信网和因特网给出了不同的解决办法:
电信网的设计思路是:
- 面向连接的通信方式。
- 建立虚电路,使得双方的通信条件获得保障。
- 使用可靠传输的网络协议,能使发送的数据无差错(顺序,质量)地交付给对方。
因特网采用的设计思路是:
- 网络层向上提供简单的、无连接的、尽最大努力交付的服务。
- 网络发送分组时不需要建立连接,每一个分组独立发送,不会受到前后分组影响。
- 网络层不提供质量的保障,意思就是,在传输过程中,可能会有丢失、错位、重复的问题。
| 对比 | 虚电路服务 | 数据报服务 |
|---|---|---|
| 思路 | 可靠通信应当由网络保障 | 可靠通信应当由更高层保障 |
| 连接的建立 | 必须有 | 不需要 |
| 数据传递方式 | 属于同一虚电路的分组由同一路由转发 | 每个分组独立选择路由转发 |
| 分组的顺序 | 总是按顺序到达终点 | 不一定按发送顺序到达终点 |
| 数据丢失处理 | 可以由网络负责,也可以由更高层负责 | 由更高层负责 |
尽最大努力交付的好处是:
- 路由器可以做的比较简单,造价低廉。
- 网络的运行方式灵活,能适应多种应用。
- 因特网能发展到今日的规模,说明当初使用这种设计思路的正确性。
二、ARP协议
1. ARP简介
不管网络层使用什么协议传输,在实际的数据链路层上发送数据帧时,最终还得用物理地址来定位。
ARP就是通过目标ip地址,来获取到目标的物理地址。
每个主机上都有一个ARP-Cache高速缓存,它能记录所在局域网的IP地址和物理地址映射表。
2. ARP工作流程举例
假设局域网内有A、B、C三台计算机。
A要发送数据给C,这时A只知道C的IP地址,他想要获取C的MAC地址(物理地址),才能发送信息。
所以A向局域网发了个广播(广播MAC地址为FF-FF-FF-FF-FF-FF),广播中包含的信息是:“我是A,请问C听得到吗?听得到请把你的MAC地址发给我,谢谢啦”。
由于这是个广播,B和C都能收到,但是B一看广播的内容,不是给自己的,继续挂机。(其实B记录了A的MAC地址和IP地址映射到ARP-Cache中)
然后C收到后,就把自己的MAC地址信息指向性发送给了A。
A收到后C的回信后,就能正常通信了。
以上这个例子,就是局域网内部通信的情况。如果A要向局域网外的计算机通信,那该怎么办呢?
其实操作也是类似,发送个广播,只是获取的不是计算机的MAC地址了,是获取的路由器的MAC地址,把信息发送给了路由器后,再由路由器做相应的转发。
3. 四种使用ARP协议情况
| 发送方 | 接收方 | ARP业务 |
|---|---|---|
| 主机 | 本网段主机 | 直接找目的主机MAC地址 |
| 主机 | 非本网段主机 | 找本网络一个路由器地址,剩下的交给路由器 |
| 路由器 | 本网段主机 | 直接找目的主机MAC地址 |
| 路由器 | 非本网段主机 | 找下一个路由器的MAC地址,剩下的由下一个路由器做转发 |
4. 特别强调
数据包在被转发过程中,起始ip地址和目标ip地址不会改变。而是数据链路层的物理地址一直在更换。
网络接口软件使用 ARP 找到下一跳路由器的硬件地址,并将硬件地址写入帧头部,然后根据这个硬件地址找到下一跳的位置。
三、网络协议IP(重点)
1. IP数据包结构(IPV4)
1)澄清分组 /数据包 / 数据报的区别
据我发现,不同的书、课件。都会用到数据包、数据报、分组这三个词。
我的两个课件上,对于这一节,一个写的是IP数据包的结构,一个写的是IP数据报的结构。
那么这两者是否相同呢?
数据报(datagram):在网络层中的传输单元(例如IP)。一个数据报可能被压缩成一个或几个数据包。
数据包(package):也叫做分组,封装的基本单元,通常一个数据包映射(封装)成一个数据帧在数据链路层传输。
而且,OSI参考模型对各层传输的数据具有多种称呼。
-
数据链路层封装了数据后,称为数据帧;
-
网络层封装了数据后,成为数据报;
-
传输层封装了数据后,称为数据段;
…
所以,分组和数据包是相同的;
在网络层称数据为数据报可以,说是数据包也行。
2)IP数据包的格式
-
一个 IP 数据报由首部和数据两部分组成。
-
首部的前一部分是固定长度,共 20 字节(160位),是所有 IP 数据报必须具有的。
-
在首部的固定部分的后面是一些可选字段,其长度是可变的,几乎不会用到。
3)IP数据包的首部组成(重点)
IP数据包的首部由很多字段组成,下面我会一一讲解每个字段的作用。
-
版本(4位)
表示该数据包中IP协议的版本,如果是IPV4,版本就是
0100,如果是IPV6,版本就是0110。 -
首部长度(4位)
记录了IP数据包的首部长度,因为后面还有可选字段是可变长的,所以要记录长度。常规情况可选字段为空,首部长度就是20字节。但是,注意到只有4位来保存长度(0 ~ 15字节),岂不是连20个字节都无法表示了?
实际上,这里的一位是要放大四倍的,所以真正的范围是(0 ~ 60字节)。这也意味着,可变长度最大为40字节。IPV6限定了首部长度,固定大小。
-
区分服务(8位)
区分服务提供服务码,寻求更好的服务。比如告诉路由器00001100这个服务码的数据优先转发。路由器接受一堆数据后,会优先转发区分服务码为00001100的数据包。但基本用不到这个字段。 -
总长度(16位)
指首部和数据长度之和。16位能代表65535字节。这也是一个数据包的最大大小。 -
标识(16位)
数据报的标识,如果一个数据报很大,发送时就需要分成小片段(MAC帧的最大长度是1500字节),那么这些片段的标识相同。接收方接受到零散的帧片段后,就把标识相同的片段拼接起来。 -
标志(3位)
标志的三位只有前两位有作用。
中间一位是DF(Don’t Fragment),当DF = 0时,说明该数据包可以分片,如果DF = 1,说明这是个完整的数据包。
标志的最低位为MF(More Fragment),MF = 1表示后面“还有分片”。MF = 0表示最后一个分片。
如果接收方接收到了DF = 0的数据包,说明它是一个片段,不能直接拿来用。然后不断收到MF = 1的片段,直到收到MF = 0时,代表这是最后一个分片,再拼一起。 -
片偏移(13位)
片偏移能记录多个数据片段的起始位置,因为网络层接收的包不一定是按发送的顺序来的。所以记录偏移量才能精准拼接。片偏移的单位是8字节,所以按字节算出偏移量后要除以8。
-
生存时间(8位)
数据报在网络中可通过的路由器数的最大值。记为
TTL(Time to Live),上面讲过。 -
协议(8位)
指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给哪个处理过程。
假设这个数据包的协议是ICMP,那就直接在本层处理掉,如果是TCP,那得交给传输层来解决。
-
首部检验和(16位)
首部检验和检验首部正确性和完整性,不检验数据部分。
这里不采用 CRC 检验码而采用相对简单的计算方法。
-
源地址(32位)
IP数据包的起始地址。
-
目标地址(32位)
IP数据包的目标地址。
-
可选字段(0 ~ 40位)
一般情况下不用,如果使用了可选字段,如果长度不是4的倍数,要填充到4的倍数(原因请看第二点:首部长度)。
2. 分类的IP地址
-
我们把整个因特网看成为一个单一的、抽象的网络。IP 地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围是唯一的 32 位的标识符。
-
IP 地址现在由
因特网名字与号码指派公司ICANN进行分配 -
分类的 IP 地址。这是最基本的编址方法,在 1981 年就通过了相应的标准协议。
-
子网的划分。这是对最基本的编址方法的改进,其标准[RFC 950]在 1985 年通过。
-
构成超网。这是比较新的无分类编址方法。1993 年提出后很快就得到推广应用。
1)IP地址的表示方法
每一类地址都由两个固定长度的字段组成,其中一个字段是网络地址 net-id,它标志主机(或路由器)所连接到的网络区域,而另一个字段则是主机地址 host-id,它标志该主机(或路由器)的身份。
IP地址 ::= {<网络号>, <主机号>}(::= 代表 “定义为”)
点分十进制计法:
机器中存放的IP地址是32位二进制码,如10000000000010110000001100011111。
这里每隔8位分隔开,变成10000000,00001011,00000011,00011111。
然后再转化成十进制的数,中间用点隔开,128.11.3.11。这就是IP地址的点分十进制计法。
那么,将ip地址划分成网络号和主机号有什么好处呢?为什么不整体当作一个主键呢?
- IP地址的发放处只需要分配网络号,再有得到网络号的单位自行分配主机号。方便了IP地址的管理。
- 路由器转发时只看网络号,不考虑主机号,使得路由表中的项目大大减少,减小了路由表占的存储空间。
IP地址标识着一个主机的一条链路的接口。而不是代表这个主机。
所以,当一个主机同时连接到两个网络时,该主机必须同时有两个不同的IP地址。
路由器至少有两个IP地址,才能将一个网络的数据转发到另一个网络。
2)IP地址的分类方法
| 网络类别 | 网络号占位 | 主机号占位 |
|---|---|---|
| A类 | 1字节 | 3字节 |
| B类 | 2字节 | 2字节 |
| C类 | 3字节 | 1字节 |
3)IP层转发分组的流程(一)
在没有划分子网前,IP层转发数据很容易。
(1) 从数据报的首部提取目的主机的 IP 地址 D, 根据ip种类得出目的网络地址为 N。
(2) 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则把数据交给路由器,执行下一步。
(3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行下一步。
(4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行下一步。
(5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行下一步。
(6) 报告转发分组出错。
4. 子网划分与子网掩码
1)子网划分
通常,一个规模稍大的公司会申请一个B级ip地址,能大约容纳 台主机。
但实际上公司的主机数量并没有那么多,但是单位考虑到以后可能会有人员扩充等因素,又不会选择C级ip地址。
所以这就造成了大量地址浪费,利用率很低。
而且,一个网络内主机过多,会给路由表带来很大的压力。
使两级的 IP 地址变成为三级的 IP 地址。这种做法叫作划分子网(subnetting) 。划分子网已成为因特网的正式标准协议。
下图为未划分子网的B类网络:
下图为划分子网的B类网络:
划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。
2)子网掩码
-
从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。
-
使用**子网掩码(subnet mask)**可以找出 IP 地址中的子网部分。
默认子网掩码,是根据网络类型决定的:
如果使用了子网掩码,就能得出子网网络地址了。
3)IP层转发分组的流程(二)
在划分子网的情况下,从 IP 地址却不能唯一地得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息。
因此分组转发的算法也必须做相应的改动。
(1) 从收到的分组的首部提取目的 IP 地址 D。
(2) 先用各网络的子网掩码和 D 逐位相“与”,看是否和
相应的网络地址匹配。若匹配,则将分组直接交付。
否则就是间接交付,执行(3)。
(3) 若路由表中有目的地址为 D 的特定主机路由,则将
分组传送给指明的下一跳路由器;否则,执行(4)。
(4) 对路由表中的每一行的子网掩码和 D 逐位相“与”,
若其结果与该行的目的网络地址匹配,则将分组传送
给该行指明的下一跳路由器;否则,执行(5)。
(5) 若路由表中有一个默认路由,则将分组传送给路由表
中所指明的默认路由器;否则,执行(6)。
(6) 报告转发分组出错。
5. 无分类编址CIDR
1)概念及表示方法
问题引入:一个公司分配了B类网络地址,并划分了子网。通常,一个公司的子网区段是相同位数的。
但是,有的部门只有10台主机,有的部门有1000台主机,它们同时享用着同样的待遇(相同的最大主机数),这就降低的地址的利用率。
所以就产生了不定长网络前缀的概念:
-
CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。
-
CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。
-
IP 地址从三级编址(使用子网掩码)又回到了两级编址。
表示方法:IP地址/前缀长度,如128.14.35.7/20。
10.0.0.0/10 可简写为 10/10,也就是将点分十进制中低位连续的 0 省略。
网络前缀的后面加一个星号 * 的表示方法,如 00001010 00*,在星号 * 之前是网络前缀,而星号 * 表示 IP 地址中的主机号,可以是任意值。
CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”。
所以,能从一个CIDR地址获取什么信息?
- 子网掩码(位数)
- 最小地址
- 最大地址
- 地址块
2)构成超网(路由聚合)
如果一个网络中有许多子网地址,路由表就会非常大,如果要压缩路由表,就得使用路由聚合技术。
说直白点,就是将CIDR位数减小。
CIDR位数减小后,同一个子网就能容纳更多的主机数,路由表就可以记录更少的内容。
3)最长前缀匹配
-
使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。
-
应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配(longest-prefix matching)。
-
网络前缀越长,其地址块就越小,因而路由就越具体(more specific) 。
-
最长前缀匹配又称为最长匹配或最佳匹配。
例如路由器收到了目的地址 D = 206.0.71.128 的数据包。
目前路由表有两个地址路由:
-
206.0.68.0/22
-
206.0.71.128/25
那么该选择哪一个呢?
将D变为二进制,然后与两个路由对应的子网掩码相与。
两个结果都和对应的网段相等,所以优先选最长的,长代表精确。
四、网络地址转换NAT
话题引入:为什么把网页放在自己的电脑上的Tomcat上,只有局域网内才能访问。而放到阿里云服务器的Tomcat上,就能全网访问了呢?
1. 相关背景
RFC 1918 规定了三个 IP 地址块,如下:
A 类:10.0.0.0~10.255.255.255
B 类:172.16.0.0~172.31.255.255
C 类:192.168.0.0~192.168.255.255
这三个区域内的IP地址不会在因特网上被分配,因此不必向IP地址注册中心申请,可以在局域网内随意使用。
2. NAT操作流程
用过云服务器的同学就知道,云服务器有一个公网ip和一个私网ip。
私网ip,就是主机所在局域网的ip,也就是刚刚举例的192.168之类的。
公网ip,指的是因特网上全球唯一的IP 地址。
而要将数据发送到外界,就需要在路由器上安装NAT,这个路由器就变成了NAT路由器。
所有使用本地地址的主机在和外界通信时都要在 NAT 路由器上将其本地地址转换成 才能和因特网连接。
NAT路由器至少要分配一个公网ip,当局域网要发送信息出去时,先经过NAT路由器,NAT把数据包的源ip替换成公网ip,然后转发出去。
当接收方做出回应时,回应数据回到NAT路由器后,再由路由器转发到指定局域网计算机中。
3. NAT的优点
- 减缓可用的IP地址空间的枯竭(主要)。不同的局域网可以使用相同的私网ip,如192.168.10.12。(当然同一个局域网内不能出现两个相同的私网ip)
- 有效避免外界的攻击。外界扫描到的地址是NAT路由器地址,而不是真机的地址。
五、路由选择协议
因特网的早期 RFC 文档中未使用“路由器”而是使用“网关”这一名词。但是在新的 RFC 文档中又使用了“路由器”这一名词。应当把这两个属于当作同义词。
1. 自治系统(Autonomous System)
自治系统 AS 的定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。
2. 两大类路由选择协议
-
内部网关协议 IGP (Interior Gateway Protocol) 即在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用得最多,如
RIP和OSPF协议。 -
外部网关协议EGP (External Gateway Protocol) 若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议
EGP。在外部网关协议中目前使用最多的是 BGP-4。
3. 内部网关协议RIP
1)RIP的工作方式
RIP 是一种分布式的基于距离向量的路由选择协议。
RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
距离是什么?
从一路由器到直接连接的网络的距离定义为 1。
从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。
RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1。
一个自治系统内的多个路由器,它们每隔30秒向邻居交头接耳一次,告诉自己知道的所有信息(完整路由表),这样,多交流几次后,所有路由器就都学到了完整的路由表。
-
仅和相邻路由器交换信息。
-
交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
-
按固定的时间间隔交换路由信息,例如,每隔 30 秒。
2)距离向量算法
路由器之间会通过RIP协议来交换自己的路由表信息,但路由器最终只会保存到每一个网络的最佳路径,意思就是,路由器不会收到信息后就无脑更新路由表,它会判断这个信息是否是”谣言“。
对于RIP协议,RIP认为最佳路径就是指距离最短,也就是下一跳次数越少。
收到相邻路由器(其地址为 X)的一个 RIP 报文:
-
先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。
-
对修改后的 RIP 报文中的每一个项目,重复以下步骤:
若项目中的目的网络不在路由表中:
把该项目加到路由表中。
否则(在路由表中):
若下一跳字段给出的路由器地址是同样的:
把收到的项目替换原路由表中的项目。
否则 :
若收到项目中的距离小于路由表中的距离,则进行更新,
否则:
什么也不做。
-
若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为16(距离为16表示不可达)。
用人话解释下取舍过程:
如果路由器不知道去网络P的下一跳怎么走,那么当路由器收到的RIP报文中,有去网络P的下一跳的话,直接拿来(饥不择食)。
如果路由器的路由表记录了去网络P的下一跳是跳到A、距离为2,那么当路由器收到RIP报文也有去网络P的路径时,那就要选择选择了。
如果报文中是下一跳到B,距离为3的话,那当然不要了,我好端端跳2下就能去的,为啥要跳3下?
但如果报文中是下一跳到A,距离为3的话,那就必须接收了,因为下一跳地址和路由表中的相同(都是A),说明子路径可能出了问题,更换了新的子路径。
(就像是两个小卖部,你在小卖部A买辣条花了1元,如果小卖部B卖2元,你肯定不要。但是小卖部A也要2元时,说明进价可能涨了,你就害得买。)
如果过了180秒,邻居还没跟我说话(没有给我发RIP报文),那我就认定他死了。把下一跳是他的所有路由路径长度设置为16,代表不可达。
3)RIP的优缺点
优点:
- RIP 协议最大的优点就是实现简单,开销较小。
缺点:
- RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。所以RIP只适合中小网络。
- 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
- 当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。
这里模拟下缺点的第三点:好消息传得快、坏消息传得慢。
-
R1 说:“我到网 1 的距离是 16 (表示无法到达)
-
但 R2 在收到 R1 的更新报文之前,还发送原来的报文,
因为这时 R2 并不知道 R1 出了故障。
-
R1 收到 R2 的更新报文后,误认为可经过 R2 到达网1,于是更新自己的路由表,说:“我到网 1 的距离是 3,下一跳经过 R2”。然后将此更新信息发送给 R2。
-
R2 以后又更新自己的路由表为“1, 4, R1”,表明 “我到网 1 距离是 4,下一跳经过 R1”。
-
这样不断更新下去,直到 R1 和 R2 到网 1 的距离都增大到 16 时,R1 和 R2 才知道网 1 是不可达的。
这就是好消息传播得快,而坏消息传播得慢。网络出故障的传播时间往往需要较长的时间(例如数分钟)。这是 RIP 的一个主要缺点。
4. 内部网关协议 OSPF(了解)
1)OSPF工作方式
如果路由器到网络有两个路径,其中一个是电话线,64kb,但只需要跳一下。另一个 是千兆光纤,但需要跳两下,RIP就傻傻的认为跳一下的那条路更近。而OSPF能更好地衡量路径代价,并做出全局规划。
-
向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。
-
由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。
-
这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。
-
OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。OSPF 的更新过程收敛得快是其重要优点。
-
有了全网拓扑结构,使用迪杰斯特拉算法,就能算出去某一个网络的最短路径。
2)OSPF区域
为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫作区域。
3)OSPF其他特点
-
OSPF 还规定每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。
-
由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。
-
OSPF 没有“坏消息传播得慢”的问题,据统计,其响应网络变化的时间小于 100 ms。
4. 外部网关协议 BGP(了解)
因特网的规模太大,使得自治系统之间路由选择非常困难。对于自治系统之间的路由选择,要寻找最佳路由是很不现实的。
因此,边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。
每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人” 。
一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息。
BGP的特点:
-
BGP 协议交换路由信息的结点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多。
-
每一个自治系统中 BGP 发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂。
-
BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
-
在BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销方面都有好处。
六、ICMP / IGMP
1. 网络控制报文协议-ICMP简介
为了提高 IP 数据报交付成功的机会,在网络层使用了网络控制报文协议 ICMP (Internet Control Message Protocol)。
ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
ICMP 不是高层协议,而是 IP 层的协议。
2. ICMP应用举例 - PING
PING 用来测试两个主机之间的连通性。
PING 使用了 ICMP 回送请求与回送回答报文。
PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。
TTL能表示数据包经过了几个路由器转发,比如默认TTL是64,数据包途径14个路由器,回到我这里后,TTL就是显示50。当TTL为0时路由器直接丢弃,这种做法就是为了防止数据包在互联网中环状传递。
3. Internet组播管理协议-IGMP(了解)
先介绍组播这个概念,举个实际的例子,实验室里老师分享屏幕时,这个就是组播。
它和广播不同,广播是局域网所有计算机都收到信息,而学生可以选择脱离屏幕分享,这时老师的屏幕流就不会传到这个学生的计算机上。
IGMP功能之一就是做的管理组播用户,用户选择了组播,IGMP就负责将数据传给它。
七、路由器
**“转发”(forwarding)**就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。
**“路由选择”(routing)**则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。
-
若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。
-
路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。