【湖科大计网】4.2 IPv4

209 阅读7分钟

IPv4概述

IPv4地址就是 Internet 上的 每一台主机(可上网设备都称为主机)的每一个接口分配一个在全世界范围内的唯一的32比特的标识符

用32为二进制位表示不方便阅读,记录,因此采用点分十进制表示

IPv4地址编制方法的三个阶段

1981:分类编址

image.png

A类 image.png

B类 image.png

C类 image.png 题目

image.png

1985:划分子网

为了避免IP地址大量浪费所采取的方案,在已分配的网络中的主机号的最高位借位来作为子网,为了区分借了几位做子网就又引入了子网掩码(可以用来表示借了几位用作子网

子网掩码中使用连续的1来对应网络号与子网号,使用连续的0表示主机号IP地址 & 子网掩码 = IP地址所在的网络地址(默认子网掩码:就是没有子网的时候,和上面一样,网络号全1,主机号全0)

image.png 题目

image.png

1993:无分类编址

因为占用空间极多的C类网络地址没有得到充分利用,而且IPv4即将消耗殆尽,所以提出了无分类编址(CIDR)

image.png

image.png

路由聚合(构建超网)

image.png

IPv4地址不足所采取的方法

这只是在现有的基础上让其IP地址尽可能的够用,并没有从根本上解决IP不足的问题,还是需要IPv6

DHCP

  • 动态主机配置协议(Dynamic Host Configuration Protocol, DHCP)常用于给主机动态地分配IP地址,它提供了即插即用联网的机制,这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与,它只会为开机的主机分配 IP,当主机关机后就会回收 IP
  • DHCP是应用层协议,它是基于UDP的

工作原理

  1. 主机开机时会向DHCP服务器广播发送发现报文【事务ID,主机的MAC地址】,这时该主机就是DHCP客户端了,本地主机上的所有主机都能接收到该广播,但只有DHCP服务器才会处理该报文
  2. DHCP 收到发现报文后,先查自己数据库,来查看是否存在该MAC地址的配置信息,如果有,则直接用这些信息构建DHCP提供报文;若没有,则从服务器的IP地址池中分配一个地址【分配前使用ARP确认该地址未被主机使用】给客户端【广播,通过事务ID进行判断是否是自己要的】
  3. 若客户端收到多个DHCP服务器给的响应,会从中选一个使用,然后【广播发送询问请求,我用你的地址了哈】
  4. 若服务器同意客户端使用,则返回DHCP确认报文【广播】
  5. 这时主机才会使用该DHCP分配的IP地址【使用前还会用ARP进行检测,若已有人使用,则客户端发送DHCP谢绝报文,然后继续发现报文

image.png

NAT

VPN:如果同学在家需要访问学校的资源,就需要使用 VPN 技术

image.png

image.png

工作原理 image.png

  • 使用NAT时需要在专用网连接到因特网的路由器上安装NAT软件,NAT路由器至少有一个有效的外部全球地址
  • 使用本地地址的主机和外界通信时,·NAT路由器使用NAT转换表将本地地址转换成全球地址,或将全球地址转换成本地地址
  • NAT转换表中存放着{本地IP地址:端口}到{全球IP地址:端口}的映射
  • 通过{ip地址:端口}这样的映射方式,可让多个私有IP地址映射到同一一个全球IP地址
  • NAPT 路由器:就是在原本直接将私有 ip 转换为 公网 ip 的情况,加上了端口,进一步充分利用 NAT 技术
  • 使用 NAT 技术的网络中,外网主机不能直接给内网主机发送请求,这就有了内网穿透

IPv4地址应用规划

定长子网掩码划分

image.png

变长子网掩码划分

image.png

ARP协议

ARP协议主要的作用:根据IP地址找MAC地址

ARP协议会将ARP报文封装成MAC帧进行广播发送(相当于局域网内进行广播),携带内容(当前自己的IP,MAC地址;然后需要获取MAC地址的IP地址),当前局域网都会获得,然后交给上层的ARP进行解析,如果发现不是发给自己的就丢弃,是自己的就将其放入自己的ARP高速缓存表,然后封装ARP响应的MAC帧(我的IP,MAC地址是什么)【请求是广播,响应是单播】

ARP没有安全验证装置,存在ARP攻击问题

IPv4 报文格式

image.png

  1. 版本号:4个比特(IPv4,IPv6等)
  2. 首部长度:4个比特,单位4字节(最小10进制数5(只有固定部分),最大15(固定部分+可变部分))
  3. 可选字段:长度1-40字节不等,用来排错、测量以及安全等措施
  4. 填充部分:主要保证首部长度是 4 的整数倍
  5. 区分服务:8个比特
  6. 总长度:16比特,首部 + 载荷,可传输 65535 字节
  7. 标识、标志、片偏移:用来做IP数据报分片的
    1. 标识:一个数据报的多个片拥有一样的标识,用于接收方进行组合数据报
    2. 标志:DF位:是否允许分片;MF:是否还有分片;保留一位
    3. 片偏移16位,单位:8字节,标识当前分片的有效长度
  8. 生存时间:TTL 255,没经过一次路由转发就 --,等到这个值为0的时候就表示目的主机不可达,ping IP 可看到该值
  9. 协议:传输层所使用的协议编号
  10. 首部检验和:校验 IP 首部是否出错(IPv6不计算该值,因为 IP 不负责可靠传输)

image.png

网际控制报文协议 ICMP

为了有效转发 IP 数据报和提高交付成功机会,引入 ICMP

主机或路由器使用 ICMP 来发送 差错报告报文和询问报文,被封装在 IP 数据报中

五种差错报告报文

  1. 终点不可达:当数据不能被交付时,就会向源主机发送终点不可达报文,如:网络不可达、目的主机不可达、目的端口不可达等 13 种错误
  2. 源点抑制:链路中发生拥塞丢弃报文就会返回这个
  3. 时间超过:TTL = 0
  4. 参数问题:首部校验和出现问题
  5. 改变路由【重定向】:源主机到目的主机有更优的路线,第一次传输就会返回改变路由报文,后序进行该目的主机发送就会走修改后的

以下情况不会发送 ICMP

  1. 对 ICMP 差错报告报文不应发送 ICMP 报错报文
  2. 对第一个分片的后序分片不再发送
  3. 对具有多播地址的数据报不发送 ICMP
  4. 对具有特殊地址(如:127.0.0.1,0.0.0.0)的报文不发送

ICMP 询问报文

  1. 回送请求和回答:向一个特定的主机发送询问,该主机必须回应 ICMP 回答报文,用于测试目的主机是否可达
  2. 时间戳请求和回答:用来进行时钟同步的(ICMP 时间戳回答报文中有一个 32 位字段,用于存储时间戳的)

ICMP 举例

  1. ping 命令:使用的就是回送请求和回答报文
  2. 跟踪路由:用来测试访问一个地址所经过的中转设备