网络层

网络层基本概念

在这里插入图片描述

  • 主机: 配有IP地址, 也要进行路由控制的设备;
  • 路由器: 既配有IP地址, 又能进行路由控制;
  • 节点: 主机和路由器的统称;

网络层主要协议

  • IP:互联网协议,是网络层无可争议的核心。它定义了数据包格式(IP数据报)和寻址方案。IP协议是无连接、不可靠的。
  • ICMP:互联网控制报文协议。用于传递网络控制信息和错误报告。是网络故障诊断的关键工具。常用工具:ping(使用ICMP回显请求/应答测试连通性)、traceroute(跟踪数据包路径)。
  • 路由协议内部网关协议:在同一个自治系统内部使用,如RIP、OSPF。外部网关协议:在不同自治系统之间使用,最主要的就是BGP,它是“互联网的骨架协议”,维护着全球网络可达性的路由表。
  • ARP地址解析协议。严格来说属于链路层,但它是IP层能工作的关键辅助。负责将IP地址解析为本地网络的MAC地址

网络层的关键设备:路由器

  • 核心功能路由选择分组转发
  • 工作流程: 1.收到一个数据包,2.提取目标IP地址,3.查询路由表,根据“最长前缀匹配”原则,决定数据包的下一跳地址出口接口,4.将数据包转发到下一跳。
  • 路由器连接不同的网络,是互联网得以互联的核心设备。

网络层的核心思想

通过全局统一的逻辑地址(IP),在由无数路由器构成的网状结构中,为每个数据包动态地、智能地找到一条通往目的地的路径,从而将全世界所有网络编织成一个单一的、虚拟的、巨大的通信平台——互联网

对比网络层与传输层

在这里插入图片描述

IP协议

IP 是 互联网协议 的简称,是作为数据在网络中可靠传输的基础而设计的,实现了设备间寻址路由的关键功能。它提供了一种无连接的、尽力而为的数据包传输服务。IP是互联网的基石。它的设计哲学是简洁高效,专注于完成核心任务,而将可靠性、顺序控制等复杂问题交由上层(主要是传输层的TCP)处理。

IP核心任务

IP协议主要解决两大根本问题:

  • 寻址:如何唯一地标识互联网上数以亿计的设备
  • 路由与转发:如何将一个数据包从源设备跨越多个网络,最终送到目标设备

IP协议头格式

在这里插入图片描述

  • 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4
  • 4位头部长度(header length): 单位是4字节, . 4位表示最大的数字是15, 因此IP头部最大长度是60字节.
  • 8位服务类型(Type Of Service): 3位优先权字段(已经弃用), 4位TOS字段, 和1位保留字段(必须置为0). 4位TOS分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只能选择⼀个. 对于ssh/telnet这样的应用程序, 最小延时比较重要; 对于ftp这样的程序, 最大吞吐量比较重要.
  • 16位总长度(total length): IP数据报整体占多少个字节
  • 16位标识(id): 唯⼀的标识主机发送的报文. 如果IP报文在数据链路层被分片了, 那么每⼀片里面的这个id都是相同的.
  • 3位标志字段: 第1位保留(保留的意思是现在不用, 但是还没想好说不定以后要用到). 第2位置为1表示禁止分片, 这时候如果报文长度超过MTU, IP模块就会丢弃报文. 第3位表示"是否还有更多分片", 如果分片了的话, 最后⼀个分片置为0, 其他是1. 类似于⼀个结束标记.
  • 13位分片偏移(framegament offset): 是分片相对于原始IP报文开始处的偏移. 其实就是在表示当前分片在原报文中处在哪个位置. 实际偏移的字节数是这个值 乘 8 得到的. 因此, 除了最后⼀个报文之外, 其他报文的长度必须是8的整数倍(否则报文就不连续了).
  • 8位生存时间(Time To Live, TTL): 数据报到达目的地的最大报文跳数. ⼀般是64. 每次经过⼀个路由, TTL = TTL - 1, ⼀直减到0还没到达, 那么就丢弃了. 这个字段主要是用来防止出现路由循环
  • 8位协议: 表示上层协议的类型
  • 16位头部校验和: 使用CRC进行校验, 来鉴别头部是否损坏
  • 32位源地址和32位目标地址: 表示发送端和接收端.
  • 选项字段(不定长, 最多40字节):

网段划分

IP地址分为两个部分:网络号 + 主机号

  • 网络号: 保证相互连接的两个网段具有不同的标识;
  • 主机号: 同⼀网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号
    在这里插入图片描述
  • 同一子网其实就是把网络号相同的主机放到⼀起.
  • 如果在子网中新增⼀台主机, 则这台主机的网络号和这个子网的网络号⼀致, 但是主机号必须不能和子网中的其他主机重复

通过合理设置主机号和网络号, 就可以保证在相互连接的网络中, 每台主机的IP地址都不相同

手动管理子网内的IP,非常麻烦

  • DHCP, 能够自动的给子网内新增主机节点分配IP地址, 避免了手动管理IP的不便.
  • ⼀般的路由器都带有DHCP功能. 因此路由器也可以看做⼀个DHCP服务器.

