计算机网络 之 【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场景
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2514300.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!