第八章IPv4、IPv6、ICMP、ARP、RARP
一、IPv4
1、IP报文格式
- 头部长度(IHL):最小值是5,最大值为15,单位4字节。
- TOS:为区分服务字段,用区分服务类型,即QoS字段。
- 总长度字段:IPv4数据报的总长度。
- 标识:主机发送IP报文的序号,每发送一次+1。
- 生存期(TTL):用于设置一个数据包可经过的路由器数量的上限,每经过一台路由器减1。
- 协议字段:包含一个数字,标识数据报有效载荷部分的数据类型。最常用的值为1(ICMP) 6(TCP) 和17(UDP) 。
- 头部校验和:仅计算IPv4头部,不检查数据有效载荷部分的正确性。当TTL减一时,头部校验和必须重新计算。
为了控制IP数据报在网络中无限转发,在IPv4数据报首部中设置了(27)字段。
• A.标识符 B.首部长度 C.生存期 D.总长度
选择C,TTL
IP数据报的首部有填充字段,原因是(21)。
• A.IHL的计数单位是4字节 B.IP是面向字节计数的网络层协议
• C.受MTU大小的限制 D.为首部扩展留余地
IHL必须是4字节(32位)的整数倍,如果不够4字节的整数倍,后面要用全0填充字段补齐为4字节的整数倍。
IHL必须是4字节(32位)的整数倍,如果不够4字节的整数倍,后面要用全0填充字
段补齐为4字节的整数倍。
报文长度字段16位,最大能表示216=65536(0-65535),最大65535字节。
IPv4首部的最大值为(15)字节,原因是IHL字段长度为(16)比特。
• (15)A.5 B.20 C.40 D.60
• (16)A.2 B.4 C.6 D.8
(15)D (16)B
2、IP分片计算
- IP报文最大65535字节,而以太网MTU为1500字节。
- 相当于货轮能载重65535,而火车载重1500,那么必须把货轮上的货物分装给多个火车运输。
例题精选解析
以太网主机发送一个IP分组,长度3000字节,头长度为标准长度,发送该IP分组时应分为几个分片?写出各分片的信息(长度、偏移、MF)。
假设一个IP数据报总长度为3000B,要经过一段MTU为1500B的链路,该IP数据报必须经过分片才能通过该链路。该原始IP数据报需被分成(24)个片,若IP首部没有可选字段,则最后一个片首部中Offset字段为(25)。
• (24)A.2 B.3 C.4 D.5
• (25)A.370 B.740 C.1480 D.2960
扩展练习
路由器收到一个长度1500字节的IP数据报,需要转发到下一跳网络的MTU为1024字节。写出这两个IP报文分片的长度、MF标志位以及Offset字段的值。
IP数据报的分段和重装配要用到报文头部的报文ID、数据长度、段偏置值和M标志4个字段,其中(23)的作用是指示每一分段在原报文中的位置:若某个段是原报文的最后一个分段,其(24)值为 “0”。
• (23)A.段偏置值 B.M标志 C.报文ID D.数据长度
• (24)A.段偏置值 B.M标志 C.报文ID D.数据长度
片偏移:占13位。较长的分组在分片后,某片在原分组中的相对位置。相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定8字节的整数倍。标志字段中的最低位记为 MF。MF=1 表示后面“还有分片”的数据报。MF=0 表示这是数据报片中的最后一个。
IP数据报的分段和重装配要用到报文头部的标识符、数据长度、段偏置值和(16)等四个字段,其中(17)字段的作用是为了识别属于同一个报文的各个分段,(18)的作用是指示每一分段在原报文中的位置。
• (16)A.IHL B.M标志 C.D标志 D.头校验和
• (17)A.IHL B.M标志 C.D标志 D.标识符
• (18)A.段偏置值 B.M 标志 C.D 标志 D.头校验和
标识符用于识别属于同一个报文的各个分片,M标志位=1,表示后续还有分片数据。片偏移指明分片在原始报文中的位置。
IP数据报经过MTU较小的网络时需要分片。假设一个大小为3000的报文经过MTU为1500的网络,需要分片为(22)个较小报文,最后一个报文的大小至少为(23)字节。
• (22)A.2 B.3 C.4 D.5
• (23)A.20 B.40 C.100 D.1500
MTU=1500字节,MTU包含IP报头,实际运输的IP数据部分只有1480字节。那么长度为3000字节的IP报文(报头+数据=20+2980),实际会被分成3个包进行传输,第一片(20+1480)字节,第二片(20+1480)字节,第三片(20+20)字节。
假设一个IP数据段的长度为4000B,要经过一段MTU为1500B的链路,该IP数据报必须经过分片才能通过该链路,以下关于分片的叙述中,正确的是(33)。
• A.该原始IP数据报是IPv6数据报
• B.分片后的数据报将在通过该链路后的路由器进行重组
• C.数据报需分为三片,这三片的每长度为4000B
• D.分片中的最后一片,标志位flag为0,offset字段为370
IPv4报文分片和重组分别发生在(32)。
• A.源端和目的端 B.需要分片的中间路由器和目的端
• C.源端和需要分片的中间路由器 D.需要分片的中间路由器和下一跳路由器
IPv4分片发生在中间路由器或源端,重组是在目的端。由于IPv6存在路径发现机制,可以发现端到端最小MTU,所以IPv6不会进行数据分片。
3、特殊IP地址
IPv4地址分类
特殊IPv4地址
- 0.0.0.0
主机端:DHCP分配过程中,用0.0.0.0表示本机,比如主机DHCP Discover广播报文源目地址和端口是0.0.0.0:68 -> 255.255.255.255:67。
服务器端:0.0.0.0本机所有IPv4地址,如果某主机有两个IP地址,该主机一个服务监听的地址是0.0.0.0,那么通过两个IP地址都能够访问该服务。
路由:0.0.0.0表示默认路由,即当路由表中没有找到完全匹配路由的时候
所对应的路由。
-
255.255.255.255
受限广播地址,表示3层广播的目标地址,在同一个广播域范围内所有主机
都会接收这个包,广播域的范围可变,跟子网划分相关。 -
169.254.0.0/16
使用DHCP自动获取IP地址,当DHCP服务器发生故障,或响应时间超时,
系统会为你分配这样一个地址,不能正常上网。
4.127.0.0.0/8 (127.0.0.1-127.255.255.255)
• 本地环回地址,能ping通127地址,证明TCP/IP协议栈正常。
5.RFC1918私有IP地址
• IPv4地址空间中有一部分特殊的地址,成为私有IP地址,私有IP地址
不能直接访问公网(Internet)的IP,只能在本地使用。
• A类:10.0.0.0/8(10.0.0.1-10.255.255.255) 1个A类网络
• B类:172.16.0.0/12(172.16.0.1-172.31.255.255)16个B类网络
• C类:192.168.0.0/16(192.168.0.1-192.168.255.255) 256个C
- 常见组播:
• 224.0.0.1 所有主机
• 224.0.0.2 所有路由器
• 224.0.0.5 所有运行OSPF的路由器
• 224.0.0.6 DR和BDR的组播接收地址
• 224.0.0.9 RIPv2组播更新地址
• 224.0.0.18 VRRP组播地址
自动专用IP地址(Automatic Private IP Address,APIPA)的范围是(27),当(28)时本地主机使用该地址。
(27)A.A类地址块 127.0.0.0~127.255.255.255
• B.B类地址块 169.254.0.0~169.254.255.255
• C.C类地址块 192.168.0.0~192.168.255.255
• D.D类地址块 224.0.0.0~224.0.255.255
(28)A.在本机上测试网络程序 B.接收不到DHCP服务器分配的IP地址
• C.公网IP不够 D.自建视频点播服务器
考查DHCP 169.254.0.0/16特殊地址,可以适当扩展掌握其他特殊地址。
下列关于私有地址个数和地址的描述中,都正确的是(52)。
• A.A类有10个:10.0.0.0~10.10.0.0 B.B类有16个:172.0.0.0~172.15.0.0
• C.B类有16个:169.0.0.0~169.15.0.0 D.C类有256个:192.168.0.0~192.168.255.0
私有地址有以下三个段:10.0.0.0/8,172.16.0.0~172.31.0.0/16,
192.168.0.0~192.168.255.0/24。
二、 IPv6
IPv6基础
- IPv6地址128位,采用冒号分隔的十六进制表示。 【更多】
- IPv6集成IPSec(ESP和AH)。支持加密、认证等功能。 【更安全】
- IPv6支持多报头嵌套,支持新业务扩展。 【扩展性强】
- IPv6只能由源发节点进行分段,中间路由器不能分段,目的是简化路由处理,MTU发现。 【效率高】
1、Pv6报文格式
- 版本(4位):用0110表示IPv6。
- 通信类型/流量等级(8位):用于区分不同的IP分组,相当于IPv4中服务类型字段。
- 流标签(20位):标识某些需要特别处理的分组。
- 负载长度(16位): 表示除了IPv6 固定头部40个字节之外的负载长度,扩展头包含在负载长度之中。
- 下一头部(8位):指明下一个头部类型,可能是IPv6扩展头部或高层协议的头部。
- 跳数限制(8位):用于检测路由循环,类似TTL。
- 源地址(128位):发送节点的地址。
- 目标地址(128位):接收节点的地址。
在IPv6首部中有一个“下一头部”字段,若IPv6分组没有扩展首部,则其“下一头部”字段中的值为
(35)。
• A.TCP或UDP B.IPv6 C.逐跳选项首部 D.空
IPv6扩展报文头是跟在IPv6基本报文头后面的可选报文头,可以多层嵌套,如果没有扩展,直接封装TCP/UDP传输层报文。
以下关于IPv6地址的说法中,错误的是(54) 。
• A.IPv6采用冒号十六进制,长度为128比特
• B.IPv6在进行地址压缩时双冒号可以使用多次
• C.IPv6地址中多个相邻的全零分段可以用双冒号表示
• D.IPv6地址各分段开头的0可以省略
在一个IPv6地址中,::只能使用1次
IPv6协议数据单元由一个固定头部和若干个扩展头部以及上层协议提供的负载组成,其中用于表示松散源路由功能的扩展头是(54)。如果有多个扩展头部,第一个扩展头部为(55)。
• (54)A.目标头部 B.路由选择头部 C.分段头部 D.安全封装负荷头部
• (55)A.逐跳头部 B.路由选择头部 C.分段头部 D.认证头部
IPv6基本首部的长度为(54)个字节, 其中与IPv4中TTL字段对应的是(55)字段。
• (54)A.20 B.40 C.64 D.128
• (55)A.负载长度 B.通信类型 C.跳数限制 D.下一首部
第一个不要选成了D,IPv6地址是128位,但首部长度为40字节,IPv4地址32位,首部长度为20字节。IPv4的报头包含至少12个字段,IPv6报头只有8个字段,所以IPv6提高了选路效率。
在IPv6中,(55)首部是每个中间路由器都需要处理的。
• A.逐跳选项 B.分片选项 C.鉴别选项 D.路由选项
选择A
2、IPv6地址分类
- Pv6地址128位,采用==冒号分隔的十六进制数(8组)==表示。
- 例如:8000:==0000:0000:0000:==0123:4567:89AB:CDEF。
- 每个字段前面的0可以省去,例如0123可以简写为123。
- 一个或多个全0字段,可以用一对冒号“::”代替
- 有效0位不可以简写,双冒号只能出现一次。
- 以上地址可简写为 8000==::==123:4567:89AB:CDEF
- IPv4兼容地址可以写为 ::192.168.10.1
- 单播地址
- 可聚合全球单播地址:这种地址在全球范围内有效,相当于IPv4公用地址(前缀为001)。
- 链路本地地址:用于同一链路的相邻节点间的通信(前缀为1111 1110 10) 结合MAC地址自动生成。
- 站点本地地址:相当于IPv4 中的私网地址(前缀为1111 1110 11)。 【助记:1聚2恋3占】
- 组播地址
- IPv6中没有广播地址,广播功能被组播代替。
- IPv6组播地址的格式前缀为 1111 1111,即FF00开头。
- 任意播地址
- 表示一组接口的标识符,通常是路由距离最近的接口。
- 任意播地址不能用作源地址,而只能作为目标地址。
- 任意播地址不能指定给IPv6主机,只能指定给IPv6路由器。
- 合法写法
• 12AB:0000:0000:CD30:0000:0000:0000:0000/60
• 12AB::CD30:0:0:0:0/60
• 12AB:0:0:CD30::/60 - 非法写法
• 12AB:0:0:CD3/60 (在16位的字段中可以省掉前面的0, 但不能省掉后面的0)
• 12AB::CD3/60 (这种表示可展开为12AB:0000:0000:0000:0000:0000:0000:0CD3)
• 12AB::CD30/ 60 (这种表示可展开为12AB:0000:0000:0000:0000:0000:0000:CD30)
特殊地址对比 IPv4 vs IPv6
IPv6相关协议
- IPv6路由协议:RIPng、OSPFv3、BGP4+
- DHCPv6 无状态配置和有状态配置。
- 有状态自动配置:DHCPv6直接分配前缀和接口ID、网关和DNS等。(给全部信息)
- 无状态自动配置:路由器接口前缀+终端EUI-64。(给一半信息)
- ICMPv6:新增加的邻居发现功能代替了ARP协议的功能。
NDP和ICMPv6
- IPv6邻居发现协议(Neighbor Discovery Protocol,简称NDP或ND)定义了5种类型的信息,包括:路由器宣告、路由器请求、路由重定向、邻居请求和邻居宣告,具体如下功能:
- 路由器发现:发现链路上的路由器,获得路由器通告的信息。
- 无状态自动配置:通过路由器通告的地址前缀,终端自动生成IPv6地址。
- 重复地址检测:获得地址后,进行地址重复检测,确保地址不存在冲突。
- 地址解析:请求目的网络地址对应的数据链路层地址,类似IPv4的ARP。
- 邻居状态跟踪:通过NDP发现链路上的邻居并跟踪邻居状态。
- 前缀重编址:路由器对所通告的地址前缀进行灵活设置,实现网络重编址。
- 重定向:告知其他设备,到达目标网络的更优下一跳。
- ICMPv6报文分为差错报文和信息报文。ICMPv6差错报文典型应用是Path MTU发现。发送数据之前,提前探测线路的最小MTU,发送数据不超过这个值,这样可以避免数据包在源传输到目的地过程之中,被中途的路由器分片而导致性能下降。
练习题:
在IPv6无状态自动配置过程中,主机将其(17)附加在地址前缀1111 1110 10之后,产生一个链路本地地址。
• A.IPv4地址 B.MAC地址 C.主机名 D.随机产生的字符串
接口在启动IPv6时,自动给配置、链路本地单播地址。由链路本地单播地址前缀FE80::/64;其后64位是接口ID,接口ID根据MAC地址生成的。
6to4是一种支持IPv6站点通过IPv4网络进行通信的技术,下面IP地址中(31)属于6to4地址。
• A.FE90::5EFE:10.40.1.29 B.FE80::5EFE:192.168.31.30
• C.2002:C000:022A:: D.FF80:2ABC:0212
在IPv6定义了多种单播地址,表示环回地址的是(39)。
• A.::/128 B.::1/128 C.FE80::/10 D.FD00::/8
掌握IPv6的特殊地址,IPv6中未指定地址是0:0:0:0:0:0:0:0或::/128,环回地址是::1/128,链路本地地址是FE80::/10。
IPv6组播地址的前缀是(32)。
• A.FF B.FE C.FD D.FC
IPv6组播地址前8为是11111111,即FF。
以下关于IPv6的论述中,正确的是(40)。
• A.IPv6数据包的首部比IPv4复杂 B.IPv6的地址分为单播、广播和任意播3种
• C.IPv6地址长度为128比特 D.每个主机拥有唯一的IPv6地址
IPv6数据包首部比IPv4更简单,故A选项错误。IPv6地址分为单播、组播和任意播,没有广播地址,故B选项错误。IPv6地址长度为128位,故C选项正确。每个主机可以配置多个IPv6地址,比如IPv6私网地址,不一定全球唯一,故D选项错误。
3、过渡技术
IPv4到IPv6过渡技术
- 双栈技术:同时运行IPv4和IPv6。
- 隧道技术:解决IPv6节点之间通过IPv4网络进行通信。
- 翻译技术:解决纯IPv6节点与纯IPv4节点之间通进行通信。
过渡技术 - 隧道
ISATAP隧道技术
- 自动隧道技术
- 可以穿透NAT设备,与私网之外的主机建立IPv6 连接
过渡技术 - 地址翻译
- NAT-PT(Network Address Trannslation-Protocol Translator)
- 实现纯IPv6节点与纯IPv4节点间的通信。
• 静态NAT-PT 1:1
• 动态NAT-PT M:N
• 基于端口NAPT-PT M:1
在从IPv4向IPv6过渡期间,为了解决IPv6主机之间通过IPv4网络进行通信的问题,需要采用(27),为了使得纯IPv6主机能够与纯IPv4主机通信,必须使用(28)。
•(27)A.双协议栈技术 B.隧道技术 C.多协议栈技术 D.协议翻译技术
•(28)A.双协议栈技术 B.隧道技术 C.多协议栈技术 D.协议翻译技术
IPv6与IPv4过渡技术可以归纳为以下3种:
• ①隧道技术:用于解决IPv6结点之间通过IPv4网络进行通信的问题。
• ②双协议栈技术:使得IPv4和IPv6可以共存于同一设备和同一网络中。
• ③翻译技术:使得纯IPv6结点与纯IPv4结点之间可以进行通信。
在IPv4和IPv6混合的网络中,协议翻译技术用于(66)。
• A.两个IPv6主机通过IPV4网络通信 B.两个IPv4主机通过IPv6网络通信
• C.纯IPv4主机和纯IPv6主机之间的通信 D.两个双协议栈主机之间的通信
选择C
三、ICMP
1、ICMP基础
- ICMP(Internet Control Message Protocol,Internet控制报文协议),协议号为1,封装在IP报文中,用来传递差错、控制、查询等信息,典型应用ping/tracert依赖ICMP报文。
2、ICMP报文类型与代码
3、ICMP应用-ping
Echo Request和Echo Reply分别用来查询和响应某些信息,进行差错检测。
4、ICMP应用-tracert
<RTA> tracert 30.0.0.2
Tracert to 30.0.0.2(30.0.0.2), max hops:30, packet length:40, press CTRL_C to break
1 10.0.0.2 130 ms 50 ms 40 ms
2 20.0.0.2 80 ms 60 ms 80 ms
3 30.0.0.2 80 ms 60 ms 70 ms
原理:发送TTL递增的报文
Windows下:源端发的是ICMP报文,echo Request(8,0),中间节点和目的返回的都是TTL超时报文(11 0);
Linux/Unix下:源端发送的是UDP报文,中间节点返回的是TTL超时报文(11,0),目的端返回的是ICMP端口不可达(3,3)。
练习题:
源站收到“在数据包组装期间生存时间为 0”的ICMP报文,出现的原因是(29)。
• A.IP数据报目的地址不可达 B.IP数据报目的网络不可达
• C.ICMP报文校验差错 D.IP数据报分片丢失
掌握ICMP中如下几种不可达信息:
• 目的地址不可达:比如目的服务器禁止被ping。
• 目的网络不可达:删除了网关或网关配置错误,或被ACL拦截。
• 目的端口不可达:比如tftp服务器默认端口是69,客户端如果连接tftp服务器采用8888,那么服务器会返回tftp端
口不可达的ICMP报文。
• 传输期间生存时间为0:tracert过程中,TTL减为0时想客户端回复该报文。
• 在数据包组装期间生存时间为0:分片丢失,不能完成IP数据包重组。
• ICMP报文校验差错:坏的IP首部(包括各种差错)。
• 注意区分两种TTL=0的差错报文:
给出的图显示已经将域名解析为IP地址202.117.112.36,故DNS正常,也不可能是
TCP/IP协议问题,则A和B选项错误。目标网络不可达,可能是没配网关或被ACL拦截,选择D。
路由器收到一个IP数据报,在对其首部校验后发现存在错误,该路由器有可能采取的动作是(49)。
• A.纠正该数据报错误 B.转发该数据报
• C.丢弃该数据报 D.通知目的主机数据报出错
当路由器或目的主机收到的数据报的首部错误时,丢弃该数据报,并向源站发送类型12,代码0的ICMP报文
Windows Server 2008默认TTL是64,由于收到的ICMP回送消息的TTL是50,说明经过了64-50=14台路由器。
ICMP是TCP/IP分层模型第三层协议,其报文封装在(20)中传送。
• A.以太帧 B.IP数据报 C.UDP报文 D.TCP报文
ICMP、OSPF都封装在IP中,RIP封装于UDP 520,BGP封装于TCP 179端口
ARP封装在以太网中
使用Traceroute命令时,由中间路由器返回的ICMP超时报文中Type和Code分别是(17)。
• A.Type=3,Code=0 B.Type=8,Code=0
• C.Type=11,Code=0 D.Type=12,Code=0
tracertroute是Linux下的路径跟踪程序,中间都是TTL超时报文(Type=11,Code=0),最后一个是最后一个是端口不可达。而tracert是Windows下的跟踪程序,所有节点返回都是TTL超时报文。
四、ARP,RARP
1、ARP协议
- 地址解析协议(Address Resolution Protocol,ARP)作用是根据IP地址查询MAC地址。
- 类型中的动态表示是通过ARP协议学习到的,静态表示是手动绑定的。
- 通过命令arp -a或arp -g查看ARP缓存表,删除ARP表项命令是arp -d,静态绑定命令是arp -s。
2、RARP和Gratuitous ARP
- RARP(Reverse Address Resolution Protocol,反向地址转换协议)可以根据MAC地址查找IP地
址,常用于无盘工作站。由于设备没有硬盘,无法记录IP,刚启动时会发送一个广播报文,通过MAC
去获取IP地址。 - Gratuitous ARP:免费ARP(Gratuitous ARP)用于检测IP地址冲突,通常发生在接口配置的时候,
比如接口刚刚DHCP获取了IP地址,就会对外发送免费ARP。 - 原理:主机发送ARP查找自己IP地址对应的MAC地址,如果有终端回复表示发生了IP地址冲突。
3、代理ARP
- 如果ARP请求是从一个网络的主机发往同一网段却不在同一物理网络上的另一台主机,那么连接它们
的具有代理ARP功能的设备就可以回答该请求,这个过程称作代理ARP(Proxy ARP)。 - 如图,PC1和PC2在同一网段,但网关设备却在不同网段,如果PC1 ping PC2,在网关设备上开启代
理ARP功能,网关设备会以自己的MAC地址代为应答。代理ARP具备如下特点:- (1)部署在网关上,网络中的主机不必做任何改动。
- (2)可以隐藏物理网络细节,使两个物理网络可以使用同一个网络号。
- (3)只影响主机的ARP表,对网关的ARP表和路由表没有影响。
练习题:
某计算机遭到ARP病毒的攻击,为临时解决故障,可将网关IP地址与其MAC绑定,正确的命令是(41)。
• A.arp -a 192.168.16.254 00-22-aa-00-22-aa
• B.arp -d 192.168.16.254 00-22-aa-00-22-aa
• C.arp -r 192.168.16.254 00-22-aa-00-22-aa
• D.arp -s 192.168.16.254 00-22-aa-00-22-aa
查询ARP表命令是arp -a,删除ARP表项命令是arp -d,静态绑定命令是arp -s。
在Windows平台上,命令:arp -d的作用是(40)。
• A.开启ARP学习功能 B.添加条ARP记录
• C.显示当前ARP记录 D.删除所有ARP记录
若主机host A的MAC地址为aa-aa-aa-aa-aa-aa,主机host B的MAC地址为bb-bb-bb-bb-bb-bb。由host A发出的查询host B的MAC地址的帧格式如下图所示,则此帧中的目标MAC地址为(24),ARP报文中的目标MAC地址为(25)。
(24)A.aa-aa-aa-aa-aa-aa B.bb-bb-bb-bb-bb-bb C.00-00-00-00-00-00 D.ff-ff-ff-ff-ff-ff
(25)A.aa-aa-aa-aa-aa-aa B.bb-bb-bb-bb-bb-bb C.00-00-00-00-00-00 D.ff-ff-ff-ff-ff-ff
当主机A向局域网内的主机B发送IP数据包时,会先查找自己的ARP表,是否有主机
B的IP与MAC,如果有,就用主机B的MAC地址进行以太网封装。如果主机A的ARP表找不到主机B的
IP与MAC对应关系,主机A就广播ARP请求,寻找主机B的MAC地址。ARP请求抓包如下图,以太网
的目的MAC地址是ff-ff-ff-ff-ff-ff,ARP报文中的目标MAC是00-00-00-00-00-00
自己实验的结果如下图: