当前位置: 首页 > article >正文

计算机网络 之 【IP协议】(IPv4报文格式、IP地址、公网IP VS 私网IP、路由VS转发)

目录1.IP协议的核心定位2.IP报文格式IPv43TTL的作用4重要设计思想5各层级标识对比3.IP地址3.1.3子网掩码与 CIDR无类别域间路由3.2公网 IP 与私有 IP5私有IP vs 公网IP3.3路由VS转发1.IP协议的核心定位IP协议是TCP/IP协议栈中的指南针—它定义了数据报的格式、编址方式IP地址和路由转发机制负责将数据从源主机“尽力而为”地送到目标主机但不保证送达、顺序或完整性IP协议位于网络层负责将数据从源主机跨网络送达目标主机提供无连接、不可靠的数据报传输服务无连接发送前不建立连接每个数据报独立处理、走不同路径不可靠尽力而为不保证不丢包、不乱序、不重复。丢包后不重传错误检测首部校验和只保证首部正确数据错误则直接丢弃与传输层关系IP协议负责主机到主机的可达性TCP协议负责进程到进程端到端的可靠性与策略(端口号、流量控制、拥塞控制等)二者结合向用户提供可靠通信能力IP层主机到主机解决“怎么找到对方主机”的问题。就像快递只送到你所在的小区。TCP协议进程到进程解决“找到主机后交给哪个应用程序”以及“怎么保证可靠”的问题。就像小区快递员把包裹送到你家门口并签字确认。可靠通信能力是 IP TCP组合后的结果。如果使用UDP则依然不可靠2.IP报文格式IPv4字段长度说明版本4 bitIPv4固定为4首部长度4 bit以 4 字节为单位范围 5~1520~60 字节服务类型8 bit前3位为优先级已废弃后5位为DSCP差分服务码点用于QoS总长度16 bitIP 报文总字节数首部 数据最大65535字节标识16 bit用于分片重组分片时同一原始报文的标识相同标志3 bit第1位保留置为0第二位 DF(Dont Fragment)位 1 表示禁止分片第三位 MF(More Fragments)位 1 表示后续还有分片片偏移13 bit以 8 字节为单位指明本分片数据在原始报文中的位置生存时间(TTL)8 bit实质是一个计数器表示最大跳数每经过一个路由器减1为0时丢弃。防止环路协议8 bit标识上层协议6TCP17UDP1ICMP 等首部校验和16 bit仅校验IP报头不含数据每跳重新计算源/目的 IP各 32 bit主机标识选项(Options)可变可选最长40字节很少使用0IP报头中的8位服务类型字段了解早期定义RFC 7913位优先级 4位独立标志延迟/吞吐/可靠/成本 1位保留一次只能请求一种服务质量现代定义RFC 2474前6位为DSCP区分服务码点用于 QoS标记数据包优先级后2位为ECN显式拥塞通知用于在不丢包的情况下通知拥塞路由器根据DSCP值执行队列调度与丢包策略路由器行为根据发送端标记的DSCP值进行差异化处理1报头与有效载荷分离分离原理 固定偏移 自描述字段固定偏移IP报头前20字节是固定结构协议栈知道从哪里开始读自描述字段4位首部长度告诉内核报头实际长度20~60字节从而找到数据起始位置16位总长度知道整个IP报文长度减去报头长度即得有效载荷长度2向上层交付依据8位协议字段流程IP层解析完报头后根据协议号(如6→TCP)将有效载荷交给对应的上层层协议处理3TTL的作用TTL 是 IP 报文的防环计数器每经过一个网络层转发节点(包括源主机和路由器)TTL 减 1作用说明防止路由环路当网络中出现错误路由如 A→B→C→A报文会在环路中永远绕行TTL 确保它在最多进行255跳后被丢弃实现 traceroutetraceroute工具利用 TTL 机制连续发送 TTL1,2,3... 的探测包强制沿途路由器返回 ICMP 超时报文从而逐跳发现路径。丢弃是指内核主动调用kfree_skb()释放该报文占用的sk_buff和数据缓冲区内存将其归还给内存池以供后续其他报文或内核模块复用4重要设计思想设计点含义IP层提供完整报文通过总长度字段IP层能识别出一个个完整的IP报文不存在“粘包/拆包”问题注意TCP粘包是TCP层行为非IP层缺陷。面向字节流 vs 面向数据报传输层面向应用层的概念TCP无边界UDP有边界。IP层的有边界是底层实现细节上层的边界特性是服务抽象二者不矛盾。点分十进制转4字节如192.168.1.1→0xC0A80101便于内核高效填充IP报头。路由转发中无传输层介入原则上中间路由器只处理网络层查IP报头做转发不解析端口。这是端到端设计原则的体现。例外防火墙/ACL可能检查端口做安全过滤NAT因地址短缺需改写端口IPv6因地址充足不再需要NATTCP应用层下发的是无边界字节流由TCP自行分段再交给IP层封装成有边界的IP包UDP应用层下发的是有边界数据报UDP报文直接作为IP包的数据部分发送5各层级标识对比层次核心标识作用填充 / 解析方应用层套接字IP 端口唯一标识端到端的进程通信应用 API 指定内核负责封装传输层端口号标识同一台主机上的不同进程操作系统内核TCP/UDP 首部网络层IP 地址标识网络中的一台主机操作系统内核IP 首部6与TCP/UDP报头的对比对比项IP报头TCP报头UDP报头首部长度20~60字节20~60字节8字节固定校验和范围仅报头伪首部TCP报头数据伪首部UDP报头数据长度字段有总长度无依赖IP总长度有UDP长度分片支持标识符标志片偏移不支持由IP层处理不支持伪首部不是真实报文的一部分而是计算校验和时临时拼凑的12字节结构0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -------------------------------- | 源IP地址32位 | -------------------------------- | 目的IP地址32位 | -------------------------------- | 0 | 协议8位 | TCP/UDP报文长度16位 | --------------------------------字段长度说明源IP地址32bit来自IP报头目的IP地址32bit来自IP报头保留位8bit固定为0协议号8bit6TCP17UDP来自IP报头TCP/UDP长度16bitTCP/UDP报头数据的长度单位字节3.IP地址3.1 IP地址结构IP地址由网络号和主机号两部分构成通过子网掩码划分边界网络号标识一个物理或逻辑子网主机号标识子网内的具体设备报文跨网络传输原理路由器根据网络号逐跳转发报文到目标网络到达目标网络后再根据主机号交付给具体主机维度网络号网段号数学表达式192.168.1.0(二进制主机位全0)192.168.1.0 - 192.168.1.255(一段地址)能否配置给设备不能。这是保留地址代表“网络本身”。不能。这是一个范围不是单个地址。用途用于路由表。告诉路由器“去往 192.168.1.x 的包请走这个接口。”用于网络规划。描述这一片区域包含哪些具体 IP。包含关系是网段的一个代表/标识符。包含网络号、广播地址、可用主机地址。3.1.2IP地址的有限性与早期问题1数量有限IPv4共2的32次方个地址约为四十二亿九千万但随着入网设备爆炸式增长、保留地址、广播地址等消耗无法为每台设备分配唯一的公网IP2分类划分法早期采用固定网络号长度的分类A/B/C/D/E类但这存在严重的IP浪费问题例如给一个只有200台主机的公司分配一个B类网络可容纳65534个主机地址造成大量地址闲置3地址分配机制IP地址由ICANN、区域互联网注册机构如APNIC协调分配给国家、运营商、组织IP本身不直接赚钱入网用户越多 → 网络价值越大 → 经济指标驱动竞争与合作4解决方案动态IP分配DHCP不固定占用IP上线分配下线回收子网掩码 / CIDR打破固定分类灵活划分网络号长度减少分配浪费NAT技术让多个私有IP共享一个公网IP缓解公网地址短缺IPv6128位地址空间16字节从根本上解决地址耗尽问题与 IPv4 不兼容中国 IPv6 部署较积极但普及受限于存量设备和应用生态3.1.3子网掩码与 CIDR无类别域间路由CIDR 决定网络号有多长子网掩码把那个长度“翻译”成路由器能读懂的格式CIDR写法意思对应的子网掩码/24前24位是网络号255.255.255.0/25前25位是网络号255.255.255.128/26前26位是网络号255.255.255.192/16前16位是网络号255.255.0.01子网掩码的作用子网掩码是一个32 位二进制数与 IP 地址按位与运算得到网络号网络号在前主机号在后1 表示对应位属于网络号0 表示对应位属于主机号表示法示例适用场景点分十进制255.255.255.0设备配置Windows/LinuxCIDR前缀长度/24路由表、网络规划文档IP192.168.1.100子网掩码255.255.255.0即 /24→ 网络号 192.168.1.0主机号 100子网掩码不是网络自带的而是管理员配置的没有子网掩码IP 地址本身无法区分网络号和主机号2特殊地址网络号子网中主机位全0的地址用于标识整个局域网不能分配给任何主机广播地址子网中主机位全1的地址用于向同一链路中的所有主机发送数据包不能分配给任何主机环回地址(127.*)127.0.0.1 是最常用的一个用于本机自测试数据包永远不会离开本机3CIDR无类别域间路由CIDR无类别域间路由彻底放弃固定分类允许任意前缀长度表示法IP地址/前缀长度n含义前n位为网络号后(32-n)位为主机号需求分类法CIDR200 台主机C类254 地址勉强够无扩展空间分配/23512 地址或/24254 地址5000 台主机B类65534 地址严重浪费分配/198190 地址或/204094 地址1000 万台主机A类1600万地址可能浪费分配/8或更细粒度/9//104路由聚合CIDR 聚合多个连续的小网络可以合并为一条路由转发信息减小路由器路由表条件被聚合的网络必须连续且前缀对齐192.168.0.0/24 192.168.1.0/24 192.168.2.0/24 192.168.3.0/24 → 聚合为192.168.0.0/223.2公网 IP 与私有 IP1私有IP地址范围类范围CIDRA10.0.0.0 – 10.255.255.25510.0.0.0/8B172.16.0.0 – 172.31.255.255172.16.0.0/12C192.168.0.0 – 192.168.255.255192.168.0.0/162私有IP特点只能在局域网内使用不同局域网可以重复使用相同私有IP必须经过NAT才能访问公网外网不能访问私有IP局域网设备使用私有IP通信出网时NAT将源IP替换为公网IP回包时再转换回来3公网IP特点全球唯一可直接路由可以在互联网上被唯一识别和直接访问需要申请必须向运营商或注册机构申请不能随意使用需付费使用通常需要按年或按月付费IPv4地址紧缺成本较高数量有限这是导致IPv4地址枯竭的直接原因4日常体验说明绝大多数用户电脑、手机、智能家居始终使用私有IP第一次接触公网IP的常见场景购买云服务器阿里云/腾讯云/AWS等云服务器会分配一个公网IP弹性公网IP5私有IP vs 公网IP特性私有IP地址公网IP地址全局唯一性仅在当前局域网内唯一全球唯一可路由性不可直接路由可直接路由访问权限需经NAT转换才能访问公网可直接访问互联网外网访问外网无法主动直接访问外网可随时直接访问分配方式自由使用无需申请需向运营商或注册机构申请、付费典型用途家庭、企业内部网络网站服务器、网络设备出口例子192.168.1.110.0.0.18.8.8.81.1.1.1私有IP是为了“节省”和“管理”公网IP是为了“唯一”和“可达”两者通过NAT技术协同工作构成了互联网方向是否能直接通信原因私网 → 公网可以通过NAT路由器将私源IP映射成公网IP后发出响应包再转换回来公网 → 私网主动连接不可以公网路由器没有到私网的路由除非配置了端口映射DNAT3.3路由VS转发概念核心任务时间尺度路由建立路由表通过路由协议计算路径较慢转发查表送包把包从出接口发出去极快路由是建立和维护路由表的过程转发是路由器根据已建立的路由表对每个到达的数据包执行“查目的IP → 找下一跳 → 从出接口发出”的动作问路由器转发时修改的是IP报文的哪个字段TTL生存时间每跳减1防止循环首部校验和因为TTL变了需要重新计算数据链路层的MAC地址源MAC地址和目的MAC地址在每一跳都会重新封装IP地址源IP/目的IP在转发过程中通常不变除非是NAT场景

