4

详解网络层-网络层概述和编址【王道计算机网络笔记】

 1 year ago
source link: https://blog.51cto.com/u_15767241/5978811
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Table of Contents

主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层的传输单位是数据报,数据报是一个比较长的数据,分组是对数据报进行切割得到的一部分
功能:

  • 路由选择与分组转发(最佳路径)
  • 异构网络互联。4G,wifi,校园网等网络之间可以通信
  • 拥塞控制。如果所有结点都来不及接收分组,而要丢弃大量分组的话,网络就处于拥塞状态,因此要采取一定措施,缓解这种拥塞

IP数据报格式

详解网络层-网络层概述和编址【王道计算机网络笔记】_子网掩码

IP数据报的首部分为固定部分和可变部分,固定部分占20B

  • 版本指明使用IPv4/IPv6

  • 首部长度:单位是4B,占用4位,可以从0000到1111,如果为1111,对应十进制数15,15×4B=60B,即IP数据报的首部为60B,其中固定部分20B,可变部分40B。因为固定部分为20B,因此最小为5,对应二进制数0101。
    可以看到可变部分最后有一个填充部分,为了把可变部分填充为4B的整数倍,否则无法用首部长度表示

  • 区分服务:指示期望获得那种类型的服务

  • 总长度:首部长度+数据长度,单位是1B,占16位,最大取值对应十进制数为216−1=655352^{16}-1=65535216−1=65535

  • 标识、标志、片偏移后面讲

  • 生存时间(TTL):IP分组的保质期,经过一个路由器-1变成0则丢弃。确保分组不会永远在网络中循环

  • 协议:数据部分使用的协议
    详解网络层-网络层概述和编址【王道计算机网络笔记】_子网_02

  • 首部检验和:只校验分组的首部,而不校验数据部分,不重要

  • 源地址和目的地址:各占32位

  • 可选字段:0~40B,用来支持排错、测量以及安全等措施

  • 填充:全0,把首部不成4B的整数倍

IP数据报分片

最大传送单元MTU:数据链路层数据帧可封装数据的上限,以太网的MTU是1500字节,也就是下图的数据部分

详解网络层-网络层概述和编址【王道计算机网络笔记】_子网_03
  • 标识:同一数据报的分片使用同一标识。使分片知道自己是哪一家的
  • 标志:占三位,只有后两位有意义
    中间位DF:DF=1,(满足)禁止分片;DF=0,允许分片
    最低位MF:MF=1,后面还有分片;MF=0,代表最后一片/没分片
  • 片偏移:指出较长分组分片后,某片在原分组中的相对位置,以8B为单位。
    占13位,如0……01,换成十进制即为1,1×8B=8B1\times 8B=8B1×8B=8B,也就是说这个分片从数据报的数据部分8B开始往后
    除了最后一个分片,每个分片一定是8B的整数倍

总长度占16字节,单位是1B
片偏移占13字节,单位是8B
首部长度占4字节,单位是4B

详解网络层-网络层概述和编址【王道计算机网络笔记】_子网_05

定义需要分片为长度不超过1420B的数据报分片

因为每一个分片都需要携带相同长度的首部,因此每个分片最大数据部分为1400B,
第一个分片数据部分为1400B,第二个1400B,第三个1000B
详解网络层-网络层概述和编址【王道计算机网络笔记】_子网_06

然后计算片偏移,第一个分片显然是从0B-1399B,因此片偏移为0;第二个分片从1400B-3799B,片偏移为1400B8B=175\frac{1400B}{8B}=1758B1400B​=175,类似地,第三个分片片偏移为为350

详解网络层-网络层概述和编址【王道计算机网络笔记】_子网掩码_07

]

IPv4地址

分类的IP地址

IP地址={<网络号>,<主机号>}
11011111.00000001.00000001.00000001=223.1.1.1(点分十进制)

详解网络层-网络层概述和编址【王道计算机网络笔记】_子网掩码_08

上图共有6个逻辑上的网络
每个路由器总是有两个或两个以上IP地址,路由器的每个接口都会有不同网络号的IP地址

最前面固定的几位可以看做标志位

  • 特殊IP地址

环回地址就是自己给自己发,检测设备是否可以正确的接受发送数据、网络层是否能正常工作等

  • 常用的三种类别IP地址的使用范围
详解网络层-网络层概述和编址【王道计算机网络笔记】_IP_11

A的最大可用网络数要-2,减去的是全0和127(环回地址);每个网络中的最大主机数也要-2,减去全0和全1
B的最大可用网络数要-1,减去的是128.0不可指派,也就是全0;每个网络中的最大主机数也要-2,减去全0和全1
C的最大可用网络数要-1,减去的是192.0.0不可指派,也就是全0;每个网络中的最大主机数也要-2,减去全0和全1

  • 私有IP地址
详解网络层-网络层概述和编址【王道计算机网络笔记】_子网_12

网络地址转换NAT

网络地址转换NAT:在专用网连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫NAT路由器,它至少有一个有效的外部全球IP地址

详解网络层-网络层概述和编址【王道计算机网络笔记】_子网掩码_13
详解网络层-网络层概述和编址【王道计算机网络笔记】_IP_14

如果此时A要与B通信,A发出一个数据报,那么该数据报的源地址就是192.168.0.3,目的地址是213.18.2.4,端口号(假设)是30000,这时数据报到NAT路由器处,根据NAT转换表,需要将LAN端映射成WAN端,即该数据报的源地址就是172.38.1.5,目的地址是213.18.2.4,端口号是40001

端口号可以表明主机内的某一个进程

