news 2026/5/14 9:50:05

【Linux网络编程】8. 网络层协议 IP

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Linux网络编程】8. 网络层协议 IP

文章目录

  • 一、IP 协议
    • 1、基本概念
    • 2、IP 协议头
    • 3、网段划分
    • 4、特殊 IP 地址
    • 5、IPv4 地址数量限制
    • 6、私有 IP 与公网 IP、NAT 技术
    • 7、路由与路由表

一、IP 协议

网络层核心作用:用 IP 地址寻址,为数据包规划路由,实现跨网段的端到端转发。

1、基本概念

  • 主机:配有 IP 地址,但不做路由转发的设备(比如电脑、手机)。
  • 路由器:既配有 IP 地址,又能根据路由表转发数据包的设备,是网络层的核心转发节点。
  • 节点:主机和路由器的统称,只要参与 IP 通信、有 IP 地址的设备都算节点。

2、IP 协议头

IP 头最小 20 字节,最大 60 字节,默认用 20 字节。

  • 4 位版本号:标识 IP 协议版本,IPv4 固定为4
  • 4 位头部长度:单位为 32bit(4 字节),表示 IP 头长度,最大 15×4=60 字节
  • 8 位服务类型 (TOS):用来指定传输偏好,比如最小延时、最大吞吐量等(四选一)
  • 16 位总长度:整个 IP 数据报的字节数(含头部 + 数据)
  • 16 位标识 (id):同一 IP 报文的所有分片,ID 都相同,用来重组
  • 3 位标志:第 2 位 = 1 表示禁止分片;第 3 位 = 1 表示后面还有更多分片
  • 13 位分片偏移:表示当前分片在原报文中的位置,单位为 8 字节
  • 8 位 TTL:生存时间,每经过一个路由器减 1,减到 0 就丢弃,防止路由循环
  • 8 位协议:标识上层协议类型(如 TCP=6、UDP=17)
  • 16 位头部校验和:校验 IP 头部是否损坏,防止传输错误
  • 32 位源 / 目的 IP:发送方和接收方的 IP 地址
  • 选项字段:可选扩展字段,最多 40 字节,一般用不到

IPv4 头就是用版本、长度、TTL、IP 地址等基础信息标识报文,用 ID、标志、分片偏移处理分片重组,用校验和防损坏。

3、网段划分

IP 地址的本质
IP 地址 =网络号 + 主机号

  • 网络号:标识网段,不同网段的网络号不同。
  • 主机号:标识同一网段内的主机,同一网段内主机号不能重复。
  • 子网的作用:把网络号相同的主机划到一起,通过路由器实现跨网段通信。

早期的分类方案(A/B/C/D/E 类)

类别地址范围特点
A 类0.0.0.0 ~ 127.255.255.255网络号 7 位,主机号 24 位,地址浪费严重
B 类128.0.0.0 ~ 191.255.255.255网络号 14 位,主机号 16 位,很快被分配完
C 类192.0.0.0 ~ 223.255.255.255网络号 21 位,主机号 8 位,适合小型网络
D 类224.0.0.0 ~ 239.255.255.255多播专用
E 类240.0.0.0 ~ 247.255.255.255保留,用于实验

这种按类划分的方式,因为主机号固定导致大量 IP 地址浪费,所以被 CIDR 取代。

CIDR(无类域间路由)

  1. 引入子网掩码:用 32 位的掩码区分网络号和主机号,高 N 位为 1、低 (32-N) 位为 0。
  2. 计算网络号:IP地址 & 子网掩码得到网络号,和 IP 的 A/B/C 类无关。
  3. 简洁表示法:IP地址/N,N 表示子网掩码的前 N 位为 1,比如140.252.20.68/24表示掩码为255.255.255.0
  4. 子网地址范围:主机号从全 0 到全 1,比如140.252.20.68/24的范围是140.252.20.0 ~ 140.252.20.255

补充:IP 地址自动分配
DHCP 协议可以自动给子网内的主机分配 IP,避免手动管理的麻烦,路由器通常自带 DHCP 服务器功能。

4、特殊 IP 地址

  • 网络号(主机位全 0)
    表示整个网段,不分配给具体主机,比如192.168.1.0/24代表192.168.1.x这个局域网。

  • 广播地址(主机位全 1)
    用于向同一网段内的所有主机发送数据包,比如192.168.1.255/24,同一网段内所有主机都会收到这个包。

  • 环回地址(127.*)
    127开头的地址(最常用127.0.0.1),用于本机进程间通信 / 网络测试,数据包不会经过物理网卡,直接在本机内闭环传输。

5、IPv4 地址数量限制

