一、IP协议
1.协议格式

(1)4B的协议版本:
IPV4,IPV6.......
(2)4B的头部长度:
描述IP报头最小20字节,最大60字节
(3)8B的服务类型:
最小延时,最大吞吐量,最小成本,最高可靠性
1位保留,3位优先权
(4)16位报文长度:
描述IP报文长度,最小20B,最大64K,IP报文中数据最大是64k-20
(5)16位分片标识:
针对UDP进行数据分片
上层给予的数据过大超过了MTU限制的大小,则该报文就会在网络层被分割成一个个小的分片,封装报头发送处理
分片在对端要重组,该字段标识分片属于哪个报文
(6)13位分片偏移:
以8字节为单位的描述每一个分片在原始报文中的起始位置的相对偏移量,因为偏移量以8B为单位,因此要求每一个分片必须是8的整数倍大小
(7)3位分片标志:
1位保留-必须置0 ,1位描述是否允许分片,1位描述是否原始报文最后一个分片
(8)8位TTL生命周期:
描述的一条报文在网络中所能经过的路由器最大跳数
跳数:每经过一个路由器就会-1,到0时则丢弃报文,为了避免网络环路
(9)8位数据协议类型:
决定了IP报文中的数据所采用的协议,以便于数据解析

(10)16位校验和:
校验数据的一致性
(11)32位源端IP+对端IP:
描述了数据到那个主机来,到那个主机去
(12)0~40字节选项数据
二、路由选择:
每一个路由器都有一个路由器:记录所连接的网络号+子网掩码+连接该网络的网卡
1.使用数据中的目的IP地址,与路由表中的每一项数据的子网掩码相与之后该网络的网络进行比较,如果一致,则表示该主机,就是属于该网络,这时候选择合适的路径进行转发
2.转发的时候,当前我们的大多数网络都使用NAPT网络地址端口转换技术
NAPT技术:组建一个小型私网,让私网中的主机使用同一个对外IP地址进行通信
3.转发的时候会将数据中的源端地址进行转换,转换为自己的对外地址端口

1.网络划分:
IP地址是网络上一台主机的唯一标识,网络中的主机IP地址是不允许冲突的
为了解决分配冲突问题,设计出来了根据不同的网络来分配不同的IP地址
网络号:用于标识IP地址所属的网络,就是网络的唯一标识,每个网络分配的IP地址中,都必须包含这个标识
主机号:用于标识主机在所属网络中的唯一标识,IP地址中除了网络号,剩余的部分,给每个主机实际分配的编号
IP地址的组成:网络号+主机号
为了简化IP地址的分配,因此决定划分网络进行分配,每一个网络分配的IP地址应该拥有唯一的网络标识(网络号),以及网络中的主机唯一标识(主机号)
127.0.0.1
|-----|-------|
| 127 | 0.0.1 |
| 网络号 | 主机号 |
(1)早期网络划分:
将网络划分为五大类
IP地址4字节共32位比特位
A类网络:固定高1位置置0,7个比特位是网络号(0~127),24个比特位是主机号(1600W+主机号)IP范围:0.0.0.0~127.255.255.255
B类网络:固定2位置10,14个比特位是网络号(128.0~191.255),16个比特位是主机号(6W+主机)IP范围:128.0.0.0~192.255.255.255
C类网络:固定3位置100,21比特位是网络号(192.0.0~223.155.255),8个比特位是主机号(254主机)IP范围:192.0.0.0~192.255.255.255
D类网络:1110xxxx 用途:多播组网 范围:224.0.0.0~239.255.255.255
E类网络:1111xxxx 用途:保留实验 范围:240.0.0.0~255.255.255.255
(2)现在的网络划分方式:CIDR方案
一种向前兼容的新方案,在原来方案的基础上做了更加细致的网络划分
.核心技术点:子网掩码
一、子网掩码:
1.定义:
由一串连续的二进制1组成的一个数字,用于表示一个IP地址哪些位都是网络号
(1)子网掩码与IP地址二进制相与得到的就是网络号
(2)子网掩码取反,与IP地址相与,得到的就是主机号
2.用途:
子网掩码用于划分子网:子网掩码取反,就是该网络中最大的的主机号,+1就是该网络的主机号个数
比如:一个C类IP地址:192.168.146.1
子网掩码:255.255.255.0 ->则该IP地址所属的网络号:192.168.146.0
192.168.146.1 & 255.255.255.0 ->192.168.146.0->网络号
192.168.146.1 & 255.255.255.0->192.168.146.1 & 0.0.0.255 -> 1 ->主机号
在一个网络中,有两个主机号是不分配给主机的:一个是主机号全为0,一个是主机号全为1
主机号全为0的IP地址:就是网络号
主机号全为1的IP地址:是局域网广播地址(比如UDP广播)
示例:一个公司申请了一个C类网络193.128.25.0/24,公司中有4个部分,划分出4个子网,平均的将IP地址分配给各个部门:
问题:每个子网的网络号是多少?子网掩码是多少?每个部门的IP地址的范围是多少?
分析:
1.C类网络有256个主机号,平均分配给4个子网,则每个子网有64个主机号
得到结果:64-1就是最大的主机号,取反就是该网络的子网掩码
63取反:64->01000000-1=00111111->取反11111111.11111111.11111111.1100000000
结果:每个子网的子网掩码就是255.255.255.192
IP地址分配:
193.128.25.0~193.128.25.63(00111111),子网掩码255.255.255.192,网络号193.128.25.0
193.128.25.64~193.128.25.127(01111111),子网掩码255.255.255.192,网络号193.128.25.64
193.128.25.128~193.128.25.191,子网掩码255.255.255.192,网络号193.128.25.128
193.128.25.192~193.128.25.255,子网掩码255.255.255.192,网络号193.128.25.192
三、特殊IP地址:
0.0.0.0:
表示当前主机上,所有网卡地址,常用于网络服务端的绑定监听地址
绑定了该地址的指定端口,则意味着该主机上所有网卡收到的指定端口数据,都会给这个socket
127.0.0.1:
127网络中的地址,都是用于网络测试的的地址(虚拟回环网卡地址)
主机号全为0的地址:
网络号(不分配给主机,是网络的标识)
主机号全为1的地址:
局域网广播地址
四、公网(外网)与私网(内网):
公网:
就是通常所说的互联网,全球大家互相能够通信的网络
私网:
是个人或机构组织创建的一种内部通信网络