相关文章:

计算机网络 之 【IP协议】(IPv4报文格式、IP地址、公网IP VS 私网IP、路由VS转发)

目录 1.IP协议的核心定位 2.IP报文格式(IPv4) (3)TTL的作用 (4)重要设计思想 (5)各层级标识对比 3.IP地址 3.1.3子网掩码与 CIDR(无类别域间路由) 3.…...

VM硬件版本20与17核心区别(ESXi 8.0适配+实操指南)

在ESXi虚拟化部署中,VM(虚拟机)硬件版本直接决定虚拟机可支持的功能、兼容性及与ESXi主机的适配性,是虚拟机部署与升级的关键考量因素。很多部署者在选择VM硬件版本时,会纠结于版本20(HW20)和版本17(HW17)的差异,核心结论先明确&a…...

Python虚拟环境:venv, virtualenv, conda该如何选?

Python虚拟环境:venv, virtualenv, conda该如何选? 在Python开发中,虚拟环境是隔离项目依赖的重要工具,能够避免不同项目之间的库版本冲突。常见的虚拟环境工具包括Python自带的venv、第三方库virtualenv以及Anaconda提供的conda…...

JAVA电动车充电桩物联网结合新能源充电小程序系统的硬件通讯

在JAVA驱动的电动车充电桩物联网系统中,硬件通讯是连接充电桩设备与云端管理平台及用户小程序的核心环节,它确保了数据的实时传输和指令的准确执行。以下从硬件通讯的协议、方式、实现及优化等方面进行详细解析:一、硬件通讯协议MQTT协议&…...

