计算机网络课程笔记--------- 网络层笔记

网络层

  • 网络层的功能
  • 路由
    • 路由与转发
    • 路由算法
    • 层次路由
  • IPv4
    • IPv4分组
      • 总结
    • IPv4地址
      • IP地址重要特点与疑问点
    • 子网划分与子网掩码
      • 子网掩码
      • CIDR
      • APR
      • ICMP
  • 路由协议
    • 路由选择协议
      • RIP
      • OSPF
  • 网络层设备
    • 路由器

该内容是计算机网络中最重要的一章了(对于考试来说)。

核心考点

  1. 子网划分和无分类编制CIDR
  2. 路由与转发,各种路由算法
  3. IP地址的分类、IP数据报格式、NAT

计算机网络课程笔记--------- 网络层笔记_第1张图片

  1. 有时候根本没有明确定义过这些协议的在网络体系结构中的位置。学习协议的关键是掌握它们在网络中的功能和如果应用它们,至于它们到底是那一层的协议,其实是不重要的。

网络层的功能

  1. 虚拟互联网也就是逻辑互联网,意思是说互连起来的各种物理网络的异构性本来就是客观存在的,但是利用协议可以使这些性能各异的网络让用户看起来好像是一个统一的网络。这种协议就是网络层中的重点IP协议。

计算机网络课程笔记--------- 网络层笔记_第2张图片
真实的互联网
计算机网络课程笔记--------- 网络层笔记_第3张图片

  1. IP协议 “尽最大努力交付”的含义:
    1. 不保证发送出来的IP数据报一定无差错地交付到目的主机。
    2. 不保证发送出来的IP数据报都在某一规定的时间内交付到目的主机。
    3. 不保证发送出来的IP数据报一定按发送时的顺序交付到目的主机。
    4. 不保证发送出来的IP数据报不会重复交付到目的主机。
    5. 不故意丢弃IP数据报。丢弃IP数据报的情况大致有:路由器检测出错误;网络中通信量过大,路由器或目的主机中缓存已无空闲空间

    检测出IP数据报有误的话,就会将该数据报丢弃。因此交付到目的主机的一定是没有差错的(或者说没有检测出错误的)。 如果要保证数据可靠地交付给目的地,则需要由高层来负责解决这一个问题。

路由

路由与转发

路由器的主要功能包括路由选择(确定哪一条路径)与分组转发(当分组到达时所采用的的动作).

  1. 路由选择: 根据算法确定一个进来的分组应该被传送到哪一条输出路线上。
  2. 分组转发:路由器根据转发表将用的IP数据报从合适的端口转发出去。

路由表示根据路由选择算法得出的,而转发表是从路由表得出的。在讨论路由选择的时候,往往不区分转发表和路由表。

  1. 路由表中只给出到目的网络的下一跳转路由器的IP地址,一直跳到目的网络,这样的好处是:使得路由选择成为动态的。

路由算法

分为两大类即静态路由选择策略动态路由选择策略。动态路由算法又分为两种基本类型:距离-向量路由算法 和链路状态路由算法。

  1. 距离-向量路由算法:距离向量路由算法要求每个路由器维护一张距离表和路由表,并在表中给出到每个已知目的地的最短距离和路径。在距离表中,列表示和这个节点直接相连的邻居,表中的行表示目的节点,而表中的元素表示“距离”,“距离”可以是跳跃次数、时延或丢失的数据包的数量等。距离向量路由算法通过路由表之间周期性的交换数据来更新网络拓扑结构。
  2. 链路状态路由算法:今天,链路状态路由算法的变种算法——IS-IS或者OSPF已经称为大型网络或Internet应用最为广泛的路由算法。
    该算法的设计思路非常简单,对于每个路由器来说,需要完成以下步骤:
    ①发现它的邻居节点,并了解其网络地址
    ②设置到每个邻居节点的距离或者成本度量值
    ③构造一个包含所有刚刚获知的链路信息包
    ④将这个包发送给所有其他的路由器,并接收来自所有其他路由器的信息包
    ⑤计算出到每个其他路由器的最短路径
      实际上,该算法将完整的拓扑结构分发给了每一个路由器。然后每个路由器运行Dijkstra算法就可以找到从本地到每一个其他路由器的最短路径。