为了避免私网与公网IP地址冲突,因此决定必须有一些网络专门只能组建私网,不在公网内分配
用于组建私网的网络:
10.0.0.0网络:A类网络
172.16.0.0~172.31.0.0:B类网络,组建中型私网
192.168.0~192.168.255:C类网络,组建小型私网
五、NAT/NAPT技术:
NAT/NAPT:网络地址转换/网络地址端口转换
IP地址不够用:
1.DHCP动态地址分配技术:谁上网给谁分配地址
2.NAT/NAPT技术:
将流经网卡的向外数据的中的源端地址从私网地址改为自己的对外地址,组建私网,让大量私网主机使用同一个对外地址联网通信
AT / NAPT 通俗讲解
NAT:Network Address Translation,网络地址转换 NAPT:Network Address Port Translation,网络地址端口转换,是 NAT 最常用的一种,平时家里路由器做的就是 NAPT。
背景前提:IPv4 公网地址稀缺,内网设备(手机、电脑、平板)用私网 IP (10.0.0.0/8、172.16.0.0/12、192.168.0.0/16),私网 IP 不能直接在互联网路由。 NAT 的核心目标:多个内网主机共用少量(甚至 1 个)公网 IP 上网。
1. 静态 NAT(Static NAT)
一对一映射:一个私网 IP ↔ 一个公网 IP,固定绑定
- 例:
192.168.1.10↔203.0.113.10 - 特点:永久不变;适合服务器对外提供服务;不能节省公网 IP,只是地址转换
- 缺点:有多少内网主机就要多少公网 IP,很少用来普通上网
2. 动态 NAT(Dynamic NAT)
地址池映射:提前准备一组公网 IP 池,内网主机上网时,从池里动态挑一个空闲公网 IP 一对一分配
- 仍然是一对一,只是公网 IP 不固定
- 限制:公网 IP 数量 ≤ 同时上网内网主机数,IP 不够时新主机上不了网
静态、动态 NAT 都不转换端口,只改 IP。
二、NAPT(端口多路复用 NAT,PAT)
NAPT = IP + 端口一起转换,也就是常说的 PAT(Port Address Translation)
- 原理:多个内网主机共用同一个公网 IP,靠不同端口号区分不同连接
- 转换表(NAT 表 / 会话表)保存五元组映射:
【内网IP:内网端口】 ↔ 【公网IP:公网端口】
五元组:源 IP、源端口、目的 IP、目的端口、协议 (TCP/UDP)
举个家里路由器例子: 内网两台设备同时访问百度:
- 电脑:
192.168.1.10:50001→ 路由器改成203.0.113.5:60001发出去 - 手机:
192.168.1.11:50002→ 路由器改成203.0.113.5:60002发出去
百度回复数据包目的 IP 是 203.0.113.5:60001,路由器查表,转发回 192.168.1.10:50001。 ✅ 优点:只需要 1 个公网 IP 就能支持几十上百台内网设备上网,家用、运营商最普遍 ✅ 特点:有会话超时,长时间无流量就删除映射表释放端口
一句话区分: NAT(静态 / 动态):只换 IP,端口不变,一对一 NAPT:IP + 端口都换,一对多
三、NAT 的优缺点
优点
- 节约稀缺 IPv4 公网地址
- 隐藏内网主机,外网无法直接主动访问内网,天然有隔离防护效果
- 内网地址规划独立,换运营商不用改内网网段
缺点
- 破坏端到端连通:外网无法主动访问内网设备(需要端口映射 / UPnP)
- 部分协议依赖 IP 地址(IPSec、一些 P2P、FTP 主动模式)会出问题,需要 ALG(应用层网关)识别协议载荷里的 IP 并替换
- 增加设备开销,需要维护 NAT 会话表
- 不利于端到端追踪,对一些网络调试、日志溯源带来麻烦
五、简单对比总结表
表格
|-----------|------------------------------|-----------|-------------|
| 类型 | 映射关系 | 是否改端口 | 场景 |
| 静态 NAT | 私网 IP ↔ 公网 IP,固定一对一 | 不改 | 服务器固定对外 |
| NAPT(PAT) | 多个【私网 IP: 端口】→ 同一个公网 IP,不同端口 | IP + 端口都改 | 家用路由器、运营商宽带 |

