// //
//

Loading

网络层 - IP 协议了解一下

网络层主要提供寻址,起到路由的功能。而 IP 协议就是为了实现该功能而设计的。

IP 协议

IP 协议的特性

  • 工作在网络层
  • 面向无连接的协议
  • 具有单独处理包的能力
  • 分层的地址
  • 不可靠,尽力而为的传送
  • 独立的介质(不关心物理层的实现)
  • 多版本:IPV4 / IPV6

A 为发送方,B 为接受方

面向连接:A 先和 B 沟通,是否可以接受数据。

面向无连接:无论 B 是否能接受协议,都会发送给 B.

IPv4 Header

ip-v4-datagram-header

  • Version:4 bits. 0100 - ipv4, 0110 - ipv6

  • HLEN - Header Length: 4 bits. 描述 IP 头部长度. 可以看到一行为 32 bits = 4 byte.

    • 最小值为 1001 - 表示长度是 5,共 5 行:所以最小 Header 字节为 5 * 4 byte = 20 byte / 字节。
    • 最大值为 1111 - 长度 15 : 15 * 4 byte = 60 bytes / 字节。
    • 所以 IPV4 Header最小 20 字节(到 destination IP 结束),最大 60 字节(到 Option 结束) 。
  • TOS - Type of Service: 8 bits. 在 Qos 中经常使用.

    • 前 3 bit,定义数据的优先级,数值越大,优先级越高
    • 后 5 bit, DTRCO 定义时延,吞吐量,可靠性等。
  • Total Length:16bits. IP 数据包的总大小(Header + Data).

    • 2^16 - 1 = 65535, 单位为 Byte. 所以共 65535 字节。
    • 最大承载数据包为: 65535 - 40 = 65495 字节。
  • Identification : 16 bit,在分片时和 Flags 和 Fragment Offset 结合使用。

    • 由于路由器对数据包大小的接收能力不同或数据量过大时,会将数据包拆成多个数据包进行发送。
    • 为了在重组时,将原有的数据包组合到一起,所以需要该字段。
  • Flags: 3 bits. 用于表示数据包是否发送完成。

    • 第一 bit 不可用。
    • 第二 bit 为 DF (Don't Fragment)是否分片。DF =1, 不允许分片。
    • 第三 bit 为 MF (More Fragments)表示是否是最后一个分片。MF = 1,表示不是最后一个分片,数据没发完。
  • Fragment Offset:13bits. 表示该数据包在分片中的位置,接收端通过该字段来还原数据包。

    • 单位为 8 byte.(因为前 bit 被 Flag 占用了) 如果发生数据的大小超过 MTU(以太网1500 bytes)必须分片。
    • 比如在 MTU 为 2500 Byte 的链路上传输 4500 Byte 的数据包和头部大小为 20 Byte 就需要被分片。
      • 第一个分片,Header 为 20 Byte,数据为 2480 Byte. MF=1 表示不是最后一个分片,DF = 0 表示是分片数据。offset 为 0.
      • 第二个分片,Header 为 20 Byte,数据为 2020 Byte. MF=0 表示最后一个分片。DF = 0,表示是分片数据。offset 为 2480 Byte / 8 Byte = 310.
    • 更多分片例子:
  • Time to Live(TTL): 8 bits. 0 - 255

    • 只要穿过路由器, TTL 就减一,不允许减到 0,到 0 则回复已经超时,把包丢掉 .
    • 防止出现环路的情况,占用带宽,资源等。
  • Protocol: 8 bits, 标识上层的协议。

    • 1 ICMP
    • 2 IGMP
    • 6 TCP
    • 17 UDP
    • 88 IGRP
    • 89 OSPF
  • Header Checksum: 16 bit,用于校验 IP 头部正确性。由于 TTL 一直在变化。所以该值也会一直变化。

  • 源和目 IP 地址

  • Options,用于测试或填充字段。

    • IP 报头必须要为 32 bit 的整数倍。

需要注意的是,在第一个路由器接受到的数据包大小超过 MTU 时,会将数据包拆分,之后在其他路由器上继续传递,然后在终端上进行重新组装。

IP 地址

每一个设备必须都有一个唯一的地址,并且该地址由两部分组成 网络地址主机地址。对应可以理解成网络位表示一个大致的局域,而主机位表示该区域下具体的设备。举个现实的例子,在发送快递时,网络位表示的就是中国北京,而主机位表示的是具体哪个区,比如朝阳区等等更细致的信息。

IP 地址的分类:

A 类

0xxxxxxx (0-126) xxxxxxxx xxxxxxxx xxxxxxxx
网络位 主机位 主机位 主机位

B 类

10xxxxxx (128 - 191) xxxxxxxx xxxxxxxx xxxxxxxx
网络位 网络位 主机位 主机位

C 类

110xxxxx (192 - 223) xxxxxxxx xxxxxxxx xxxxxxxx
网络位 网络位 网络位 主机位

组播地址:

1110xxxx (224-239) xxxxxxxx xxxxxxxx xxxxxxxx
无要求 无要求 无要求 无要求

保留地址(目的是科研等):

1111 xxxx(240-254)

不能给主机使用的地址,特殊 IP 地址

网络号 主机号 含义
全 0 主机号 ID 本网络上的某个主机
网络号 ID 全 1 定向广播地址,向网络号内的范围发送广播
网络号 ID 全 0 某个网络的网络号/网络地址,用于表示范围
全 1 全 1 本地网络的广播地址, 接受范围是所有 IP
全 0 全 0 本网络上的某个主机

公有地址:绝大多数的 A,B,C 三类地址是公有地址。

私有地址:不需要申请直接使用,可作为公司的内网地址

10.0.0.0 ~ 10.255.255.255

172.16.0.0 ~ 172.31.255.255

192.168.0.0 ~ 192.168.255.255

公有地址是运营商拥有的IP地址。
私有地址是不属于公有地址的,除本机环回口地址外的地址。
私有地址不可以访问公有地址。

子网掩码

子网掩码是一个 32 比特的数字,与 IP 地址一一对应,用来标识 IP 地址中哪些是网络位,哪些是主机位。

具体的方法:子网掩码中的 1 对应 IP 地址中的网络号和子网号,子网掩码中的 0 对应 IP 地址中的主机号

子网划分:借用主机位当成网络位去划分

为什么要进行子网划分:

  • 安全性难以保证(通过路由器隔离广播)
  • 浪费 IP 地址(通过路由器的端口自定义网络空间)
  • 大量的广播帧浪费资源

交换机所连接的网络在同一网段。

冲突域:交换机的每一个端口同时只能选择接受或者发生数据,对应接口之间叫冲突域。

广播域:交换机收到广播帧或者未知的单播帧时会泛洪,广播给对应的所有接口。但广播帧不会过路由器,也就是跨网段。

例一: 某公司有四个部门,分别是 A,B,C,D,每个部门需要 20 个 IP 地址,该公司申请了一个 C 类地址块, 192.168.1.0/24,请给出合理的子网划分方案

按照主机位数划分:一共四个部分,每个部分最多 20 台主机

2^n - 2 >= 20, n = 5

原来的主机位为 8 位,改变后的网络只需要 5 位,所以剩下的 3 位为子网络位,划分后的 8 个网络为:

11000000.10101000.00000001.000|00000:192.168.1.0/27
11000000.10101000.00000001.001|00000:192.168.1.32/27
11000000.10101000.00000001.010|00000:192.168.1.64/27
11000000.10101000.00000001.011|00000:192.168.1.96/27
11000000.10101000.00000001.100|00000:192.168.1.128/27
11000000.10101000.00000001.101|00000:192.168.1.160/27
11000000.10101000.00000001.110|00000:192.168.1.192/27
11000000.10101000.00000001.111|00000:192.168.1.224/27

对于第一个网络来说:
网络地址为: 192.168.1.0/27
可用地址为: 192.168.1.1/27 ~ 192.168.1.30/27
广播地址为: 192.168.1.31/27

例二:某公司,A,B,C,D 四个部门,A 部门需要 100 个 IP 地址,B 部门需要 50 个 IP 地址,C 和 D 部门需要 25 个 IP 地址,现在公司申请了一个 C 类地址块,192.168.2.0/24.请给出合理的子网划分方案?

C 类地址一共能划分 126 主机 > 100 + 50 + 25 + 25, 可以划分

原网络如下:

192.168.2.0/24
11000000.10101000.00000010.00000000
11111111.11111111.11111111.00000000

第一次划分:
根据主机数量进行划分:A 需要 100 个 IP,2^n-2>100 ,n=7,划分后的网络如下:

11000000.10101000.00000010.0|0000000
11111111.11111111.11111111.1|0000000

剩下一个主机位,使该主机位成为新的子网络位

11000000.10101000.00000010.0|0000000:192.168.2.0/25 
11000000.10101000.00000010.1|0000000:192.168.2.128/25 

拿出第一个网络分给 A,剩下的网络 192.168.2.128/25,继续分配

第二次划分:
B 需要 50 个网络,2^n-2>50 ,n=6,划分后的网络如下:

11000000.10101000.00000010.10|000000
11111111.11111111.11111111.11|000000

又剩下一个主机位,使该主机位成为新的子网络位

11000000.10101000.00000010.10|000000:192.168.2.128/26
11000000.10101000.00000010.11|000000:192.168.2.192/26

拿出第一个网络分给 B,剩下的网络 192.168.2.192/26
,继续分配

第三次划分:
B 需要 25 个网络,2^n-2>25 ,n=5,划分后的网络如下:

11000000.10101000.00000010.110|00000
11000000.10101000.00000010.111|00000

又剩下一个主机位,使该主机位成为新的子网络位

11000000.10101000.00000010.110|00000:192.168.2.192/27
11000000.10101000.00000010.111|00000:192.168.2.224/27

将剩下的两个网络分给 C 和 D

例三:跨网段的划分

首先确定共需要 8 个网络。每台路由器之间为一个网络(主机数为 2),共 4 个。右边的路由器单独又有一个网络,主机数为 50

然后根据主机数量划分,50 个 IP 地址,2^n-2>50 ,n=6。需要的网络主机位为 6

待划分的网络为:

172.16.32.0/20
10101100.00010000.0010|0000.00000000
11111111.11111111.1111|0000.00000000

由于需要 6 个主机位,所以从原网络中的 12 个主机位中使用 6 个当主机位,剩下的 6 个位置位网络位
10101100.00010000.00100000.00|000000
11111111.11111111.11111111.11|000000

划分后的新网络为:
10101100.00010000.00100000.00|000000:172.16.32.0/26
10101100.00010000.00100000.01|000000:172.16.32.64/26 
10101100.00010000.00100000.10|000000:172.16.32.128/26
10101100.00010000.00100000.11|000000:172.16.32.192/26
10101100.00010000.00100001.00|000000:172.16.33.0/26
10101100.00010000.00100001.01|000000:172.16.33.64/26
10101100.00010000.00100001.10|000000:172.16.33.128/26
.....................................................
.....................................................
10101100.00010000.00101111.11|000000:172.16.47.192/26

划分后的网络总数为 2^6 = 64 个网络,每个网络中有 2^6 -2 = 62 个IP

然后从 64 个网络中拿出 4 个给需要 50 台主机的网络,然后再拿出一个网络需要 2 个主机 的 4 个网络

从 64 个网络中拿出一个网络:
10101100.00010000.00100001.00|000000:172.16.33.0/26
该网络有 6 个主机位,而现在每个网络中需要 2 个主机位,2^n-2>=2 ,n=2 所以主机位为 2,新的子网络位为 4

再次划分出的网络为:
10101100.00010000.00100001.000000|00:172.16.33.0/30 
10101100.00010000.00100001.000001|00:172.16.33.4/30 
10101100.00010000.00100001.000010|00:172.16.33.8/30 
10101100.00010000.00100001.000011|00:172.16.33.12/30 
10101100.00010000.00100001.000100|00:172.16.33.16/30
.....................................................
.....................................................
10101100.00010000.00100001.001111|00:172.16.33.60/30

共需要 4 个网络,从划分从 16 个网络中取出 4 个

最后余下 59 个 网络,每个网络中有 62 可用的 IP
和 12 个网络,每个网络中有 2 个可用的 IP

posted @ 2020-07-07 10:38  来份锅包肉  阅读(910)  评论(0编辑  收藏  举报