目录
1、IPV4 协议
IPV4 地址的组成:
IPV4地址的分类:
关于多播和组播:
常见组播地址分类:
特殊的 IPV4 地址:
私有地址和公有地址:
私有地址的范围:
子网划分:
子网掩码:
可变长子网掩码(VLSM):
CIDR:
路由器中的最佳匹配原则:
IPV4 数据报格式:
2、ARP协议
广域网中主机进行通信时 IP 与 MAC 的变化:
ARP 协议原理:
ARP协议的报文类型:
Windows 中 ARP 相关的命令:
代理ARP(Proxy-ARP)
RARP 协议
3、ICMP 协议(网际控制报文协议)
ICMP协议的报文类型:
ICMP报文的注意事项:
ICMP的应用:
4、QoS:
5、IPV6 协议
IPV6 地址表示:
IPV6 的地址类型:
链路本地地址:
IPV6 多播(组播)地址:
IPV6 任播地址:
IPV6报文的格式:
IPV4 到 IPV6 的过渡方案
1、IPV4 协议
IP 地址分为两类:IPV4 和 IPV6;IP地址用于标识网络设备。网络中的设备都有IP地址,并通过IP地址进行网络的连接。
IP 地址是逻辑地址,可以手动配置和修改。
IPV4 使用32位二进制表示 IP 地址。通常采用点分十进制表示法来进行表示:每8位为一组,共4组,每组之间使用 “.” 进行分隔。
每一组的取整范围都是 0~255 (十进制);
IPV4 地址的组成:
两部分:前面的网络部分、后面的主机部分。
如:192.168.0.11 ,设其网络部分是192.168,后面的 0.11则为主机部分。
如果几台主机的网络部分是一样的,则代表他们在同一个网段(在同一网段的主机即在同一局域网下,相互通信使用交换机通信,不需要使用路由器;而不同网段的主机之间相互通信需要使用到路由器)。
IPV4地址的分类:
A类地址:第一组为网络部分,限制第一组的范围为 1~126;
B类地址:第一、二组为网络部分,限制第一组的范围为 128~191;
C类地址:第一、二、三组为网络部分,限制第一组的范围为 192~223;
D类地址:第一组为网络部分,取值为224~239,其他三组是组播地址IP;
E类地址(保留地址):第一组取值为240~255;
其中A、B、C类地址是单播地址,D类地址是多播地址。单播表示“一对一”之间的通信,而多播即“一对多”的通信。
在计算有效的 IP 地址(能够分配给用户主机使用的IP)个数时,要减去2。其中一个是主机部分全为0,表示网络地址;一个是主机位全取1,表示广播地址。如 IPV4 地址 192.168.1.100 中,前24位(192.168.1)为网络部分,则有效的 IP 地址为192.168.1.1~192.168.1.254,减去网络地址192.168.1.0 和广播地址 192.168.1.255。
关于多播和组播:
多播是向一组特定的接收者发送信息,只有加入了同一个组的主机才能接收到此组内的所有数据。广播则是向网络中的所有主机发送信息,不论这些主机是否属于同一组。
多播有固定的地址段(D类地址),而广播使用特定的广播地址或特定网络的广播地址(如199.123.255.255)
不管一个组播组中包含多少个成员,当组播服务发送信息时,只需要发送一个分组。( 在组播中,“组”是用IP组播地址进行标识的一个集合。任何用户主机(或其他接收设备)加入一个组播组,就成为该组的成员,可以识别并接收发往该组播组的组播数据。一个组播源可以同时向多个组播组发送数据,而多个组播源也可以同时向一个组播组发送数据。组播组成员可以动态地加入或离开组播组,成员的主机可以广泛分布在网络中的任何地方。)
组播和广播只能用于目的地址,而不能用于源地址。
常见组播地址分类:
224.0.0.0 - 224.0.0.255 | 供路由器协议使用 |
224.0.1.0 - 224.0.1.255 | 公用组播地址,用于Internet |
224.0.2.0 - 238.255.255.255 | 全网范围内的临时可用组播地址 |
239.0.0.0 - 239.255.255.255 | 本地管理组播地址,仅在特定的本地范围内有效 |
特殊的 IPV4 地址:
形式 | 是否能作为源地址使用 | 是否能作为目的地址使用 | 备注 |
0.0.0.0 | 是 | 否 | 在本网络上代表本主机 |
255.255.255.255 | 否 | 是 | 在本网络上进行广播 |
127.0.0.1 | 是 | 是 | 用作本地软件环回地址测试使用 |
169.254.x.y (主机号非全0或全1) | 是 | 是 | Windows主机DHCP服务器故障时操作系统分配的私有 IP 地址(APIPA,自动专用IP地址) |
私有地址和公有地址:
公有地址由因特网信息中心复杂分配,可以通过公有地址直接访问因特网。公有地址是全网唯一的,不能重复使用。
私有地址是非注册地址,专门为组织机构内部使用,不能直接访问因特网。私有地址在同一内网中唯一使用,不同内网中可以重复使用。
私有地址要访问因特网,需要使用 NAT(网络地址转换协议)将私有的 IP 转换为公有 IP。内网的主机使用NAT协议,可以通过一个公共的网关来访问因特网。
私有地址的范围:
地址类别 | 地址范围 | 网络号 |
A | 10.0.0.0 - 10.255.255.255 | 10 |
B | 172.16.0.0 - 172.31.255.255 | 172.16 ~ 172.31 |
C | 192.168.0.0 - 192.168.255.255 | 192.168.0 ~ 192.168.255 |
子网划分:
目的 —— 解决地址浪费问题。
作用 —— 将一个大的网络划分成多个不同的小网络,进而解决 IP 地址空间利用率低、两级IP地址不够灵活的问题。
实现过程 —— 借用 IP 地址的若干主机位来充当子网位,进而生成多个不同的子网网络。
通过子网划分后IP地址变成了三级的结构:<网络位><子网位><主机位>
由子网号取不同的值,得到不同的子网网络。
某公司想把原来使用的172.16.0.0/16标准网络划分为12个子网,其中最大的子网节点数在4000个左右。求每个子网的范围。
172.16.0.0/16,最后的16表示网络号位数为16位,则主机号位数为32-16=16位,最后两组为主机号,可以用来做子网划分。
需要12个子网,使用4个二进制位可以表示12,则第 17-20 位用作子网位(可以任意选择12个数,16选12);剩余的12位用作主机位,12位主机位可以表示的主机数量为 2^12-2=4094 个,满足题目的要求。
每个子网的范围可以是:
172.16.0000 0000.1/20 ~ 172.16.0000 0000.254/20;
172.16.0001 0000.1/20 ~ 172.16.0001 0000.254/20;
……
172.16.1011 0000.1/20 ~ 172.16.1011 0000.254/20;
172.16.1100 0000.1/20 ~ 172.16.1100 0000.254/20;
子网掩码:
作用:用于指明 IP 地址的网络位和主机位,规定网络位取1,主机位取0;
设某IP地址的网络位有19位,主机位有13位,则子网掩码为
由 IP 地址的表示方式:192.168.128.100/19 可以看出:
1)子网掩码:255.255.224.0,子网掩码长度19位
2)网络部分:192.168.100 00000.100
3)主机部分:192.168.100 00000.100
4)该地址为C类的私有 IP 地址
可变长子网掩码(VLSM):
在子网的基础上继续划分子网。计算方法也是类似的。
CIDR:
无类别域间路由。是一个用于给用户分配IP地址以及在互联网上有效地路由IP数据包的对IP地址进行归类的方法。
CIDR使用斜线记法,又称为 CIDR 记法,即在 IP 地址后面加一个斜线“/”,然后写上网络前缀所占的位数(子网掩码中1的个数),如:192.168.32.10/20
CIDR路由汇聚:将网络地址中连续相同的位进行汇聚,不同的位则归为汇聚之后的主机位,从而实现多个网段汇聚成一个新的超网网段。
如有四个网段:
192.168.129.0/24 —— 192.168.1000 0001.0/24
192.168.130.0/24 —— 192.168.1000 0010.0/24
192.168.132.0/24 —— 192.168.1000 0100.0/24
192.168.133.0/24 —— 192.168.1000 0101.0/24
则可知在第三组取得最长公共前缀: 1000 0,则新的网络位为 2 * 8 + 5 = 21 位。192.168.128.0/21 为汇聚后的超网 ID。
路由汇聚的好处是可以精简路由器的路由表的数量;路由汇聚的特点是,将多个小的网络,汇聚成一个大的网络。
路由器中的最佳匹配原则:
使用路由汇聚时,路由表的项目主要由 “网络前缀” 和 “下一跳” 地址组成。
查找路由表匹配报文中的目标IP地址时可能会得到不止一个匹配项,应当从匹配结果中选择具有最长网络前缀的路由(最长前缀匹配)。
网络前缀越长,其块地址就越小,因而路由就越具体(即该网络下的主机数量越少)。
IPV4 数据报格式:
字段 | 占位大小(位) | 备注 | 取值 |
版本 | 4 | ip协议的版本号 | IPV4为4(0100) |
首部长度 | 4 | IP报文的长度 | 单位为4字节。最小取值为5(0101),即IP报文的报头长度最小是20个字节 |
总长度 | 16 | IP报文的总长度 | 单位为字节。IP报文最长为 65535 B。 |
标识 | 16 | 对IP分片做表示 | 同一报文中的不同分片有相同的标识,用于对分片的重组 |
标志 | 3 | DF占一位,表示是否不允许分片; MF占一位,表示是否还有更多的分片; 还有一位是保留位。 | 若分片,则DF为0,否则DF=1; 若该片为最后的一片,没有更多的分片,则MF=0,否则MF=1; |
片偏移 | 13 | 指出分片中的数据在报文中的相对位置 | 单位为8B,可以按片偏移字段的值从小到大进行排序和重组。 |
生存时间(TTL) | 8 | 也叫“跳数”,用来预防IP报文无限制地在网络中转发 | 每经过一个路由器,报文中的TTL值会相应减1,当TTL值为0时,路由器将丢弃该报文。 |
协议 | 8 | 用来标识上层使用了什么协议 | |
首部校验和 | 16 | 在网络中转发时,对IP头部做校验 | |
源地址 | 32 | 发送方方IP地址 | |
目的地址 | 32 | 接收方的IP地址 | |
选项 | 可变长 | ||
填充 | 可变长 | 用于确保IP报文首部的长度为4B的整数倍 |
例:IP数据报经过 MTU 较小的网络时需要分片。假设一个大小为1500的报文分为两个较小的报文,其中一个报文的大小为800字节,则另一个报文的大小至少为多少字节?(2017年下半年网工上午试题)
1500的报文,IP 报头占 20 字节,则数据只有 1480 字节;
要分成两个小的报文来发送,第一个报文的数据是800-20=780字节,那么第二个报文的数据是 1480-780=700,加上首部 20个字节,则为 720 字节。
2、ARP协议
ARP协议只在局域网中使用。
当一台主机要和另一台主机通信时,必须要知道目的主机的MAC地址,而这个MAC地址就是通过ARP协议获得的。 ARP 协议即地址解析协议,用于实现 IP 地址到 MAC 地址的映射。
当主机A想要与主机 B 通信但不知道其 MAC 地址时,它会发送一个 ARP 请求广播报文到局域网中,询问主机 B 的 MAC 地址。这个 ARP 请求广播报文会包含主机 B 的 IP 地址,由于尚未知道主机 B 的 MAC 地址,此时的目的 MAC 地址为 0 ;当封装成帧时,目的 MAC 地址会被设置为广播地址(FF-FF-FF-FF-FF-FF),以便局域网中的所有主机都能接收到这个报文。
若主机 hostA 的 MAC 地址为 aa-aa-aa-aa-aa-aa,主机 hostB 的 MAC 地址为 bb-bb-bb-bb-bb-bb。由 hostA 发出的查询 hostB 的 MAC 地址的帧格式如下图所示,则此帧中的目标MAC地址为多少?ARP报文中的目标MAC地址为多少?(2018年上半年网工上午题)
帧中的目标MAC地址为:ff-ff-ff-ff-ff-ff;
报文中的目标MAC地址为:00-00-00-00-00-00
当主机 B 收到这个 ARP 请求广播报文后,它会检查报文中的 IP 地址是否与自己的IP地址匹配。如果匹配,主机 B 就会回复一个ARP响应报文给主机 A,将自己的 MAC 地址提供给主机A。(广播发送 ARP 请求,单播回应 ARP 响应。)
网络层及以上使用 IP 地址;数据链路层及以下使用硬件地址(MAC地址)。
广域网中主机进行通信时 IP 与 MAC 的变化:
设主机 H1 和主机 H2 在不同的局域网中,主机 H1 要发送消息给主机 H2,通信中间要经过路由器 R1。
数据离开 H1 时,源IP为IP1,目的IP为IP2,源MAC地址为 HA1,目的MAC地址是HA3。(注意这里是广域网通信,不清楚目标主机的MAC,所以目标MAC是中转的路由器MAC地址,让路由器帮忙处理;如果是局域网中,则目标MAC地址就一定是目标主机的MAC地址)
从 H1 到 R1 和从 R1 到 H2 时:IP数据报中的源地址和目的地址都是 IP1 、IP2;两个IP地址始终保持不变。
但是,从H1 到 R1 后,数据帧中的目的 MAC 地址由 R1 的 MAC 地址变成 H2 的 MAC 地址HA2,源MAC地址由 HA1 变成 HA4。
总而言之,在不同的局域网中进行通信,IP地址始终不变,每经过一次路由器,MAC地址都(源、目的)会发生改变;在同一个局域网中进行通信,IP地址和MAC地址都不会变。
ARP 协议原理:
ARP 协议在 IP 协议之下,通过广播发送 ARP 请求报文,来获取 IP 与 MAC 的映射关系。
ARP协议的报文类型:
ARP 报文包括 ARP 请求分组报文和 ARP 响应分组报文。报文内容都包括以下部分:
发送方MAC地址;
发送方IP地址;
目标方MAC地址(如果是请求分组报文,该项未知时为0);
目标方IP地址;
路由器不会转发 ARP 请求,ARP请求只会在本地进行广播,直接封装在帧中进行传输。
Windows 中 ARP 相关的命令:
arp -a | 查看ARP缓存表 |
arp -d | 清除ARP缓存 |
arp -s ip地址 mac地址 | 用于静态绑定 如:arp -s 192.168.1.123 a0-1a-64-aa-aa-aa |
arp 192.168.1.2 | 获取 192.168.1.2 这台主机对应的MAC地址 |
代理ARP(Proxy-ARP)
当出现跨网段的 ARP 请求时,由离源主机最近的路由器将自己的 MAC 地址返回给发送 MAC广播请求的主机,实现 MAC 地址代理最终使主机能够正常通信。
RARP 协议
逆向地址解析协议,实现 MAC 地址到 IP 地址的映射。
3、ICMP 协议(网际控制报文协议)
背景:IP 协议采用无连接的数据报转发方式,网络中的节点尽最大努力交付IP报文,整个过程并不保证可靠交付。
ICMP 协议的作用:可以传送 IP 通信过程中出现的错误信息,进而帮助提升 IP 报文成功交付的概率。
ICMP 协议封装在 IP 数据报中进行传输。
ICMP协议的报文类型:
ICMP报文的注意事项:
- 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文;
- 对具有特俗地址(如127.0.0.1、0.0.0.0等)的数据报不发生 ICMP 差错报告报文;
- 对具有多播地址的数据报都不发送 ICMP 差错报告报文;
- 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文;
ICMP的应用:
路由追踪的过程:
通过向目标发送一连串TTL值依次加1且端口不可达的数据报,从而实现对到达目标地址的路径跟踪。
H1发送一个 TTL=1 数据包,根据返回的超时消息可获得第一跳路由器的地址 RA;
H1发送一个 TTL=2 数据包,根据返回的超时消息可获得第二跳路由器的地址 RB;
……
H1发送一个 TTL = 4 数据包,数据包成功到达目标主机,返回一个端口不可达的错误,此时路由跟踪结束。
4、QoS:
IPV4 网络存在以下几个问题:延迟、丢包、延迟抖动;
QoS —— 服务质量,是用来解决网络延迟和阻塞等问题的一项技术。使用QOS的目的是为了区分流量,保证重要流量及时被转发。
5、IPV6 协议
解决的问题:从根本上解决 IPV4 地址资源不足的问题
相较于 IPV4 的改进:
- 更大的地址空间,128位
- 拓展的地址层次结构
- 灵活的首部格式
- 改进的选项
- 允许协议继续扩充
- 支持手动配置
- 支持资源的预分配
IPV6 地址表示:
IPv6地址由128位组成,分为前缀和后缀两部分。前缀部分用于标识网络,由IPv6地址分配机构分配;后缀部分用于标识主机,由网络接口ID生成
- 使用冒号十六进制记法,把每一个16位的二进制值使用十六进制值表示,各值之间用冒号分隔。
- 允许把数字前面的 0 省略
- 支持将一组连续的 0 压缩成一对冒号代替(零压缩),但是双冒号的形式只能出现一次
如 IPV6 的初始地址为:0000:0000:0000:0db8:0000:0000:0042:8329
前导零进行省略:0000:0000:0000:db8:0000:0000:42:8329
压缩连续的零:::db8:0000:0000:42:8329 或 0000:0000:0000:db8::42:8329
因为连续的零只能出现一次,因此不能变成:::db8::42:8329
特殊的地址:
环回地址
0000:0000:0000:0000:0000:0000:0000:0001,可以通过规则缩写为 ::1
未分配地址(全为0),不能分配给任何节点,也不能用作目的地址
0000:0000:0000:0000:0000:0000:0000:0000,即 ::/128
在 IPV6 中,CIDR斜线表示方法仍然适用,如 60 位前缀12AB00000000CD30可以记为:
- 12AB:0000:0000:CD30:0000:0000:0000:0000/60
- 或 12AB::CD30:0:0:0:0/60
- 或 12AB:0:0:CD30::/60
IPV6 的地址类型:
(1)单播:传统的点对点通信
(2)多播:一点对多点的通信
(3)任播:任播是IPV6 新增加的一个类型,数据报在交付时只交付其中的一个,通常是距离最近的一个。
地址类型 | 地址前缀 | IPV6前缀标识 |
全球单播地址 | 全球路由选择前缀(48位) | 前三位固定为001 |
链路本地(单播)地址 | 1111111010 | FE80::/10 |
站点本地(单播)地址 | 1111111011 | FEC0::/10 |
多播地址 | 11111111 | FF00::/8 |
任播地址 | 从单播地址空间中进行分配,使用单播地址格式 |
全球单播地址的等级结构:
链路本地地址:
- 每个设备的接口在启动 IPV6 时都会自动配置一个链路本地地址
- IPV6 的 “邻居发现” (ND)机制要用到 IPV6 的链路本地地址,IPV6 中没有广播,也不需要使用ARP协议,“邻居发现” 是 IPV6 中与 IPV4 的 ARP 对应的寻址机制
- 链路本地地址以 “FE80” 开头
- 接口ID(接口表示符)由 EUI-64 算法生成,将 MAC 地址和其他的一些信息转换为 IPv6 地址的后 64 位;
- 路由器不会转发链路本地地址
IPV6 多播(组播)地址:
- 任何一个节点都可以是一个组播组的成员
- 一个源节点可以发送数据包到组播组
- 组播组的所有成员都能收到发往该组播组的数据包
- 组播地址在 IPV6 中不能用作源地址使用,也不能出现在任何选择路由中
IPV6 任播地址:
- 任播地址是 IPV6 特有的地址类型,他用来标识一组网络接口(主机、路由器、交换机等)
- 路由器会将目的地址是任播地址的数据包发送给距离本地路由器最近的一个网络接口(一对一组中的一个)
IPV6报文的格式:
首部长度固定40字节, 通过选项字段来扩充首部,并封装于有效载荷。
IPV6 和 IPV4 二者是不兼容的(报文格式不同)。
在 IPV6 网络中,除了逐跳选项拓展首部外,路由器都不处理其他的拓展首部,这样大大提高了路由器的处理效率。
在 RFC 2460 中定义了六种拓展首部:
- 逐跳选项
- 路由选项
- 目的站选项
- 分片
- 鉴别
- 封装安全有效载荷
IPV4 到 IPV6 的过渡方案
IPV6 的隧道技术有多种,分为手动隧道和自动隧道
隧道技术 | 特殊地址 | |
自动隧道 | ISATAP隧道 | ::0000:5EFE:w.x.y.z |
IPV4 兼容 IPV6 自动隧道 | ::w.x.y.z(0:0:0:0:0:0:w.x.y.z) | |
IPV6 to IPV4 隧道 | 完整的IPV6 to IPV4 主机地址由 IPV6 to IPV4地址的48位格式前缀(2002:A.B.C.D::/48)和后面的子网标识符ID以及64位的接口ID组成 | |
手动隧道 | IPV6-OVER-IPV4 GRE隧道 | 手动指定IPV4地址 |
三种过渡方案的对比:
特点 | |
双协议栈技术 | 是实现其他IPV6过渡方案的基础技术 |
隧道技术 | 通常应用于IPV6孤网,通过现有的IPV4网络通信,通过再次封装,形成通信隧道 |
网络地址转换技术 | 通过地址转换协议,进行 IPV6 to IPV4 或IPV4 to IPV6 访问转换,可满足IPV4纯节点于IPV6纯节点之间的双向访问请求 |
参考:
[1] IPv4地址分类(A类 B类 C类 D类 E类)_ipv4分类-CSDN博客
[2] 一文读懂ARP协议,从IP获取对方MAC实操 - 知乎