027、Tracealyzer实战:让FreeRTOS运行时行为“看得见”

027、Tracealyzer实战:让FreeRTOS运行时行为“看得见” 从那个诡异的优先级反转说起 上周调一个电机控制项目,系统在特定负载下会卡死十几毫秒。用传统调试手段打了半天日志,只能看到任务切换频率异常,但根本不知道是谁在阻塞、为什么阻塞。最后上了Tracealyzer,三分钟就…...

【HFP】规范精讲[22]: 蓝牙语音音质的度量衡——HFP质量指标体系深度解析与实战应用

在蓝牙语音设备的研发、生产和验收过程中,如何科学、准确地评估音质好坏?为什么同样支持HFP的耳机,有的通话清晰自然,有的却杂音明显、音量失衡?这背后离不开一套统一、规范的质量指标体系。HFP(Hands-Free…...

031、从图像到视频:视频扩散模型的基本框架

调试一个视频生成任务,模型输出了三十帧画面,乍看每帧都清晰合理,但连续播放时物体的运动轨迹却跳来跳去,像在抽风。盯着逐帧对比才发现,相邻帧间的潜在空间编码出现了不该有的突变——这让我意识到,把图像扩散模型直接搬到视频领域,远不是简单堆叠帧就能解决的。 一、…...

猫抓扩展终极指南:5个核心技巧让你成为网页媒体嗅探高手

猫抓扩展终极指南:5个核心技巧让你成为网页媒体嗅探高手 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为网页视频无法下载而烦恼…...

如何在Windows上直接安装APK文件:APK-Installer终极指南

如何在Windows上直接安装APK文件:APK-Installer终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否厌倦了笨重的安卓模拟器?想要在W…...

Rancher集群动态伸缩指南:Node节点的无缝增删实践

1. Rancher集群动态伸缩的核心价值 在现代云计算环境中,资源需求的波动是常态。今天你可能只需要5个节点运行服务,明天可能就需要20个节点应对流量高峰。Rancher作为企业级Kubernetes管理平台,最吸引人的特性之一就是能够实现Node节点的动态伸…...

把 CTS 通信目的地一次讲透,TMSADM、TMSSUP、TMSWF 与 CALLTP 的分工、权限与安全边界

很多做 SAP Basis 和 ABAP 运维的人,对 STMS 里那种体验都不陌生,系统概览能看到,导入队列也能看,真到改配置、调队列、做导入时,界面突然弹出目标系统登录框。表面看像是 RFC 权限不完整,真往下追,会发现这不是配置失误,反而是 CTS 故意这样设计的。CTS 并不是只靠一条…...

Go语言的sync.RWMutex表现真实

Go语言的sync.RWMutex表现真实 在并发编程中,锁机制是保证数据一致性的核心工具之一。Go语言的sync.RWMutex通过读写分离的设计,在高并发场景下表现出色,既提升了性能,又确保了线程安全。它的表现不仅体现在高效的锁竞争管理上&a…...

把 ABAP 语言版本看透,Cloud 开发、Standard ABAP 与 API 边界到底怎么划

在很多团队里,ABAP 语言版本经常被误解成一个很轻的技术属性,像是编辑器里的一个下拉框,改一下也无非就是语法高亮变一变。真正进到项目里,事情完全不是这个味道。你会看到同样一段 SELECT,放在一个对象里能激活,挪到另一个对象里立刻报访问违规。你会看到一套在本地部署…...

Hermes Agent:越用越强的自进化AI智能体,与OpenClaw深度对比

目录引言一、Hermes Agent是什么?二、Hermes Agent的核心特性1. 内置学习闭环:越用越强2. 全平台接入与灵活部署3. 安全沙盒机制三、OpenClaw是什么?四、Hermes Agent与OpenClaw的深度对比1. 设计理念:学习闭环 vs 连接控制2. 记忆…...

SAR型ADC行为级转换模型分析------LTspice

最近做电路蒙特卡洛仿真,想去找官方模型,但是官方模型没有现成的蒙特卡洛仿真模型。就想着自己取搭一个仿真模型。现在AI很火,就把规格书丢给AI帮忙了,让它帮我生成了一个ADC的蒙特卡洛仿真模型。刚好,趁着这个机会学习…...

2025届学术党必备的六大降AI率方案推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 知网AI检测系统,会凭借文本结构、词汇搭配以及逻辑连贯性等多方面特征&#xff0…...

C语言实战:基于GDBus的Bluez设备发现与属性监控

1. 为什么选择GDBus开发Bluez应用 在嵌入式Linux环境下开发蓝牙应用时,GDBus是最值得推荐的开发方式。我刚开始接触蓝牙开发时,也纠结过该用哪种技术方案,经过多个项目实战后,发现GDBus有这几个不可替代的优势: 首先&a…...

利用龙虾优化代码项目

龙虾相当于就是比平常ai多一个手脚功能,相当于既有大脑又有手脚,有时候不好用,得多训练。让它变得越来越智能与强大。利用龙虾优化代码项目,以后甚至可以感觉用龙虾代替你工作与赚钱了,自己只是审核检查与监控的作用...

运维怎么转行网络安全?(非常详细)从零基础入门到精通,收藏这一篇就够了

运维怎么转行网络安全?(非常详细)从零基础入门到精通,收藏这一篇就够了 经常有人问我:干网工、干运维多年遇瓶颈,想学点新技术给自己涨涨“身价”,应该怎么选择? 聪明人早已经用脚…...

AIAgent为何总“好心办坏事”?SITS2026首席科学家解密价值对齐的5个隐性断层及实时干预协议

第一章:AIAgent价值对齐的本质困境与SITS2026共识框架 2026奇点智能技术大会(https://ml-summit.org) 价值对齐为何不是优化问题 AI Agent的价值对齐并非单纯的目标函数可微调任务,而是涉及人类意图的不可观测性、语义模糊性与跨情境效用漂移的三重张力…...

WPF DataContext实战:三种绑定方式深度解析

1. DataContext基础概念与核心作用 在WPF开发中,DataContext就像一座隐形的桥梁,默默连接着用户界面和数据逻辑。想象一下这样的场景:当你设计一个登录窗口时,用户名输入框需要知道从哪里获取数据,而提交按钮需要明白…...

高效稳定LDO芯片选型指南:从原理到实战应用

1. LDO芯片基础:为什么你的电路需要它? 第一次接触LDO芯片时,我也被各种参数搞得头晕。直到有一次做电赛,用普通稳压电路死活调不出稳定电压,换上LDO瞬间解决问题,才真正理解它的价值。LDO全称低压差线性稳…...

**DeFi协议开发实战:基于Solidity的流动性池智能合约设计与部署**

DeFi协议开发实战:基于Solidity的流动性池智能合约设计与部署 在去中心化金融(DeFi)浪潮中,流动性池(Liquidity Pool) 是支撑AMM(自动做市商)机制的核心组件。本文将带你从零构建一个…...

DLSS Swapper终极指南:免费快速升级游戏画质的完整解决方案

DLSS Swapper终极指南:免费快速升级游戏画质的完整解决方案 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper是一款专为游戏玩家设计的实用工具,能够轻松管理、下载和替换游戏中的DL…...

uniapp安卓文件选择进阶:实现多选、类型过滤与大小限制的完整方案

1. 为什么需要进阶文件选择功能? 在移动应用开发中,文件选择是最基础但最容易被忽视的功能之一。我见过太多应用因为文件选择体验差而被用户吐槽:要么只能单选,要么选完才发现格式不对,要么上传时才发现文件太大。这些…...

Scarab终极指南:5步轻松管理空洞骑士模组,告别安装烦恼

Scarab终极指南:5步轻松管理空洞骑士模组,告别安装烦恼 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 你是否曾经因为安装空洞骑士模组而感到头疼&…...

FDTD算法实战:从理论到代码实现

1. FDTD算法入门:电磁仿真的"时间切片"艺术 第一次接触FDTD算法时,我被它独特的思维方式惊艳到了——就像用高速摄像机拍摄电磁场的舞蹈,把连续的时间切成无数个瞬间定格。这种时域有限差分方法(Finite-Difference Time…...

《王者荣耀世界》公测开服!开荒攻略+手机摸鱼,超全攻略一篇搞定!

腾讯天美工作室的《王者荣耀世界》PC端今天(4月10日)7:00已经正式开服了!作为王者IP首个开放世界RPG,这波是真的能“走进”王者大陆了!这里整理了开服情报新手开荒攻略摸鱼黑科技,新老玩家都能用上&#xf…...

5个核心优势深度解析:ReadCat开源小说阅读器如何重塑数字阅读体验

5个核心优势深度解析:ReadCat开源小说阅读器如何重塑数字阅读体验 【免费下载链接】read-cat 一款免费、开源、简洁、纯净、无广告的小说阅读器 项目地址: https://gitcode.com/gh_mirrors/re/read-cat 在数字阅读日益普及的今天,读者们面临着广告…...

从Linux服务器到Windows本地:Scrapy项目在Anaconda环境下的双平台部署与迁移实战

跨平台Scrapy项目部署:Anaconda环境下的Windows开发与Linux生产实战 当团队需要同时维护Windows开发环境和Linux生产服务器时,如何确保Scrapy爬虫项目在两个平台间无缝迁移?本文将分享一套基于Anaconda的工业化解决方案,涵盖环境配…...