IPv4 地址的困境

  • IPv4 是32位地址,理论上只有约 43 亿个地址。
  • 实际可用地址更少:特殊地址(网络号、广播地址、保留地址)占用了大量资源。
  • 地址是按网卡而非主机分配,进一步加剧了短缺。
  • CIDR 仅提高了利用率,并未增加地址总数。

三种主流解决方案

  1. 动态 IP 分配(DHCP)
    设备仅在接入网络时才分配 IP,断开后回收复用,缓解地址紧张。
  2. NAT 技术(网络地址转换)
    内网设备共享一个公网 IP 访问外网,用端口区分不同连接,大幅减少公网 IP 的消耗。
  3. IPv6
    采用 128 位地址,地址数量理论上几乎无限,但与 IPv4 不兼容,目前尚未完全普及。

6、私有 IP 与公网 IP、NAT 技术

私有 IP vs 公网 IP

类型范围 / 特点用途
私有 IPRFC1918 规定的三个网段:10.0.0.0/8172.16.0.0/12192.168.0.0/16仅用于局域网内部通信,不能直接在公网路由
公网 IP除上述网段外的 IPv4 地址全球唯一,可直接在互联网上路由

同一局域网内的私有 IP 不能重复,但不同局域网的私有 IP 可以重复(比如多个家庭的路由器都用192.168.1.1)。

NAT(网络地址转换)
NAT 技术解决了内网设备访问公网的问题,核心逻辑是:

  1. 路由器双 IP 设计:路由器有两个 IP——LAN口私有IP(如192.168.1.1,给内网主机用)和WAN口IP(可能是公网 IP,也可能是运营商内网 IP)。
  2. 地址替换:内网主机访问外网时,路由器会把数据包里的源私有 IP + 端口,替换成自己的公网 IP + 端口;外网响应回来时,再根据端口映射换回内网 IP,发给对应主机。
  3. 层级 NAT:家用路由器的 WAN 口可能只是运营商内网 IP,最终要经过运营商路由器的 NAT,才会映射到真正的公网 IP。

关键结论

  • 内网主机靠 NAT 共享一个公网 IP 就能访问外网,大幅节省了公网 IP 资源。
  • 但 NAT 导致内网主机无法被公网直接访问,所以要让服务器程序被外网访问,必须部署在拥有公网 IP 的服务器上(如阿里云、腾讯云主机)。

总结:私有 IP 用于内网,公网 IP 用于外网;NAT 通过地址替换,让多个内网设备共享一个公网 IP 上网。

7、路由与路由表

路由的本质
IP 数据报的传输是“一跳一跳” 问路的过程:

  • 每到一个路由器,就查目的 IP,决定是直接发给目标主机,还是转发给下一个路由器。
  • 数据链路层只负责 “一跳” 内的通信(源 MAC 到目的 MAC),IP 层则负责跨网段的端到端传输。

路由表核心作用
每个主机 / 路由器都维护一张路由表,数据包转发时,就按路由表决定下一跳:

字段含义
Destination目的网络地址
Genmask子网掩码,和目的 IP 做 “与运算” 得到网络号
Gateway下一跳地址(路由器 IP),直接相连的网络则为*
Iface从哪个接口发送数据包
FlagsU表示条目有效;G表示需要转发给网关

转发规则(匹配顺序)

  1. 最长匹配优先:按子网掩码长度从长到短,依次和目的 IP 做 “与运算”,找到匹配的条目。
  2. 直接发送:如果匹配到直连网络(无 G 标志),直接发给目标主机。
  3. 默认路由兜底:如果前面都不匹配,走default(0.0.0.0)条目,转发给默认网关。

例子解析

  • 目的 IP192.168.56.3:匹配到192.168.56.0/24,从eth1接口直接发送。
  • 目的 IP202.10.1.2:前几项都不匹配,走默认路由,从eth0发给网关192.168.10.1

总结:路由表是 IP 层的 “导航地图”,按最长匹配原则找路,找不到就走默认网关,靠 “一跳一跳” 转发到终点。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/14 9:49:18

Windows远程桌面终极解锁方案:RDP Wrapper完整使用指南

Windows远程桌面终极解锁方案:RDP Wrapper完整使用指南 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 还在为Windows家庭版无法使用远程桌面而烦恼吗?RDP Wrapper Library这款开源工具能够…

作者头像 李华
网站建设 2026/5/14 9:43:07

从VGG19到图像向量:PyTorch中灵活提取多层特征构建图像Embedding

1. 为什么需要多层特征提取? 当你用VGG19处理一张猫咪图片时,最后一层输出的1000维向量可能告诉你这是"埃及猫",但中间某层卷积输出的特征图可能记录着胡须纹理或耳朵形状。就像我们辨认朋友时,既需要整体轮廓&#xff…

作者头像 李华