IPv4概述
IPv4地址就是 Internet 上的
每一台主机(可上网设备都称为主机)的每一个接口分配一个在全世界范围内的唯一的32比特的标识符用32为二进制位表示不方便阅读,记录,因此采用
点分十进制表示
IPv4地址编制方法的三个阶段
1981:分类编址
A类
B类
C类
题目
1985:划分子网
为了避免IP地址大量浪费所采取的方案,在已分配的网络中的主机号的最高位借位来作为子网,为了区分借了几位做子网就又引入了子网掩码(
可以用来表示借了几位用作子网)
子网掩码中
使用连续的1来对应网络号与子网号,使用连续的0表示主机号,IP地址 & 子网掩码 = IP地址所在的网络地址(默认子网掩码:就是没有子网的时候,和上面一样,网络号全1,主机号全0)
题目
1993:无分类编址
因为占用空间极多的C类网络地址没有得到充分利用,而且IPv4即将消耗殆尽,所以提出了无分类编址(CIDR)
路由聚合(构建超网)
IPv4地址不足所采取的方法
这只是在现有的基础上让其IP地址尽可能的够用,并没有从根本上解决IP不足的问题,还是需要IPv6
DHCP
动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)常用于给主机动态地分配IP地址,它提供了即插即用联网的机制,这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与,它只会为开机的主机分配 IP,当主机关机后就会回收 IP- DHCP是应用层协议,它是基于UDP的
工作原理
- 主机开机时会向DHCP服务器
广播发送发现报文【事务ID,主机的MAC地址】,这时该主机就是DHCP客户端了,本地主机上的所有主机都能接收到该广播,但只有DHCP服务器才会处理该报文 - DHCP 收到发现报文后,先查自己数据库,来查看是否存在该MAC地址的配置信息,如果有,则直接用这些信息构建DHCP提供报文;若没有,则从服务器的IP地址池中分配一个地址【
分配前使用ARP确认该地址未被主机使用】给客户端【广播,通过事务ID进行判断是否是自己要的】 - 若客户端收到多个DHCP服务器给的响应,会从中选一个使用,然后【广播发送询问请求,我用你的地址了哈】
- 若服务器同意客户端使用,则返回DHCP确认报文【广播】
- 这时主机才会使用该DHCP分配的IP地址【使用前还会用ARP进行检测,若已有人使用,则客户端发送DHCP谢绝报文,然后继续
发现报文】
NAT
VPN:如果同学在家需要访问学校的资源,就需要使用 VPN 技术
工作原理
- 使用NAT时需要在专用网连接到因特网的路由器上安装NAT软件,NAT路由器至少有一个有效的外部全球地址
- 使用本地地址的主机和外界通信时,·NAT路由器使用NAT转换表将本地地址转换成全球地址,或将全球地址转换成本地地址
- NAT转换表中存放着{本地IP地址:端口}到{全球IP地址:端口}的映射
- 通过{ip地址:端口}这样的映射方式,可让多个私有IP地址映射到同一一个全球IP地址
NAPT 路由器:就是在原本直接将私有 ip 转换为 公网 ip 的情况,加上了端口,进一步充分利用 NAT 技术使用 NAT 技术的网络中,外网主机不能直接给内网主机发送请求,这就有了内网穿透
IPv4地址应用规划
定长子网掩码划分
变长子网掩码划分
ARP协议
ARP协议主要的作用:根据IP地址找MAC地址
ARP协议会将ARP报文封装成MAC帧进行广播发送(相当于局域网内进行广播),携带内容(当前自己的IP,MAC地址;然后需要获取MAC地址的IP地址),当前局域网都会获得,然后交给上层的ARP进行解析,如果发现不是发给自己的就丢弃,是自己的就将其放入自己的ARP高速缓存表,然后封装ARP响应的MAC帧(我的IP,MAC地址是什么)【请求是广播,响应是单播】
ARP没有安全验证装置,存在ARP攻击问题
IPv4 报文格式
- 版本号:4个比特(IPv4,IPv6等)
- 首部长度:4个比特,单位4字节(最小10进制数5(只有固定部分),最大15(固定部分+可变部分))
- 可选字段:长度1-40字节不等,用来排错、测量以及安全等措施
- 填充部分:主要保证首部长度是 4 的整数倍
- 区分服务:8个比特
- 总长度:16比特,首部 + 载荷,可传输 65535 字节
- 标识、标志、片偏移:用来做IP数据报分片的
- 标识:一个数据报的多个片拥有一样的标识,用于接收方进行组合数据报
- 标志:DF位:是否允许分片;MF:是否还有分片;保留一位
- 片偏移16位,单位:8字节,标识当前分片的有效长度
- 生存时间:TTL 255,没经过一次路由转发就 --,等到这个值为0的时候就表示目的主机不可达,ping IP 可看到该值
- 协议:传输层所使用的协议编号
- 首部检验和:校验 IP 首部是否出错(IPv6不计算该值,因为 IP 不负责可靠传输)
网际控制报文协议 ICMP
为了有效转发 IP 数据报和提高交付成功机会,引入 ICMP
主机或路由器使用 ICMP 来发送
差错报告报文和询问报文,被封装在 IP 数据报中
五种差错报告报文
- 终点不可达:当数据不能被交付时,就会向源主机发送终点不可达报文,如:网络不可达、目的主机不可达、目的端口不可达等 13 种错误
- 源点抑制:链路中发生拥塞丢弃报文就会返回这个
- 时间超过:TTL = 0
- 参数问题:首部校验和出现问题
- 改变路由【重定向】:源主机到目的主机有更优的路线,第一次传输就会返回改变路由报文,后序进行该目的主机发送就会走修改后的
以下情况不会发送 ICMP
- 对 ICMP 差错报告报文不应发送 ICMP 报错报文
- 对第一个分片的后序分片不再发送
- 对具有多播地址的数据报不发送 ICMP
- 对具有特殊地址(如:127.0.0.1,0.0.0.0)的报文不发送
ICMP 询问报文
- 回送请求和回答:向一个特定的主机发送询问,该主机必须回应 ICMP 回答报文,用于测试目的主机是否可达
- 时间戳请求和回答:用来进行时钟同步的(ICMP 时间戳回答报文中有一个 32 位字段,用于存储时间戳的)
ICMP 举例
- ping 命令:使用的就是回送请求和回答报文
- 跟踪路由:用来测试访问一个地址所经过的中转设备