这篇笔记专门讲IPv4。
2.IPv4🦊
IP协议(Internet Protocol,网际协议)是互联网的核心!
IP协议定义了一个非常重要的数据结构——IP数据报,也就是IP分组。
ARP协议用于查询同一网络中的<主机IP地址,MAC地址>之间的映射关系。
ICMP协议用于网络层实体之间相互通知“异常事件”。
IGMP协议用于实现IP组播。
2.1.IPv4分组
先探讨IP协议当中定义的最重要的数据结构——IP分组。
🦉第一行:如何计算数据部分占多少字节。
🦉第二行:如何分片
2.2.IPv4地址
维度 | IP 地址 | MAC 地址 |
---|---|---|
性质 | 逻辑地址(软件层面) | 物理地址(硬件层面) |
作用范围 | 跨网络通信(如互联网) | 局域网内直接通信 |
协议层 | 网络层(OSI 第三层) | 数据链路层(OSI 第二层) |
格式 | IPv4:由 32 位二进制数组成,通常以点分十进制表示(如 IPv6:由 128 位二进制数组成,以十六进制表示(如 |
由 12 位十六进制数组成,通常以冒号或连字符分隔(如 00:1A:2B:3C:4D:5E 或 00-1A-2B-3C-4D-5E )。 |
打比方 | 像 “城市 + 街道 + 门牌号”(逻辑定位) 作用:告诉你 “快递要送到哪个城市的哪个区域”,是一种逻辑上的位置标识,用于跨区域(跨网络)寻址。 特点:①可变动,比如你搬家到另一个城市,收件地址(IP 地址)就会变化,但你本人(设备)还是同一个。②分层结构:类似 “中国上海市黄浦区南京东路 100 号”,IP 地址也有 “网络部分 + 主机部分” 的分层结构(如 场景:你用手机访问抖音时,手机的 IP 地址告诉抖音服务器 “我在某个城市的某个网络里”,服务器通过 IP 地址找到你所在的网络区域。 |
像 “身份证号码”(物理唯一标识) 作用:告诉你 “快递最终要交给哪个具体的人”,是设备网卡的物理唯一标识,用于局域网内精准识别设备。 特点:①终身固定:就像身份证号伴随你一生,MAC 地址在设备出厂时就刻在网卡芯片里,理论上不会改变(除非人为修改)。②无逻辑结构:MAC 地址(如 场景:你家路由器收到一个快递(数据帧),需要发给你手机时,会先看快递单上的 MAC 地址(手机网卡的物理地址),直接把数据 “递” 给对应的手机,不会搞错给隔壁邻居的电脑。 |
假设你从北京寄快递到上海的朋友家:
跨城市运输(跨网络通信):
你在快递单上写清楚IP 地址:上海市浦东新区 XX 路 XX 号(逻辑位置)。
快递公司根据这个地址,通过公路、铁路等运输网络(路由器),把快递从北京分拣到上海的某个快递站点(目标网络)。
最后一公里配送(局域网内通信):
快递站点的工作人员需要找到具体收件人,这时查看快递单上的MAC 地址:张三(身份证号 123456...)。
通过身份证号(MAC 地址)精准定位到张三本人,把快递交到他手里(数据帧通过 MAC 地址直达设备)。
练习图
2.2.1.最初的方案(1981)
在这个方案中,一台主机需要配置:IP地址,默认网关
只有网络号相同的两个IP地址才归属于同一个网络。
2.2.1.1.地址分类
时代背景:IPv4协议是1981年发明的,当时只有政府、学校、军队等大机构会使用互联网。完全没有预料到互联网用户会迎来爆炸性增长。因此IPv4协议中,地址位数仅设计了(
亿)。IP地址资源由ICANN(互联网名字和数字分配机构)进行分配(有偿租用)这个机构对有限的IP地址进行了ABCDE这样的五种分类。
可以按照图中‘0’,‘10’,‘110’,‘1110’,‘1111’
2.2.1.2.分组转发
IP数据报又叫IP分组,所以这一系列操作叫分组转发。
假设:某学校申请了一个B类地址段 166.1.x.x,某公司申请了一个C类地址段200.1.1.x。
学校路由器如果收到一个IP分组,就会检查IP分组首部的这个目的地址。从这个目的地址当中拆分出网络号。
然后用目的地址的网络号和自己的这个转发表进行对比,如果一个IP分组的目的网络号的前16个比特能够和166.1.能够匹配上,说明这个IP分组是要发给166.1.这个网络内部的某一个节点的,
那么就会把这个IP分组从B2这个接口转发。
数据报发送到相同网络H1⇒H6
数据报发送到不同网络H1⇒H7
IP数据报内部的原地址和目的地址一直都没变。
IP数据报封装成帧之后,MAC帧的MAC地址在整个转化过程当中是一直在变化的。
数据报发送到互联网上H1⇒Internet的另一个节点
2.2.1.3.一些特殊用途的IP地址
这些特殊地址不能指派给网络中的任何一台主机或路由器“私用”。
(Y表示非全0或非全1的任何数)
网络号 | 主机号 | 作为分组源地址? | 作为分组目的地址? | 代表的含义 |
Y | 00……00 | ❌ | ❌ | 表示整个网络本身 (只能用于路由表、转发表) |
Y | 11……11 | ❌ | ✅ | 向网络号为Y的网络广播IP分组 |
以上两行说明,如果一个网络中,主机号占,那么这个网络中,最多支持
台主机或路由器。
网络号 | 主机号 | 作为分组源地址? | 作为分组目的地址? | 代表的含义 |
00……00 | Y | ✅ | ❌ | 表示本网络中主机号为Y的主机 |
网络号 | 主机号 | 作为分组源地址? | 作为分组目的地址? | 代表的含义 |
00……00 | 00……00 | ✅ | ❌ | 本网络上的本主机 (会在DHCP协议中使用) |
11……11 | 11……11 | ❌ | ✅ | 向本网络(局域网)广播IP分组 |
以上两种IP地址可能会配合使用。
第一行的全0的IP地址通常是用于一个主机刚开始接入网络的时候。
一台主机刚开始接入网络的时候没有IP地址,为了让自己拥有一个IP地址,这台主机需要广播一个DHCP报文来让自己获得一个IP地址,这个报文的源地址就只能先写成00……00,目的地址写成11……11。把这个DHCP报文封装成一个IP数据报,那么这个IP数据报就会被广播到整个网络当中的每一