当前位置: 首页 > news >正文

一篇文章详细解析 IPv4地址

IP数据报(IP分组)

实际传输中,数据部分的长度会受到数据链路层的的 最短/最长帧长 限制

一个链路层数据帧能承载的最大数据量称为 最大传送单元(MTU)

如果一个IP数据包的总长度 > 下一段链路的MTU,就需要对其进行分片。到达目标主机的网络层后再对分片进行重组。

那么接收方如何区分分片属于哪个数据报?如何进行组装?

  • 通过分片的 标识 字段来判断属于哪个数据报。
  • 通过 标志 字段来判断分片是不是最后一个分片。最低为MF(More Fragment),次低位DF(Dont Fragment)。
    • MF = 1,表示后面还有分片。MF = 0表示这是最后一个分片。
    • DF = 1,表示不允许被分片。DF = 0表示允许被分片。
  • 最后根据 片偏移 来完成分片的重组(由于首部的 片偏移 字段必须是以 ×8B 为单位,因此除最后一个分片之外,其他分片的长度必须是 8B 的整数倍)

生存时间:数据报在网络中可通过的路由器数的最大值。IP分组每经过一个路由器,TTL--,如果已经减到0,该路由器就丢弃分组并向源主机发送ICMP报文(通知出现异常)

协议如果为TCP协议服务设为6,为UDP协议服务设为17。可以让目的主机知道当前数据报向上递交给TCP协议还是UDP协议

IP地址

  • 在那个年代,要求每台主机、每个路由器接口被分配的 IP 地址都是全球唯一的
  • 路由器和路由器连接的接口可以不分配 IP 地址,但路由器和其他节点连接的接口必须分配 IP 地址
  • 从属于同一个网络的所有主机、路由器接口的 IP 地址 “网络号” 都相同
  • 当一台新主机接入网络时,需要给它分配一个 IP 地址、并配置 “默认网关

  • 如果是跨网络传播,则需要经过网关
  • ARP协议可以将IP地址转换为对应的MAC地址
  • 如果是同一个网络内传播,则无需经过网关。通过ARP协议将目标IP地址转为目标MAC地址,然后将数据报封装为MAC帧直接在网络内部传输。如果要跨网络传输,则需要将数据报封装 吗,则要再经过不同网关传输到另一个网络

子网划分与子网掩码

子网划分将一个大的网络划分成若干个较小的子网的过程。例如将学校的网络再划分为不同校区的网络。

作用:

  • 提高 IP 地址利用率:在没有子网划分前,一个网络无论主机数量多少,都只能使用一个固定类别的网络地址,造成 IP 地址浪费。通过子网划分,可根据实际需求将大网络划分为多个子网,合理分配 IP 地址。例如,一个公司有多个部门,每个部门主机数量不同,子网划分后,可按需分配 IP,减少浪费。
  • 增强网络管理和安全性:不同子网可以进行独立的管理和配置,如设置不同的访问控制策略。同时,子网间的通信需要通过路由器,可在路由器上设置防火墙规则,提高网络安全性。

划分原理:

  • IP 地址由网络号和主机号两部分组成。子网划分是通过借用主机位来扩展网络号,从而产生子网。例如,对于一个 C 类网络(默认子网掩码是 255.255.255.0 ,即网络号占 24 位,主机号占 8 位 ),若借用 3 位主机位来划分子网,那么子网掩码就变为 255.255.255.224(/27 ),网络号变为 27 位,主机号变为 5 位 。

子网掩码:子网掩码用于标识 IP 地址中网络号和主机号的界限。通过将 IP 地址和子网掩码进行按位与运算,可得到网络前缀(<网络号,子网号>)。例如,IP 地址为 192.168.1.100 ,子网掩码为 255.255.255.0 ,按位与运算后得到网络地址 192.168.1.0 ,网络前缀为192.168.1。只有网络前缀相同的IP地址才属于同一个网络

无分类编制 CIDR

子网划分

  • 定长子网划分:把主机号的前k bit分出来作为定长子网号,可以划分出2^k 个子网
    • 缺点:每个子网都一样大,不够灵活,IP地址利用率低,资源浪费多
  • 变长子网划分

CIDR 地址块的子网划分技巧

