一、IPv4 基础IPv4 地址一共 32 位也就是 4 字节平时写成点分十进制的形式例如 192.168.1.1。 IP 地址由网络号 主机号两部分构成。 网络号用来标识网段同一个局域网里所有主机的网络号都一样主机号用来区分同一个网段内不同的设备。 子网掩码的作用就是区分哪些比特属于网络号哪些属于主机号。网段里有两个特殊 IP 不能分配给主机使用网络地址主机号全部为 0代表整个网段本身。例子192.168.1.0/24广播地址主机号全部为 1发给这个地址的数据包网段内所有主机都会接收。例子192.168.1.255/24二、公网 IP、私网 IP 与 NATIPv4 的地址总量有限全世界设备数量远远多于 IPv4 能提供的独立地址于是就有了私网地址方案。 公网 IP外网 IP全球唯一可以直接在互联网路由访问由运营商分配。 私网 IP内网 IPIANA 预留的专用地址段只在局域网内部生效互联网不能直接路由。不同局域网可以重复使用同一套私网地址。私网的三段地址 10.0.0.0 ~ 10.255.255.255 172.16.0.0 ~ 172.31.255.255 192.168.0.0 ~ 192.168.255.255依靠 NAT网络地址转换路由器会把内网设备的 IP 加端口映射成路由器的公网 IP 加端口实现多台内网设备共用一个公网 IP 上网。三、IP 地址动态分配 DHCP局域网主机获取 IP 有两种方式动态分配DHCP主机开机后向 DHCP 服务器一般就是路由器申请 IP服务器临时分配地址并设置租期租期到期需要续租。家用网络默认都是 DHCP 动态获取。静态 IP手动在设备上填写固定 IP地址不会自动变化一般用于服务器。四、IPv6IPv6 是 IPv4 的下一代 IP 协议用来解决 IPv4 地址不够用的问题。 地址长度是 128 位16 字节地址数量极其庞大可以给每台设备分配独立公网 IP基本不需要 NAT。 写法是冒分十六进制支持用压缩连续的 0示例2001:db8::1关键特点没有广播地址一对多通信改用组播支持 SLAAC 自动配置设备可以自己生成 IP不一定需要 DHCP自带安全特性头部结构更简单路由器转发速度更快。简单分类 单播一对一通信 组播一对多通信 链路本地地址fe80 开头仅在局域网内可用五、DNS 域名解析系统电脑通信只识别 IP 地址但人类很难记住一长串数字 IPDNS 就是用来解决这个问题的。DNS域名系统核心作用完成域名和 IP 地址之间的翻译。 比如访问www.baidu.comDNS 会把这个域名翻译成对应的 IP 地址主机拿到 IP 之后才可以发起网络请求。DNS 缓存DNS 缓存就是把已经查询过的「域名 - IP」映射关系临时保存起来避免每次访问都重新查询 DNS 服务器加快访问速度。 缓存存在多个层级浏览器缓存浏览器内部保存解析记录操作系统缓存Windows、Linux 等系统本地缓存DNS 服务器缓存DNS 服务器自己也会缓存查询结果。 每条缓存记录都有 TTL生存时间时间到期就会自动失效需要重新查询。DNS 镜像服务器镜像服务器也叫 DNS 副本服务器。它会定时同步主 DNS 服务器上全部域名解析数据。 作用分担主服务器的查询压力实现负载均衡同时起到备份作用如果主 DNS 故障镜像服务器可以继续提供解析服务。很多公共 DNS、运营商 DNS 都会部署大量镜像节点。简要解析流程浏览器或者操作系统先查询本地 DNS 缓存看之前有没有保存这个域名对应的 IP缓存找不到就向配置好的 DNS 服务器发送查询请求DNS 服务器先查自身缓存没有则逐级查询向根、顶级域、权威服务器查询查询到结果后DNS 服务器返回 IP同时把这条记录存入自己的缓存本机拿到 IP开始和目标服务器通信。两种查询方式 递归查询客户端只发一次请求DNS 服务器帮你查到最终结果并返回。 迭代查询DNS 服务器返回下一级域名服务器地址客户端继续向下查询。常用记录类型 A 记录域名映射到 IPv4 地址 AAAA 记录域名映射到 IPv6 地址 CNAME域名别名将一个域名指向另一个域名六、IP 地址三层与 MAC 物理地址二层这是网络里很容易混淆的知识点二者处在不同层级负责的工作不一样。 IP 地址属于网络层三层负责端到端通信。标记通信两端的主机数据包跨路由器转发时源 IP、目的 IP 全程保持不变IPv4 和 IPv6 都遵守这个规则。 MAC 地址属于数据链路层二层负责一跳一跳的链路转发。48 位固化在网卡硬件中只在同一个局域网内生效。数据包每经过一台路由器以太网帧里面的源 MAC、目的 MAC 都会重新改写。一句话记忆IP 负责从起点主机找到终点主机MAC 负责在当前网段找到下一跳设备。七、以太网数据帧与MTU以太网是局域网最常用的数据链路层协议上层的 IP 数据包IPv4 或者 IPv6会被封装进以太网帧。以太网帧核心头部结构目的 MAC 地址 | 源 MAC 地址 | 类型字段 | 数据 (IP 包) | FCS 校验 目的 MAC当前链路下一跳网卡地址 源 MAC当前发送方网卡地址 类型字段标识上层协议0x0800 代表 IPv40x86DD 代表 IPv6 FCS帧校验序列接收方用来检测帧在传输过程中有没有出错MTU最大传输单元指一条链路单次能够传输的最大数据部分长度不包含以太网帧头。以太网默认 MTU 为 1500 字节。 当 IP 包大小超过链路 MTU 时IPv4 会对数据包进行分片拆成多个小包传输到达目的地之后再重组。 IPv6 不允许路由器分片只能由源主机提前检测路径 MTU自行拆分数据包。 如果不分片又超过 MTU数据包会被丢弃返回错误。小结IPv4 地址短缺催生了私网 IP 加 NAT 技术IPv6 拥有超大地址空间不再依赖 NAT没有广播支持 IP 自动配置。 DNS 负责域名和 IP 的翻译。DNS 缓存用来加速解析TTL 控制缓存有效期DNS 镜像服务器同步主服务器数据分担压力并做灾备。 IP 在网络层负责端到端寻址MAC 在链路层负责局域网单跳转发。数据包传输过程中IP 包头全程不变二层以太网帧头部在每经过一台路由器时更新。 IPv4 依靠网络号主机号划分网段网络地址与广播地址是网段内两个不能分配的特殊地址DHCP 实现 IPv4 内网 IP 动态分配IPv6 支持 SLAAC 自动配置。