同理如果B向A发送一个数据报,那么该数据报的源地址就是213.18.2.4,目的地址是172.38.1.5,端口号(假设)是40001,这时数据报到NAT路由器处,根据NAT转换表,需要将WAN端映射成LAN端,即该数据报的源地址就是213.18.2.4,目的地址是192.168.0.4,端口号是30001

子网划分与子网掩码

分类IP地址的缺点:

  • IP地址空间的利用率有时很低(某公司申请了一个B类网络,但是可能只有几台主机,但认为自己公司未来可能扩张,因此不想申请C类网络,但是很多IP地址实际上没用上,因此利用率很低)
  • 两级IP地址不够灵活(单位要在一个新的地方马上开通一个新的网络,显然这是需要时间的)
详解网络层-网络层概述和编址【王道计算机网络笔记】_子网掩码_15

申请到一个网络后,划分子网是自己的选择,不需要向运营商申请。虽然划分了一个网络,但是对外仍表现为一个网络,即外面的网络看不见本网络内子网的划分

子网号能否全0全1要看情况,主机号不能全0全1,全0就是本网络,全1就是广播

假设此时有一个外部网络的数据报要发给145.13.3.10

子网掩码是一个与P地址相对应的、长32bit的二进制串,它由一串1和跟随的一串0组成。其中,1对应于IP地址中的网络号及子网号,而0对应于主机号。计算机只需将IP地址和其对应的子网掩码逐位“与”(逻辑AND运算),就可得出相应子网的网络地址。

例如:已知IP地址是141.14.72.24,子网掩码是255.255.192.0,求网络地址
255是8个1,0是8个0,因此子网地址是141.14.xxx.0
192=11000000,72=01001000,与的结果是01000000即64
因此子网网址为141.14.64.0

如果子网掩码是255.255.224.0,求网络地址
结果一样141.14.64.0

但第一个子网掩码占了18位,剩下14位都是主机号,第二个子网掩码占了19位,剩下13位都是主机号

例:某主机的IP地址为180.80.77.55,子网掩码为255.255.252.0。若该主机向其所在子网发送广播分组,则目的地址是

子网网络地址为180.80.xxx.0
252对应11111100,这里可以看出子网掩码有8+8+6=22位,77对应01001101,取前6位进行与运算,得到01001100,对应76,因此子网掩码是180.80.76.0
现在需要进行广播,因此主机号全是1,之前说网络号占22位,剩下10位都是主机号,因此加上之前算的子网掩码后6位,即为180.80.010011 11.255,因此就得到了180.80.79.255

要注意子网掩码是11111111.11111111.11111100.00000000,因此第三部分被划分成了两块,前6位是网络号,后两位是主机号

使用子网掩码的情况

  • 一台主机在设置IP地址信息的同时,必须设置子网掩码
  • 同属于一个子网的所有主机及路由器的相应端口,必须设置相同的子网掩码
  • 路由器的路由表中,所包含信息的主要内容必须有目的网络地址、子网掩码、下一跳地址

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

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

无分类编址CIDR

无分类域间路由选择即CIDR

  • 消除了传统A、B、C类地址划分

    详解网络层-网络层概述和编址【王道计算机网络笔记】_子网_17

    CIDR记法:IP地址后加上/,然后写上网络前缀(可以任意长度)的位数,e.g.128.14.32.0/20

  • 融合子网地址与子网掩码,方便子网划分
    CIDR把网络前缀相同的连续的IP地址组成一个CIDR地址块
    128.14.35.7/20是某CIIDR地址块中的一个地址
    变成二进制:10000000 00001110 00100011 00000111
    最小地址:10000000 00001110 00100000 00000000
    最大地址:10000000 00001110 00101111 11111111
    地址块:128.14.32.0/20
    地址掩码(子网掩码):11111111 11111111 11110000 00000000

将多个子网聚合成一个较大的子网,叫做构成超网,或路由聚合
方法:将网络前缀缩短

详解网络层-网络层概述和编址【王道计算机网络笔记】_子网_18

例如,在如图所示的网络中,如果不使用路由聚合,那么R1的路由表中需要分别有到网络1和网络2的路由表项。不难发现,网络1和网络2的网络前缀在二进制表示的情况下,前16位都是相同的,第17位分别是0和1,并且从R1到网络1和网络2的路由的下一跳皆为R2。若使用路由聚合,在R1看来,网络1和网络2可以构成一个更大的地址块206.1.0.0/16,到网络1和网络2的两条路由就可以聚合成一条到206.1.0.0/16的路由。

详解网络层-网络层概述和编址【王道计算机网络笔记】_IP_19

例:某路由表中有转发接口相同的4条路由表项, 其目的网络地址分别为35.230.32.0/21、35.230.40.0/21、 35.230.48.0/21、 35.230.56.0/21, 将该4条路由聚合后的目的网络地址为,35.230.32.0/19

详解网络层-网络层概述和编址【王道计算机网络笔记】_IP_20
  • 最长前缀匹配

在使用CIDR时,查找路由表可能得到几个匹配结果(跟网络掩码按位与),应选择具有最长网络前缀路由。前缀越长,地址块越小,路由越具体

例如:有三个网络地址206.0.68.0/22、206.0.71.128/25、206.0.71.0/25,现发出一个数据报,目的地址为206.0.71.130
与第一个网络的子网掩码进行与运算,结果为206.0.68.0/22,可以发送给第一个网络
与第二个网络的子网掩码进行与运算,结果为206.0.71.128/25,可以发送给第二个网络
与第三个网络的子网掩码进行与运算,结果为206.0.71.128/25,不可以发送给第三个网络
我们得到可以发给一、二两个网络,但是根据最长前缀匹配,显然第二个网络匹配了25位,长于第一个网络22位,因此发给第二个网络


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK