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

news2026/4/13 21:21:45
目录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场景

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2514300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…