五类IP

过去提出一种划分网络号和主机号的方案:将所有的IP地址划分为五类
在这里插入图片描述

各类IP地址范围:

  • A类 0.0.0.0到127.255.255.255
  • B类 128.0.0.0到191.255.255.255
  • C类 192.0.0.0到223.255.255.255
  • D类 224.0.0.0到239.255.255.255
  • E类 240.0.0.0到247.255.255.255

五类IP的局限性

  • A类网络灾难:
  1. 一个A类网络(如10.0.0.0/8)拥有1677万个主机地址。
  2. 但现实中,没有任何一个组织需要如此庞大的单一网络。将这样一个网络分配给一个公司或大学,意味着超过99.9%的地址被闲置,无法被互联网其他部分使用。
  • C类网络不足:
  1. 一个C类网络(如192.168.1.0/24)只有254个主机地址。
  2. 对于需要300、500甚至上千台主机的中小型组织来说,一个C类网络不够用,申请多个C类网络又会导致管理复杂和路由条目增加。
  • B类网络的尴尬:
  1. 一个B类网络(如172.16.0.0/16)有6.5万个主机地址。
  2. 许多组织的主机规模在几百到几千台,申请一个B类网络会造成数万个地址的浪费。但由于没有介于B类和C类之间的选项,它们被迫申请B类网络,加剧了地址浪费。
  • 固定的网络边界:
  1. A类:前8位是网络位(掩码 255.0.0.0 或 /8)
  2. B类:前16位是网络位(掩码 255.255.0.0 或 /16)
  3. C类:前24位是网络位(掩码 255.255.255.0 或 /24)

这种分类方式完全无法适应不同组织的实际需求。一个拥有2000台主机的组织必须使用一个浪费了6.3万个地址的B类网络,而无法自定义一个掩码长度更合适的网络(例如 /21,提供2046个地址)。

  • 不支持可变长子网划分
    在有类别时代,一个组织内部的所有子网必须使用相同的子网掩码。
  1. 例如,一个拥有B类地址172.16.0.0/16的公司,其总部可能需要500台主机,而每个小分支机构可能只需要50台。
  2. 在传统方式下,所有子网(包括总部和分支机构)都必须划分成相同大小的子网。为了满足总部500台主机的需求,所有子网都会变得很大,导致在分支机构中产生大量地址浪费。

这是导致IPv4地址提前耗尽的最主要原因。

  • IP地址的绝对数量限制
  1. IP地址(IPv4)是⼀个4字节32位的正整数. 那么⼀共只有 2的32次方个IP地址, 大概是43亿左右. 而TCP/IP协议规定, 每个主机都需要有⼀个IP地址.
  2. 实际上, 由于⼀些特殊的IP地址的存在, 数量远不足43亿; 另外IP地址并非是按照主机台数来配置的, 而是每⼀个网卡都需要配置⼀个或多个IP地址.

为了克服上述所有局限性,互联网工程界引入了一系列革命性的技术和理念:

  1. 子网划分:在组织内部,允许将一个A/B/C类网络进一步划分为更小的子网,提高内部地址利用率。但这没有解决网络间的浪费问题。
  2. CIDR:最终的解决方案,实现无类别域间路由。完全废除A/B/C类的固定边界。任意前缀长度:网络掩码可以是任意长度(/8到/30等),使用CIDR表示法(如 192.168.0.0/22)。路由聚合:可以将多个连续的前缀(如4个/24)聚合成一个更短的前缀(如一个/22)进行通告,极大地压缩了全球路由表的规模。按需分配:ISP可以根据客户的实际需求,精确地分配一个合适大小的地址块(例如 /26, /27),从根本上解决了地址浪费问题。
  3. NAT:作为一种“缓兵之计”,通过地址复用(一个公网IP供多个私网设备使用)极大地减缓了公有IPv4地址耗尽的速度。
  4. IPv6:从根源上解决问题,提供近乎无限的地址空间。IPv6并不是IPv4的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6⽤16字节128位来表示⼀个IP地址; 但是目前IPv6还没有普及;

网段划分的核心:子网掩码

子网掩码用来明确区分一个IP地址中,哪部分是“网络标识”,哪部分是“主机标识”。

  • 格式:与IP地址相同,32位二进制,由连续的1和连续的0组成。
  • 表示法1. 点分十进制:255.255.255.0,2. CIDR前缀长度(更常用):/24 (表示前24位是网络位)
  • 关键规则:子网掩码中的 1 对应的IP地址部分就是网络位。子网掩码中的 0 对应的IP地址部分就是主机位
  • 例如:192.168.1.100/24
    IP地址: 11000000.10101000.00000001.01100100
    子网掩码 /24: 11111111.11111111.11111111.00000000 (即 255.255.255.0)
    结论:前24位(192.168.1)是网络号,后8位(.100)是主机号。所有192.168.1.x(x从1到254)的设备都在同一个网段,可以直接通信。

如何进行网段划分

在这里插入图片描述

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