可以利用类似于 “从根到叶构造二叉哈夫曼树” 的技巧

  • 原始 CIDR 地址块作为根节点(假设可以自由分配的主机号占 h bit)
  • 每个分支节点必须同时拥有左右孩子,左 0,右 1(反过来也行)
  • 每个叶子结点对应一个子网,根据根节点到达叶子结点的路径来分析子网对应的 IP 地址块范围
  • 整棵树的高度不能超过 h - 1(因为即便最小的子网也至少要保留 2bit 主机号)

路由聚合

对于一个路由转发表,如果几条路由表项的转发接口相同,部分网络前缀也相同,那么可以将这几条路由表项聚合为一条。这种地址的聚合就是路由聚合,也称构成超网。

采用CIDR技术后,由于路由聚合,一个IP地址转发表项可能匹配多个表项,应使用 最长前缀原则

优缺点

  • 路由聚合可以减少路由表的大小
  • 减少查询时间,转发时延更低
  • 可能会引入额外的无效地址

网络地址转换NAT

私有 IP 地址(内网 IP)

  • 只允许分配给局域网内部的节点,不允许分配给互联网上的节点
  • 每个局域网内部都可以自行分配这些私有 IP 地址
  • 私有 IP 地址是可复用的,只要求局域网内唯一,不要求全球唯一