层次路由

  1. 指的是采用分层次的路由选择协议。
  2. 自治系统不是一个局域网,里边包含很多局域网。
  3. 故事助记:

    将整个世界看作一个因特网,每个国家是不同的自治系统,而每个国家又分为许多省(区域),每个省的人只懂得自己省的风俗(每个路由器只知道本区域的完整网络拓扑)。但是各个省之间是需要互相交流的,这样就在每个省选出一个省长(区域边界路由器),这样该省的百姓就可以将信息通过省长传给另外一个省长(通过骨干区域)。当然有时候国家主席还要给各个省长开会,相互交流信息,所以需要一个组织(骨干区域,取名为0.0.0.0),该组织包括各省长和国家主席。所以说省长需要演好两个角色,一个是骨干区域的成员,另一个是区域边界成员。当然这样是不够的,如果两个国家互访(不同自治系统交换信息),这时就派主席去和外国交流(可以是骨干区域的任何一个路由器),此时主席可以看成是自治系统边界路由器。

IPv4

IPv4分组

在 TCP/IP 协议中,使用 IP 协议传输数据的包被称为 IP 数据包,每个数据包都包含 IP 协议规定的内容。IP 协议规定的这些内容被称为 IP 数据报文(IP Datagram)或者 IP 数据报。
IP 数据报文由首部(称为报头)和数据两部分组成。首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。
每个 IP 数据报都以一个 IP 报头开始。源计算机构造这个 IP 报头,而目的计算机利用 IP 报头中封装的信息处理数据。IP 报头中包含大量的信息,如源 IP 地址、目的 IP 地址、数据报长度、IP 版本号等。每个信息都被称为一个字段。

P 数据报头字段如图所示。
计算机网络课程笔记--------- 网络层笔记_第4张图片
IP 报头的最小长度为 20 字节,上图中每个字段的含义如下:

  1. 版本(version)
    占 4 位,表示 IP 协议的版本。通信双方使用的 IP 协议版本必须一致。目前广泛使用的IP协议版本号为 4,即 IPv4。
  2. 首部长度(网际报头长度IHL)
    占 4 位,可表示的最大十进制数值是 15。这个字段所表示数的单位是 32 位字长(1 个 32 位字长是 4 字节)。因此,当 IP 的首部长度为 1111 时(即十进制的 15),首部长度就达到 60 字节。当 IP 分组的首部长度不是 4 字节的整数倍时,必须利用最后的填充字段加以填充。
    数据部分永远在 4 字节的整数倍开始,这样在实现 IP 协议时较为方便。首部长度限制为 60 字节的缺点是,长度有时可能不够用,之所以限制长度为 60 字节,是希望用户尽量减少开销。最常用的首部长度就是 20 字节(即首部长度为 0101),这时不使用任何选项。
  3. 区分服务(tos)
    也被称为服务类型,占 8 位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998 年 IETF 把这个字段改名为区分服务(Differentiated Services,DS)。只有在使用区分服务时,这个字段才起作用。
  1. 总长度(totlen)
    首部和数据之和,单位为字节。总长度字段为 16 位,因此数据报的最大长度为 2^16-1=65535 字节。

  2. 标识(identification)
    用来标识数据报,占 16 位。IP 协议在存储器中维持一个计数器。每产生一个数据报,计数器就加 1,并将此值赋给标识字段。当数据报的长度超过网络的 MTU,而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。具有相同的标识字段值的分片报文会被重组成原来的数据报。

  3. 标志(flag)
    占 3 位。第一位未使用,其值为 0。第二位称为 DF(不分片),表示是否允许分片。取值为 0 时,表示允许分片;取值为 1 时,表示不允许分片。第三位称为 MF(更多分片),表示是否还有分片正在传输,设置为 0 时,表示没有更多分片需要发送,或数据报没有分片。

  4. 片偏移(offsetfrag)
    占 13 位。当报文被分片后,该字段标记该分片在原报文中的相对位置。片偏移以 8 个字节为偏移单位。所以,除了最后一个分片,其他分片的偏移值都是 8 字节(64 位)的整数倍。

  5. 生存时间(TTL)
    表示数据报在网络中的寿命,占 8 位。该字段由发出数据报的源主机设置。其目的是防止无法交付的数据报无限制地在网络中传输,从而消耗网络资源。
    路由器在转发数据报之前,先把 TTL 值减 1。若 TTL 值减少到 0,则丢弃这个数据报,不再转发。因此,TTL 指明数据报在网络中最多可经过多少个路由器。TTL 的最大数值为 255。若把 TTL 的初始值设为 1,则表示这个数据报只能在本局域网中传送。

  6. 协议
    表示该数据报文所携带的数据所使用的协议类型,占 8 位。该字段可以方便目的主机的 IP 层知道按照什么协议来处理数据部分。不同的协议有专门不同的协议号。
    例如,TCP 的协议号为 6,UDP 的协议号为 17,ICMP 的协议号为 1。
    计算机网络课程笔记--------- 网络层笔记_第5张图片

  7. 首部检验和(checksum)
    用于校验数据报的首部,占 16 位。数据报每经过一个路由器,首部的字段都可能发生变化(如TTL),所以需要重新校验。而数据部分不发生变化,所以不用重新生成校验值。只检验数据报的首部,不检验数据部分

  8. 源地址
    表示数据报的源 IP 地址,占 32 位。

  9. 目的地址
    表示数据报的目的 IP 地址,占 32 位。该字段用于校验发送是否正确。

  10. 可选字段
    该字段用于一些可选的报头设置,主要用于测试、调试和安全的目的。这些选项包括严格源路由(数据报必须经过指定的路由)、网际时间戳(经过每个路由器时的时间戳记录)和安全限制。

  11. 填充
    由于可选字段中的长度不是固定的,使用若干个 0 填充该字段,可以保证整个报头的长度是 32 位的整数倍。

  12. 数据部分
    表示传输层的数据,如保存 TCP、UDP、ICMP 或 IGMP 的数据。数据部分的长度不固定。

