一、IP协议1.协议格式14B的协议版本IPV4IPV6.......24B的头部长度描述IP报头最小20字节最大60字节38B的服务类型最小延时最大吞吐量最小成本最高可靠性1位保留3位优先权416位报文长度描述IP报文长度最小20B最大64KIP报文中数据最大是64k-20516位分片标识针对UDP进行数据分片上层给予的数据过大超过了MTU限制的大小则该报文就会在网络层被分割成一个个小的分片封装报头发送处理分片在对端要重组该字段标识分片属于哪个报文613位分片偏移以8字节为单位的描述每一个分片在原始报文中的起始位置的相对偏移量因为偏移量以8B为单位因此要求每一个分片必须是8的整数倍大小73位分片标志1位保留-必须置0 1位描述是否允许分片1位描述是否原始报文最后一个分片88位TTL生命周期描述的一条报文在网络中所能经过的路由器最大跳数跳数每经过一个路由器就会-1到0时则丢弃报文为了避免网络环路98位数据协议类型决定了IP报文中的数据所采用的协议以便于数据解析1016位校验和校验数据的一致性1132位源端IP对端IP描述了数据到那个主机来到那个主机去120~40字节选项数据二、路由选择每一个路由器都有一个路由器记录所连接的网络号子网掩码连接该网络的网卡1.使用数据中的目的IP地址与路由表中的每一项数据的子网掩码相与之后该网络的网络进行比较如果一致则表示该主机就是属于该网络这时候选择合适的路径进行转发2.转发的时候当前我们的大多数网络都使用NAPT网络地址端口转换技术NAPT技术组建一个小型私网让私网中的主机使用同一个对外IP地址进行通信3.转发的时候会将数据中的源端地址进行转换转换为自己的对外地址端口1.网络划分IP地址是网络上一台主机的唯一标识网络中的主机IP地址是不允许冲突的为了解决分配冲突问题设计出来了根据不同的网络来分配不同的IP地址网络号用于标识IP地址所属的网络就是网络的唯一标识每个网络分配的IP地址中都必须包含这个标识主机号用于标识主机在所属网络中的唯一标识IP地址中除了网络号剩余的部分给每个主机实际分配的编号IP地址的组成网络号主机号为了简化IP地址的分配因此决定划分网络进行分配每一个网络分配的IP地址应该拥有唯一的网络标识网络号以及网络中的主机唯一标识主机号127.0.0.11270.0.1网络号主机号1早期网络划分将网络划分为五大类IP地址4字节共32位比特位A类网络固定高1位置置07个比特位是网络号0~12724个比特位是主机号(1600W主机号IP范围0.0.0.0~127.255.255.255B类网络固定2位置1014个比特位是网络号128.0~191.25516个比特位是主机号6W主机IP范围128.0.0.0~192.255.255.255C类网络固定3位置100,21比特位是网络号192.0.0~223.155.2558个比特位是主机号254主机IP范围192.0.0.0~192.255.255.255D类网络1110xxxx 用途多播组网 范围224.0.0.0~239.255.255.255E类网络1111xxxx 用途保留实验 范围240.0.0.0~255.255.255.2552现在的网络划分方式CIDR方案一种向前兼容的新方案在原来方案的基础上做了更加细致的网络划分.核心技术点子网掩码一、子网掩码1.定义由一串连续的二进制1组成的一个数字用于表示一个IP地址哪些位都是网络号1子网掩码与IP地址二进制相与得到的就是网络号2子网掩码取反与IP地址相与得到的就是主机号2.用途子网掩码用于划分子网子网掩码取反就是该网络中最大的的主机号1就是该网络的主机号个数比如一个C类IP地址192.168.146.1子网掩码255.255.255.0 -则该IP地址所属的网络号192.168.146.0192.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-100111111-取反11111111.11111111.11111111.1100000000结果每个子网的子网掩码就是255.255.255.192IP地址分配193.128.25.0~193.128.25.6300111111子网掩码255.255.255.192网络号193.128.25.0193.128.25.64~193.128.25.12701111111子网掩码255.255.255.192网络号193.128.25.64193.128.25.128~193.128.25.191子网掩码255.255.255.192网络号193.128.25.128193.128.25.192~193.128.25.255子网掩码255.255.255.192网络号193.128.25.192三、特殊IP地址0.0.0.0表示当前主机上所有网卡地址常用于网络服务端的绑定监听地址绑定了该地址的指定端口则意味着该主机上所有网卡收到的指定端口数据都会给这个socket127.0.0.1127网络中的地址都是用于网络测试的的地址虚拟回环网卡地址主机号全为0的地址网络号不分配给主机是网络的标识主机号全为1的地址局域网广播地址四、公网外网与私网内网公网就是通常所说的互联网全球大家互相能够通信的网络私网是个人或机构组织创建的一种内部通信网络为了避免私网与公网IP地址冲突因此决定必须有一些网络专门只能组建私网不在公网内分配用于组建私网的网络10.0.0.0网络A类网络172.16.0.0~172.31.0.0B类网络组建中型私网192.168.0~192.168.255C类网络组建小型私网五、NAT/NAPT技术NAT/NAPT网络地址转换/网络地址端口转换IP地址不够用1.DHCP动态地址分配技术谁上网给谁分配地址2.NAT/NAPT技术将流经网卡的向外数据的中的源端地址从私网地址改为自己的对外地址组建私网让大量私网主机使用同一个对外地址联网通信AT / NAPT 通俗讲解NATNetwork Address Translation网络地址转换NAPTNetwork Address Port Translation网络地址端口转换是 NAT 最常用的一种平时家里路由器做的就是 NAPT。背景前提IPv4 公网地址稀缺内网设备手机、电脑、平板用私网 IP10.0.0.0/8、172.16.0.0/12、192.168.0.0/16私网 IP 不能直接在互联网路由。 NAT 的核心目标多个内网主机共用少量甚至 1 个公网 IP 上网。1. 静态 NATStatic NAT一对一映射一个私网 IP ↔ 一个公网 IP固定绑定例192.168.1.10↔203.0.113.10特点永久不变适合服务器对外提供服务不能节省公网 IP只是地址转换缺点有多少内网主机就要多少公网 IP很少用来普通上网2. 动态 NATDynamic NAT地址池映射提前准备一组公网 IP 池内网主机上网时从池里动态挑一个空闲公网 IP 一对一分配仍然是一对一只是公网 IP 不固定限制公网 IP 数量 ≤ 同时上网内网主机数IP 不够时新主机上不了网静态、动态 NAT 都不转换端口只改 IP。二、NAPT端口多路复用 NATPATNAPT IP 端口一起转换也就是常说的 PATPort 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端口不变一对一 NAPTIP 端口都换一对多三、NAT 的优缺点优点节约稀缺 IPv4 公网地址隐藏内网主机外网无法直接主动访问内网天然有隔离防护效果内网地址规划独立换运营商不用改内网网段缺点破坏端到端连通外网无法主动访问内网设备需要端口映射 / UPnP部分协议依赖 IP 地址IPSec、一些 P2P、FTP 主动模式会出问题需要 ALG应用层网关识别协议载荷里的 IP 并替换增加设备开销需要维护 NAT 会话表不利于端到端追踪对一些网络调试、日志溯源带来麻烦五、简单对比总结表表格类型映射关系是否改端口场景静态 NAT私网 IP ↔ 公网 IP固定一对一不改服务器固定对外NAPT(PAT)多个【私网 IP: 端口】→ 同一个公网 IP不同端口IP 端口都改家用路由器、运营商宽带 SEO 优化官网定制响应式建站教育培训建站