全球 IP 地址(外网 IP

  • 通常由 ISP 提供,全球唯一
  • 外网 IP 是一个局域网与外界通信时所需使用的 IP 地址

NAT 路由器

  • 作用:转发 IP 数据报时,进行内网 IP、外网 IP 的相互转换
  • NAT 表,记录地址转换关系 ——<内网 IP: 端口号↔外网 IP: 端口号>
  • 一个 IP 数据报
    • 从内网转发到外网,会更改源 IP 地址、源端口号
    • 从外网转发到内网,会更改目的 IP 地址、目的端口号
  • NAT 路由器包含传输层的功能(因为端口号是传输层的概念)

不同网络进程之间通信过程

地址解析协议ARP

在一个局域网内部,可以通过 ARP协议 可以查询到一个 IP 地址对应的 MAC 地址

ARP表(ARP缓存)

  • 记录(IP 地址 - MAC 地址)之间的映射关系
  • 一个数据结构(每台主机、每台路由器都有自己的 ARP 表
  • 需要定期更新 ARP 表项

查询过程:

  • ARP 请求分组
    • 内容
      • 发送方标识:自身 IP 地址为 X,MAC 地址为 Y
      • 目标方查询:需查询 IP 地址为 Z 的设备
    • ARP 请求分组被封装进 MAC 帧,其中帧的目的地址设为全 1(表示广播),源地址为 Y,以广播帧形式发送
  • ARP 响应分组
    • 内容:表明自身为 IP 地址是 Z 的设备,同时说明自身 MAC 地址为 V
    • ARP 响应分组被封装进 MAC 帧,帧的目的地址为 Y,源地址为 V,以单播帧形式发送

动态主机配置协议DHCP

DHCP协议用来给刚接入网络的主机动态分配IP地址、配置默认网关、子网掩码。

DHCP是应用层协议,基于UDP,客户 UDP 端口号 = 68、服务器 UDP 端口号 = 67。

DHCP 使用客户 / 服务器模型(C/S)

  • DHCP 客户
    • 就是新接入网络的主机(希望获得 IP 地址等配置)
  • DHCP 服务器
    • 就是负责分配 IP 地址的那台主机,管理一系列 IP 地址池
    • 在一个大型网络内可以有多台 DHCP 服务器

执行过程:

  1. 客户→服务器:DHCP 发现报文
  • 携带信息:客户主机的 MAC 地址(还可以提出对 IP 地址租用期的要求)
  • 网络层:源 IP 地址 = 0.0.0.0,目的 IP 地址 = 255.255.255.255(广播 IP 数据报)
  • 链路层:源 MAC = 客户的 MAC 地址,目的 MAC = 全 1(广播帧
  1. 服务器→客户:DHCP 提供报文
  • 携带信息:给客户分配的 IP 地址、租用期、子网掩码、默认网关
  • 网络层:源 IP=DHCP 服务器的 IP 地址,目的 IP=255.255.255.255(广播 IP 数据报)
  • 链路层:源 MAC = 服务器的 MAC 地址,目的 MAC = 客户的 MAC 地址(单播帧
  1. 客户→服务器:DHCP 请求报文
  • 携带信息:客户机确认要使用的 IP 地址
  • 网络层:源 IP=0.0.0.0,目的 IP=255.255.255.255(广播 IP 数据报)
  • 链路层:源 MAC = 客户的 MAC 地址,目的 MAC = 全 1(广播帧
  1. 服务器→客户:DHCP 确认报文
  • 携带信息:与报文2类似
  • 网络层:源 IP=DHCP 服务器的 IP 地址,目的 IP=255.255.255.255(广播 IP 数据报)
  • 链路层:源 MAC = 服务器的 MAC 地址,目的 MAC = 客户的 MAC 地址(单播帧)

国际控制报文协议ICMP

ICMP 属于网络层,ICMP 报文封装在 IP 数据报中。ICMP 可以让主机或路由器互相报告网络中发生的差错和异常情况

ICMP报文的常见类型

差错报告报文

  • 终点不可达
    • 路由器向发送方反馈:“目的 IP 地址不可达(网络路径不通)”。
    • 目的主机向发送方反馈:“目的端口号不存在,无对应进程处理”。
  • 时间超过
    • 路由器向发送方反馈:“IP 数据报到达时 TTL(生存时间)为 0,已被丢弃(传输路程过长)”。
    • 目的主机向发送方反馈:“IP 数据报被分片后,规定时间内分片未全部到达,已全部丢弃”。
  • 参数问题:向发送方反馈 “IP 数据报首部参数不合法,或首部校验出错”。
  • 改变路由(重定向):路由器向发送方反馈 “针对该目的网络,下次可由另一台路由器转发,路径更短”。
  • 源点抑制(2012 年后已废弃):曾用于向发送方反馈 “网络发生拥塞,存在丢包情况,请降低发送速率”。

询问报文

  • 回送请求(Echo Request):A 向 B 发送:“请确认可达性并回复”。
  • 回送回答(Echo Reply):B 向 A 回复:“可达”。
  • 时间戳请求(Timestamp Request):A 向 B 发送:“当前本地时间为 xxxx,请问你处时间是多少?”。
  • 时间戳回答(Timestamp Reply):B 向 A 回复:“收到请求的时间为 yyyy,发出此回答的时间为 zzzz”。
不必反馈ICMP差错报文的情况
  • 若携带 ICMP 差错报告报文的 IP 数据报出错,不再反馈 ICMP 差错
  • 若 IP 数据报被分片,则无论几个分片出错,都只反馈一次 ICMP 差错
  • 若 IP 数据报的目的地址为多播地址,不反馈 ICMP 差错
  • 若 IP 数据报的源地址为特殊地址(如:127.x.x.x、0.0.0.0),则即便发生 IP 数据报异常也不反馈 ICMP 差错
http://www.dtcms.com/a/470091.html

相关文章:

  • 主办单位性质与网站名称不符绍兴专业做网站公司
  • C++ 简介
  • ValueTuple 详解
  • 框架--MyBatis
  • 1.C++基础(上)
  • cursor一些简单的使用心得官方的建议
  • 新能源汽车公司如何落地 ASPICE
  • 网站建设中的注册和登录页面网站开发技术期末考试题
  • react hooks
  • 建立数据分析与决策体系
  • 昂瑞微:全链条创新引领中国“芯”突围
  • Js逆向最新boss直聘__zp_stoken__-某boss逆向
  • Oracle ORA-01653 错误检查以及解决笔记
  • wordpress 做购物网站购买主机可以做网站吗
  • C#合并产品价格对比实战
  • 链表OJ(十六)146. 模拟LRU 缓存 双向链表+哈希
  • 旧物新生:一款回收小程序如何让环保成为举手之劳
  • seo网站优化服务去哪个网站找题目给孩子做
  • MATLAB实现对角加载波束形成算法
  • 从嵌入式到社区物联网:基于Pegasus智能家居套件的全栈实验方案
  • Vue + Spring Boot 实现 Excel 导出实例
  • 服务器关闭 网站被kseo搜索引擎优化策略
  • 【Android】六大设计原则
  • 液压位置控制源代码实现与解析(C语言+MATLAB联合方案)
  • 技术拆解:基于成品源码的海外外卖跑腿平台部署指南
  • 宽城网站制作山东网站建设网站
  • 申论素材学习笔记-把握好人才工作辩证法
  • 深度学习入门(三)——优化算法与实战技巧
  • 最新短视频AI智能营销询盘获客系统源码及搭建教程 源码开源可二次开发
  • 易优cms仿站教程wordpress文章搜索排序