文章目录
网络层
网络层基本概念

- 主机: 配有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类网络灾难:
- 一个A类网络(如10.0.0.0/8)拥有1677万个主机地址。
- 但现实中,没有任何一个组织需要如此庞大的单一网络。将这样一个网络分配给一个公司或大学,意味着超过99.9%的地址被闲置,无法被互联网其他部分使用。
- C类网络不足:
- 一个C类网络(如192.168.1.0/24)只有254个主机地址。
- 对于需要300、500甚至上千台主机的中小型组织来说,一个C类网络不够用,申请多个C类网络又会导致管理复杂和路由条目增加。
- B类网络的尴尬:
- 一个B类网络(如172.16.0.0/16)有6.5万个主机地址。
- 许多组织的主机规模在几百到几千台,申请一个B类网络会造成数万个地址的浪费。但由于没有介于B类和C类之间的选项,它们被迫申请B类网络,加剧了地址浪费。
- 固定的网络边界:
- A类:前8位是网络位(掩码 255.0.0.0 或 /8)
- B类:前16位是网络位(掩码 255.255.0.0 或 /16)
- C类:前24位是网络位(掩码 255.255.255.0 或 /24)
这种分类方式完全无法适应不同组织的实际需求 。一个拥有2000台主机的组织必须使用一个浪费了6.3万个地址的B类网络,而无法自定义一个掩码长度更合适的网络(例如 /21,提供2046个地址)。
- 不支持可变长子网划分
在有类别时代,一个组织内部的所有子网必须使用相同的子网掩码。
- 例如,一个拥有B类地址172.16.0.0/16的公司,其总部可能需要500台主机,而每个小分支机构可能只需要50台。
- 在传统方式下,所有子网(包括总部和分支机构)都必须划分成相同大小的子网。为了满足总部500台主机的需求,所有子网都会变得很大,导致在分支机构中产生大量地址浪费。
这是导致IPv4地址提前耗尽的最主要原因。
为了克服上述所有局限性,互联网工程界引入了一系列革命性的技术和理念:
- 子网划分:在组织内部,允许将一个A/B/C类网络进一步划分为更小的子网,提高内部地址利用率。但这没有解决网络间的浪费问题。
- CIDR :最终的解决方案,实现无类别域间路由。完全废除A/B/C类的固定边界。任意前缀长度 :网络掩码可以是任意长度(/8到/30等),使用CIDR表示法(如 192.168.0.0/22)。路由聚合 :可以将多个连续的前缀(如4个/24)聚合成一个更短的前缀(如一个/22)进行通告,极大地压缩了全球路由表的规模。按需分配:ISP可以根据客户的实际需求,精确地分配一个合适大小的地址块(例如 /26, /27),从根本上解决了地址浪费问题。
- NAT:作为一种"缓兵之计",通过地址复用(一个公网IP供多个私网设备使用)极大地减缓了公有IPv4地址耗尽的速度。
- 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)的设备都在同一个网段,可以直接通信。
如何进行网段划分
