1. 备考视角下的IPv4知识定位与整体思路1.1 为什么IPv4头部是软考网络工程师的必争之地软考网络工程师考试里IPv4相关的内容几乎年年出现而IPv4头部、IP分片、特殊IP地址这三块又是其中最容易出题、也最容易拉开分差的地方。我前后带过几批备考的朋友发现一个很普遍的现象很多人把TCP/IP协议簇背得滚瓜烂熟一到IPv4头部字段的具体含义、分片怎么算偏移量、哪些地址能用在公网哪些只能内网就开始含糊。结果就是选择题靠蒙案例分析题写不满。这一章的价值在于它不是孤立的知识点而是后面路由、子网划分、ACL、NAT、抓包分析等一系列内容的地基。你把IPv4头部20个字节里每个字段吃透了后面看路由表、分析报文、做子网规划都会顺很多。反过来如果头部字段记混了分片计算就必然出错特殊地址判断也会跟着崩。我写这份笔记的思路很明确不搞大段理论堆砌而是按“考试怎么考、实际怎么用、坑在哪里”三条线来组织。适合零基础刚开始备考的人也适合已经过了一遍教材、但做题总在细节上丢分的人。下面我会把头部结构、分片机制、特殊地址三块拆开讲透每个部分都配上计算示例和记忆技巧尽量做到看完就能上手做题。1.2 这一章在整本书里的位置和关联第5章通常安排在物理层、数据链路层之后网络层协议的开篇位置。IPv4是网络层的核心协议它往上承载ICMP、ARP、路由协议往下依赖以太网帧的封装。所以这一章学扎实了第6章的ICMP、第7章的路由、第8章的传输层都会轻松很多。从考试分值分布看IPv4头部字段的辨析题一般1到2分IP分片计算题可能出现在选择题或案例分析的填空里特殊IP地址的判断几乎每次都有。加起来这一章直接相关的分值在5到8分左右如果算上间接影响的路由和子网题实际权重更高。所以这块内容值得你花时间反复过。我个人的建议是第一遍学的时候把头部字段和分片计算搞懂第二遍复习时重点记特殊地址和常见陷阱考前一周再快速扫一遍表格。这样三轮下来基本不会丢分。2. IPv4头部结构逐字段拆解与记忆方法2.1 固定20字节的布局逻辑IPv4头部在没有选项的情况下固定20字节这个数字要刻在脑子里。为什么是20因为最小头部长度字段是4位单位是4字节最小值55乘以4等于20。这个换算关系考试经常反过来考给你头部长度字段的值让你算实际字节数。头部字段的顺序是固定的从版本开始到目的IP地址结束。我习惯把它分成四组来记第一组4字节管版本和长度第二组4字节管服务类型和总长度第三组8字节管标识、标志、片偏移和生存时间、协议第四组8字节管首部校验和、源IP、目的IP。这样分组之后20字节的结构就清晰了。实际抓包的时候Wireshark会把每个字段展开给你看但考试是闭卷你得在脑子里还原这个布局。我的方法是拿一张白纸横着画20个小格子每个格子代表1字节然后把字段名填进去反复画三遍就记住了。比死记硬背强得多。2.2 版本、首部长度、服务类型三个字段的考点版本字段占4位值固定为4。这个没什么好说的但要注意它和首部长度的位置关系版本在高4位首部长度在低4位合起来正好1字节。考试如果给你一个十六进制数比如0x45你要能立刻反应出版本是4首部长度是5也就是20字节。首部长度字段占4位单位是4字节。取值范围是5到15对应20到60字节。为什么最大是60因为4位最大能表示1515乘以4等于60。超过20字节的部分就是选项字段选项在实际网络中很少用但考试会考这个上限。服务类型字段占8位现在实际网络中基本被DSCP和ECN取代了但教材里还是叫TOS。它用来标记优先级和服务质量考试一般只考它占8位这个事实偶尔会问区分服务的前6位是什么。我记的时候直接把它当成一个字节的占位符重点记位置不记细节。提示首部长度字段的单位是4字节不是1字节这是最常见的计算陷阱。题目给的值一定要乘以4才是真实字节数。2.3 总长度、标识、标志、片偏移的联动关系总长度占16位单位是1字节所以IPv4数据报最大理论长度是65535字节。这个值包含头部和数据两部分。实际传输时受MTU限制以太网MTU是1500字节所以总长度通常不超过1500。标识字段占16位用来唯一标识一个数据报的所有分片。同一个原始数据报分出来的所有片标识字段的值必须相同。这个字段是分片重组的关键考试经常考“同一数据报的分片哪个字段相同”答案就是标识。标志字段占3位但只有两位有意义DF位和MF位。DF是Dont Fragment置1表示不允许分片如果路由器发现需要分片但DF为1就会丢弃并返回ICMP差错报文。MF是More Fragments置1表示后面还有分片置0表示这是最后一个分片。这两位组合起来能判断分片状态是高频考点。片偏移占13位单位是8字节。这个单位换算极其重要考试里算偏移量必须除以8。比如一个分片的数据部分从原始数据的第1480字节开始那它的片偏移就是1480除以8等于185。很多人在这里直接填1480就错了。2.4 生存时间、协议、校验和的作用生存时间占8位现在叫跳数限制更准确。每经过一个路由器减1减到0就丢弃。这个字段的作用是防止数据报在网络里无限循环。初始值常见的是64、128、255考试会问“经过N个路由器后TTL是多少”直接做减法就行。协议字段占8位标识上层协议类型。常见值要记住ICMP是1TCP是6UDP是17OSPF是89。这个字段在抓包分析题里经常出现给你一个报文让你判断上层是什么协议。首部校验和占16位只校验头部不校验数据。每经过一个路由器都要重新计算因为TTL变了。计算方法考试一般不要求手算但要知道它只覆盖头部。这里有个容易混的点IPv4有首部校验和IPv6直接取消了考试会对比考。2.5 源IP和目的IP的定位源IP和目的IP各占32位也就是各4字节。这两个字段在头部最后8字节位置很好记。考试里经常结合特殊地址一起考比如源地址是私有地址、目的地址是广播地址让你判断这个报文能不能正常转发。实际分析报文时源和目的IP是最先看的信息。我习惯先看这两个地址判断通信方向再看TTL判断经过了多少跳最后看协议字段确定上层应用。这个顺序在案例分析里很实用。3. IP分片机制的原理与计算实操3.1 分片产生的根本原因分片产生的唯一原因就是MTU限制。当一个IP数据报的长度超过出接口的MTU时路由器必须把它分成多个小片才能发送。以太网默认MTU是1500字节所以一个3000字节的数据报经过以太网时会被分成至少两片。这里要区分两个概念MTU是数据链路层的最大传输单元IP数据报的总长度不能超过MTU。注意MTU限制的是IP数据报整体包含头部。所以实际能承载的数据部分是MTU减去IP头部长度通常是1500减20等于1480字节。分片可以在源主机做也可以在中间路由器做。源主机做叫源分片路由器做叫途中分片。考试里两种都会考但计算逻辑是一样的。关键是要理解分片之后每个片都是独立的IP数据报都有自己的头部。3.2 分片计算的三步法我总结了一个三步法对付所有分片计算题都够用。第一步确定每片能承载的最大数据量。用MTU减去IP头部长度得到每片数据部分的上限。比如MTU是1500头部20字节那每片最多承载1480字节数据。注意这个1480必须是8的整数倍因为片偏移的单位是8字节。1480除以8等于185正好是整数没问题。如果算出来不是8的倍数要向下取整到8的倍数。第二步计算需要分成几片。用原始数据总长度除以每片最大数据量向上取整。比如原始数据是3000字节3000除以1480等于2.03向上取整是3片。前两片各1480字节第三片是3000减2960等于40字节。第三步计算每片的片偏移。第一片偏移是0第二片偏移是第一片数据量除以8第三片偏移是前两片数据量之和除以8。按上面的例子第一片偏移0第二片偏移1480除以8等于185第三片偏移2960除以8等于370。这三步走下来任何分片题都能解。我建议你拿几道真题练手把这三步变成肌肉记忆。3.3 MF标志位与分片状态的判断MF位是判断分片状态的关键。除了最后一片其他所有片的MF都是1。最后一片的MF是0。这个规则很简单但考试会反过来问给你一个片的MF等于1问你是不是最后一片答案是不是。DF位和MF位组合起来有四种情况但实际只有三种有意义DF等于0且MF等于0表示没有分片DF等于0且MF等于1表示是分片且后面还有DF等于1且MF等于0表示不允许分片且没有分片。DF等于1且MF等于1的情况不存在因为不允许分片就不会产生分片。这里有个常考陷阱如果DF等于1但数据报长度超过MTU路由器会丢弃并返回ICMP不可达差错类型是3代码是4表示需要分片但DF置位。这个ICMP报文在路径MTU发现里很重要考试会考。3.4 分片重组的规则分片重组只在目的主机进行中间路由器不重组。为什么因为每个片可能走不同路径到达顺序也可能乱中间路由器没有能力也没有必要缓存所有片。这个设计原则考试会问“分片在哪里重组”答案永远是目的主机。重组的时候目的主机根据源IP、目的IP、标识字段三个信息来判断哪些片属于同一个原始数据报。这三个相同的片会被放在一起然后按片偏移排序拼成完整数据报。如果某个片丢失了整个数据报都要重传因为IP层不负责重传靠上层TCP来保证。重组有一个超时定时器如果超时还没收齐所有片已经收到的片会被丢弃。这个定时器一般是30秒或60秒考试不要求具体数值但要知道有超时机制。3.5 分片计算完整示例假设一个原始IP数据报总长度是4020字节头部20字节数据部分是4000字节。现在要经过MTU为1500字节的链路计算分片结果。每片最大数据量是1500减20等于1480字节。4000除以1480等于2.7向上取整是3片。第一片数据1480字节偏移0MF等于1总长度1500。 第二片数据1480字节偏移185MF等于1总长度1500。 第三片数据4000减2960等于1040字节偏移370MF等于0总长度1060。验证一下1040除以8等于130是整数没问题。三片的数据量加起来1480加1480加1040等于4000和原始数据一致。偏移量乘以8再加上本片数据量等于下一片的起始位置逻辑自洽。这道题我故意选了数据部分刚好不是1480整数倍的例子因为考试经常出这种。如果数据部分是2960那就正好两片第二片MF等于0偏移185。如果数据部分是1481那第二片只有1字节但1不是8的倍数实际上第二片会承载8字节第一片承载1472字节因为1472是8的倍数。这个细节很多人忽略考试就考这个。注意每片的数据量必须是8的整数倍除了最后一片。因为片偏移以8字节为单位非8倍数的数据量无法正确表示偏移。4. 特殊IP地址的分类与判断技巧4.1 私有地址范围与考试判断私有地址是考试必考的内容三个范围要背得滚瓜烂熟。10.0.0.0到10.255.255.255对应10.0.0.0/8。172.16.0.0到172.31.255.255对应172.16.0.0/12。192.168.0.0到192.168.255.255对应192.168.0.0/16。这三个范围的特点是只能在内网使用不能出现在公网路由表里。考试经常给你一个地址让你判断是不是私有地址或者给你一个场景问能不能直接访问公网。判断方法很简单看第一个字节是不是10或者前两个字节是不是172.16到172.31或者前三个字节是不是192.168。这里有个容易错的点172.16.0.0/12的范围是172.16到172.31不是172.16到172.32。因为12位掩码意味着第二个字节的高4位固定低4位可变所以第二个字节范围是16到31。很多人记成32就错了。私有地址在实际组网里大量使用配合NAT实现公网访问。考试会考NAT的原理但那是后面的章节这里只要记住私有地址范围就行。4.2 回环地址与本地通信127.0.0.0/8整个网段都是回环地址最常用的是127.0.0.1。发往回环地址的数据报不会离开本机直接被协议栈处理。这个地址的作用是测试本机TCP/IP协议栈是否正常。考试会问ping 127.0.0.1能通说明什么说明本机协议栈正常但不能说明网卡正常也不能说明网络连通。这个区分很重要很多人以为能ping通回环就代表网络没问题其实差得远。回环地址的另一个考点是它不能作为源IP或目的IP出现在物理链路上。如果你抓包抓到源地址是127.0.0.1的报文那一定是本机内部通信没有经过网卡。4.3 广播地址的几种形式广播地址分两种受限广播和定向广播。受限广播是255.255.255.255也叫本地广播路由器不转发这种报文只在本地网段传播。定向广播是子网广播地址比如192.168.1.0/24网段的广播地址是192.168.1.255这种报文可以被路由器转发到目标网段。考试经常考255.255.255.255和192.168.1.255有什么区别前者是受限广播后者是定向广播。受限广播永远不被转发定向广播可以被转发但通常被禁用。还有一种叫全子网广播就是子网内主机位全1的地址。计算方法是网络号不变主机位全置1。比如10.1.1.0/24的广播地址是10.1.1.255。这个计算和子网划分结合考属于必考内容。4.4 0.0.0.0和169.254.x.x的特殊含义0.0.0.0在不同场景有不同含义。作为源地址表示本机不知道自己的IP比如DHCP请求时就用0.0.0.0作为源。作为目的地址表示默认路由路由表里0.0.0.0/0就是默认路由。作为主机地址表示所有网络比如监听0.0.0.0表示监听所有网卡。169.254.0.0/16是链路本地地址也叫自动私有IP地址。当主机配置为DHCP但没拿到地址时会自动给自己配一个这个范围的地址。这个地址只能在本地链路通信不能跨路由器。考试会问主机拿到169.254.x.x说明什么说明DHCP失败没拿到有效地址。这两个地址在实际排障中很有用。如果你看到主机IP是169.254开头第一反应就是检查DHCP服务器。如果你看到路由表里有0.0.0.0那就是默认路由。4.5 特殊地址速查表地址类型范围或示例能否作为源能否作为目的是否可路由私有地址10.0.0.0/8等是是仅内网回环地址127.0.0.0/8否是否受限广播255.255.255.255否是否定向广播子网广播地址否是可但不推荐默认路由0.0.0.0/0否是是链路本地169.254.0.0/16是是否这张表我建议你考前默写一遍考试里遇到特殊地址判断题直接对照表格就能出答案。5. 常见问题与排查技巧实录5.1 头部长度计算为什么总出错最常见的错误是把首部长度字段的值直接当成字节数。比如看到0x45知道版本是4首部长度是5但忘了乘以4直接说头部5字节。正确是5乘以4等于20字节。这个错误我见过太多人犯包括我自己第一遍学的时候。避免方法很简单每次看到首部长度字段先默念“单位是4字节”然后再计算。做题时可以在草稿纸上写“值×4字节数”强制自己走这一步。练上十道题就形成条件反射了。另一个相关错误是总长度和首部长度的混淆。总长度单位是1字节首部长度单位是4字节两个字段单位不同。题目如果给总长度是1500首部长度是5那数据部分是1500减20等于1480不是1500减5。这个也要注意。5.2 分片偏移量忘记除以8怎么办片偏移忘记除以8是分片题的头号杀手。我总结了一个口诀“偏移偏移除以8才偏移”。每次算偏移量之前先念一遍提醒自己单位是8字节。如果考试时实在忘了可以用逻辑反推片偏移字段只有13位最大能表示8191乘以8等于65528接近65535的最大数据报长度。如果单位是1字节13位最大只能表示8191远小于65535就不合理了。所以单位必然是8字节。这个推理过程能帮你在考场上临时想起来。还有一种情况是数据量不是8的倍数。比如算出每片1481字节但1481除以8不是整数。这时候要向下取整到1480因为片偏移必须是整数。多出来的1字节放到下一片。这个细节考试会设陷阱要特别小心。5.3 特殊地址判断题的快速判断法特殊地址判断题的快速判断法分三步。第一步看第一个字节如果是10私有如果是127回环如果是169且第二个字节是254链路本地如果是0默认路由或未知地址。第二步看前两个字节如果是172.16到172.31私有如果是192.168私有。第三步看主机位如果全1广播如果全0网络地址。这三步走完99%的特殊地址题都能解。我建议你拿一张纸把这三步写下来做题时对照着走。练熟之后可以心算速度很快。这里有个容易混的点192.168.1.0是网络地址还是主机地址如果掩码是24位那192.168.1.0是网络地址主机位全0。如果掩码是16位那192.168.1.0是主机地址因为主机位不是全0。所以判断特殊地址必须结合掩码不能只看地址本身。这个点考试经常考很多人忽略。5.4 常见问题速查表问题现象可能原因排查方法头部长度算错忘记乘以4值×4字节数分片偏移算错忘记除以8偏移量÷8片偏移分片数据量不是8倍数未向下取整取8的整数倍特殊地址判断错未结合掩码先看掩码再看主机位MF位判断错混淆最后一片最后一片MF0DF位理解错以为DF1会分片DF1禁止分片这张表建议贴在书桌前做题时随时对照。我备考时就是靠这张表把分片和特殊地址的错误率降下来的。5.5 独家避坑技巧第一个技巧做分片题时先画一个表格列出片号、数据量、偏移、MF、总长度五列然后逐行填。这样不容易乱也方便检查。我考试时就是这么做的分片题基本没丢过分。第二个技巧特殊地址判断题先判断是不是私有地址再判断是不是广播地址最后判断是不是回环或链路本地。这个顺序能避免遗漏。因为私有地址最常考先判断能快速拿分。第三个技巧头部字段记忆用“四组法”每组4字节或8字节分组记忆比逐个记忆效率高。我当年就是把20字节分成四组每组记一个特征很快就记住了。第四个技巧考试时如果遇到不确定的题先用排除法去掉明显错误的选项。比如分片题里如果某个选项的偏移量不是8的倍数直接排除。特殊地址题里如果某个选项的地址明显是公网地址直接排除。这样能提高蒙对的概率。6. 备考节奏与实战建议6.1 三轮复习法的时间分配第一轮学知识点花2到3天。重点是把头部字段和分片计算搞懂特殊地址记住范围。这一轮不要追求速度要追求理解。我建议配合教材和真题边学边做笔记。第二轮刷题巩固花3到4天。把近5年的真题里所有IPv4相关的题都做一遍做错的题标记出来分析错因。这一轮的目标是把错误率降到20%以下。第三轮考前冲刺花1天。快速过一遍笔记和速查表重点看错题。这一轮不学新东西只巩固已会的。考前一周每天花15分钟默写特殊地址表和分片三步法保持手感。6.2 真题演练的正确姿势做真题不要只对答案要分析每个选项为什么对为什么错。比如一道分片题四个选项里三个是错的你要能说出每个错在哪里。这样一道题等于做了四道题效率高。我习惯把真题里的IPv4题单独抄到一个本子上按头部、分片、特殊地址三类分开。这样复习时能看出哪类题错得多针对性补强。我当年分片题错得最多就专门练了20道分片题后来基本不错了。还有一点真题里出现的计算题一定要自己动手算一遍不要只看解析。看解析觉得会了实际动手可能就卡住了。我见过太多人看解析都会一考试就错就是因为没动手练。6.3 考场上的时间分配与检查策略IPv4相关的题在选择题里一般不超过5道建议每道题控制在1分钟内。分片计算题如果30秒没思路先跳过做完其他题再回来。因为分片题一旦卡住容易影响心态。检查的时候重点检查分片题的偏移量是不是8的倍数特殊地址题是不是结合了掩码。这两个地方最容易出错。如果时间允许把分片题重新算一遍用不同方法验证。比如先算总数据量再算片数最后算偏移反过来再验算一遍。提示考场上如果遇到完全没见过的特殊地址先用排除法去掉明显错误的选项然后在剩下的选项里选最符合“私有、回环、广播、链路本地”四类之一的。这个策略能提高蒙对的概率。6.4 从考试到实战的延伸学完这一章实际工作中抓包分析会轻松很多。比如看到TTL是64说明没经过路由器TTL是63说明经过了一个路由器。看到MF等于1说明后面还有分片。看到源地址是169.254开头说明DHCP有问题。这些判断在排障时非常实用。我个人的体会是软考里的IPv4知识和实际网络排障是高度重合的。考试考的是原理实际用的是原理的延伸。你把原理搞懂了实际遇到问题就能快速定位。比如网络时通时不通可能是MTU不匹配导致分片丢失比如能ping通IP但打不开网页可能是DNS问题。这些排查思路都建立在IPv4基础之上。最后再分享一个小技巧如果你在实际工作中遇到分片相关的问题可以用ping命令加-l参数指定数据包大小加-f参数设置DF位来测试路径MTU。比如ping -l 1472 -f 目标地址如果能通说明路径MTU至少是1500。这个技巧在排查MTU问题时很好用也是软考知识在实际中的直接应用。
阅读完成 · 觉得有帮助?