总结

计算机网络课程笔记--------- 网络层笔记_第6张图片

IPv4地址

把整个因特网看作一个单一的、抽象的网络。IP地址就是给每一个连接在因特网上的主机(或路由器)分配一个全世界范围内唯一的32位的标识符。

IP地址根据网络ID的不同分为A、B、C、D、E五类,其中A、B、C这三类是比较常用的IP地址D、E类为特殊地址。
计算机网络课程笔记--------- 网络层笔记_第7张图片

  1. A类地址:首先A类地址的网络号前面8位为网络位,又因为最高位只能为1,先变为7为,之后因为网络地址全为0的IP地址是一个保留地址,意思是“本网络”,又因为还有一个网络号011111111保留作为本主机的环回测试。因此A类地址可以指派的网络数为** 2 7 − 2 2^7-2 272**。而对于后不变的24位主机号,当全为0的时候表示该网络,如一主机的IP地址为12.0.0.1,那么该主机所在的网络地址为12.0.0.0;而主机号全1表示广播地址,如12.255.255.255. 所以说合法主机地址就是介于两者之间的地址,所以对于每一个A类网络上的主机地址有 2 24 − 2 2^{24} - 2 2242个。
  2. B类地址:B类地址前16位为网络位,最高位只能为10. 实际上网络号1000_0000_0000_0000是不会指派的,所以可以指派的网络数为 2 14 − 1 2^{14}-1 2141.同样对于后边的主机位数量的理由与A类地址类似,因此对于每一个B类网络上的最大主机数为 2 16 − 2 2^{16}-2 2162
  3. C类地址:理由与前边类似,网络数为 2 21 − 1 2^{21}-1 2211,每一个C类网络上的最大主机数为 2 8 − 2 2^8-2 282
  4. A、B、C类地址的最小网络地址和最大网络地址:
    1. A: 1 ~ 126
    2. B: 128.1 ~ 191.255
    3. C:192.0.` ~ 223.255.255
  5. 六类特除地址
特殊地址 网络号 主机号 源地址或目的地址
网络地址 特定的 全0 都不是
直接广播地址 特定的 全1 目的地址
受限广播地址 全1 全1 目的地址
这个网络上的这个主机 全1 全0 源地址或默认目的地址
这个网络上的特定主机 全0 特定的 目的地址
环回地址 127 不是全0或全1 源地址或目的地址
  1. 其中前两个是我们上面讲述主机数量减2的原因所在。
  2. 受限广播地址为:255.255.255.255 ,这个地址用于定义在当前网络(不是整个互联网)。这样的广播会被路由器所限制,使得这样的广播仅仅局限与本地的局域网中。
  3. 这个网络上的这个主机:IP地址为0.0.0.0 。 这发生在某个主机不知道自己的IP地址,主机为了发现自己的IP地址,就会给引导服务器发送IP分组,并使用该IP地址作为源地址,使用255.255.255.255作为目的地址。
  4. 这个网络上的特定主机:这是把分组限制在本地网络的一种方法。实际上是一个A类地址。
  5. 环回地址:第一个字节

IP地址重要特点与疑问点

  1. 实际上IP地址标志一个主机(或路由器)和一条链路的接口。当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号必须是不同的。这种主机称为多接口主机,如,路由器的每个接口都有一个不同网络号的IP地址。
  2. IP地址的结构可以有两种:(网络号)-(主机号)或(网络号)(子网号)(主机号)

子网划分与子网掩码

**划分子网的基本思路:**从主机号借用若干比特作为子网号,而主机号也就相应减少了若干比特,网络号不变。于是三级的IP地址1可记为
IP地址::= {<网络号>,<子网号>,<主机号>}
凡是从其他网络发送给本单位某个主机的IP分组,仍然根据IP分组的目的网络号先找到连接在本单位网络上的路由器,然后此路由器在收到IP分组后,再按目的网络号和子网号找到目的子网,最后将IP分组直接交付给目的主机。

子网掩码

子网划分与否是看不出来的,如果要告诉主机或路由器是否对一个A类、B类、C类网络进行子网划分,则需要子网掩码

  1. 子网掩码是一个与IP地址相对应的32位的二进制串,它由一串1和0组成。其中,1对应与IP地址中的网络号和子网号,0对应与主机号。
  2. 现在的因特网规定,所有网络都必须有一个子网掩码。如果一个网络没有换分子网,就采用默认的子网掩码。A类、B类和C类的默认子网掩码分别是255.0.0.0,255.255.0.0,255.255.255.0
  3. 不管网络有没有划分子网,只要将子网掩码和IP地址进行逐位的“与”运算,就一定能立即得出网络地址。

CIDR

无分类编址是为解决IP地址耗尽而提出的一种措施。

  1. CIDR消除了传统的A类以及子网的概念。使用各种长度的“网络前缀”来代替分类地址中的网络号和子网号。 地址格式为 : IP地址:: = {<网络前缀>,<主机号>}。
  2. 为了区分网络前缀,通常采用“斜线记发”,即IP地址/网络前缀所占的位数。如 128.14.32.0/20,说明网络前缀占20位,主机位有12位。
  3. 将网络前缀相同的连续IP地址组成“CIDR地址块”。一个CIDR地址块可以表示很多地址,这种地址的聚合常称为路由聚合(超网),它使得路由表中的一个项目可以表示很多原来传统分类地址的路由。 CIDR也同样使用掩码来确定网络前缀。

APR

虽然在网络层转发分组用的是IP地址,但最终还是要使用MAC地址来在实际网络的链路上传送数据帧。APR就是用来解决将IP地址直接转化成物理地址。

  1. 在每个主机中都与一个APR高速缓存,里面存放的是所在局域网上的各主机和路由器的IP地址到硬件地址的映射表,APR的职责就是动态地维护该表。
  2. APR是解决同一个局域网上的主机或路由器的IP地址和硬件映射问题的。如果所要找的主机和源主机不在同一个局域网上,那么就要通过APR找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络,剩下的工作就由下一个网络来做。
  3. APR请求分组是广播发送的,但是APR响应分组就是普通的单播。即从一个源地址发送到一个目的地址。如果不是在同一个局域网是有路由器向源主机发送APR回答分组。

ICMP

主机在发送数据时,经常会由于各种原因发送错误。如果检测出错误的路由器或主机都能把这些错误报告通过一些控制消息告诉发送数据的主机,那么发送数据的主机就可根据ICMP报文确定发生错误的类型。这个由检测到错误的设备返回的消息,就交ICMP消息。

ICMP报文分为两种,分别是ICMP差错报文和ICMP询问报文。

  1. ICMP差错报告报文的分类:、
    1. 终点不可达、当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。
    2. 源站抑制。当路由器或主机由于拥塞而丢弃数据报时,就发送源点抑制报文,让源点知道应降低数据报的发送速率。
    3. 时间超过。①路由器得到的IP分组的TTL值被键位0后,路由器一方面丢弃该分组,还要向源发送时间超过报文;②终点在预计时间内不能收到一个数据报的全部数据报片时,就把已收到的丢弃,并发送报文。
    4. 改变路由:路由器把改变路由报文发送给主机,以让主机知道后序发送路由的较优路径。

路由协议

路由选择协议

Internet网被分成多个域或多个自治系统(AS)。一个域(domain)是一组主机和使用相同路由选择协议的路由器集合,并由单一机构管理。换言之,一个域可能是由一所大学或其它机构管理的互联网。内部网关协议(IGP)在一个域中选择路由。外部网关协议(EGP)为两个相邻的位于各自域边界上的路由器提供一种交换消息和信息的方法。

  • 内部网关协议IGP,是在AS(自治系统)内部使用的协议,常用的有OSPF、ISIS、RIP、EIGRP。
  • 外部网关协议EGP,是在AS(自治系统)外部使用的协议,常用的有BGP。

计算机网络课程笔记--------- 网络层笔记_第8张图片

RIP

  1. 网关与路由器的区别大同小异,我们应把这两个词当作同义词。
  2. RIP知识点里面所提到的节点,全部是路由器,而不包括主机。
  3. RIP只关心自己周围的世界,即只与自己相邻的路由器交换信息,并且范围在15跳之内,再远就不再关心了。因此RIP仅适合比较小的自治系统。
  4. RIP所使用的算法为距离-向量算法,简单来说每经过一个路由器,跳数加1.RIP认为一个好的路由就是它通过的路由器的数目少
  5. RIP为什么不设置较大一点的最大跳数的原因是:当链路出现故障的时候,会导致浪费网络资源来发送循环的分组。这种现象称为 “计数到无穷大”。

  6. RIP选择的路径不一定是时间最短的,但一定是具有最少路由器的路径。

OSPF

路由协议OSPF全称为Open Shortest Path First,也就开放的最短路径优先协议,因为OSPF是由IETF开发的,它的使用不受任何厂商限制,所有人都可以使用,所以称为开放的,而最短路径优先(SPF)只是OSPF的核心思想,其使用的算法是Dijkstra算法,最短路径优先并没有太多特殊的含义,并没有任何一个路由协议是最长路径优先的,所有协议,都会选最短的。
OSPF采用链路状态协议来完成大型自治系统的通信并且尽最大努力去提高收敛的速度。

  1. 链路(Link)
    就是路由器上的接口,在这里,应该指运行在OSPF进程下的接口。

  2. 链路状态(Link-State)
    链路状态(LSA)就是OSPF接口上的描述信息,例如接口上的IP地址,子网掩码,网络类型,Cost值等等,OSPF路由器之间交换的并不是路由表,而是链路状态(LSA),OSPF通过获得网络中所有的链路状态信息,从而计算出到达每个目标精确的网络路径。OSPF路由器会将自己所有的链路状态毫不保留地全部发给邻居,邻居将收到的链路状态全部放入链路状态数据库(Link-State Database),邻居再发给自己的所有邻居,并且在传递过程种,绝对不会有任何更改。通过这样的过程,最终,网络中所有的OSPF路 由器都拥有网络中所有的链路状态,并且所有路由器的链路状态应该能描绘出相同的网络拓朴。

  3. OSPF路由协议仅仅当网络拓扑发生变化时,才向本自治系统的所有路由器发送信息(使用泛洪法)。

  4. OSPF路由协议将一个自治系统再划分为若干个更小的范围,称为区域。计算机网络课程笔记--------- 网络层笔记_第9张图片

  5. 虽然使用dijkstra算法可以算出完整的最优路径,但是路由表中不会存储完整路径,只会存储“下一跳”。

网络层设备

路由器

路由器工作在网络层,实质上是一种多个输入端口和多个输出端口的专用计算机,其任务是连接不同的网络转发分组。也就是说,将路由器某个输入端口收到的分组,按照分组要去的目的地(目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。
整个路由器的结构可划分为两大类:路由选择部分和分组转发部分,如下图所示

计算机网络课程笔记--------- 网络层笔记_第10张图片

  1. 路由选择部分的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换器由信息而不断更新和维护路由表,其核心部件是路由选择处理器。
  2. 分组转发部分:分组转发部分由三部分组成:交换结构、一组输入端口和一组输出端口(请注意:这里的端口就是硬件接口)。
  3. 网络设备中,只有路由器可以抑制广播风暴。
  4. 路由器的功能:①运行路由协议,设置路由表;②检测到拥塞时,合理丢弃IP分组;③根据收到的IP分组的目的IP地址,将其转发到合适的输出线路上。

你可能感兴趣的:(#,计算机网络,计算机网络,网络,网络协议)