【计算机网络】详解IP协议网段划分路由转发子网掩码网络号

一、IP功能

        IP可以实现主机定位和路由选择,提供一种能力,将数据可靠地从A点跨网络送到B点。数据先根据目的IP在局域网之间进行转发,再在局域网内进行内网转发

二、IP协议报头

  • 4 位版本号(version):指定 IP 协议的版本,对IPv4 来说,就是 4。
  • 4 位头部长度(header length):IP 头部的长度是多少个 32bit,也就是 length 4的字节数。4bit 表示最大的数字是 15,因此 IP 头部最大长度是 60字节。
  • 8 位服务类型(Type Of Service):3 位优先权字段(已经弃用),4 TOS 字段,和1 位保留字段(必须置为 0)。4TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。对于 ssh/telnet 这样的应用程序,最小延时比较
    重要;对于 ftp 这样的程序,最大吞吐量比较重要。
  • 16 位总长度(total length):IP 数据报整体占多少个字节。
  • 16 位标识(id):唯一的标识主机发送的报文。如果 IP 报文在数据链路层被分片了,那么每一个片里面的这个 id 都是相同的。
  • 3 位标志字段:第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。 第二位置为 1 表示禁止分片,这时候如果报文长度超过 MTU,IP 模块就会丢弃报文。第三位表示"更多分片",如果分片了的话,最后一个分片置为 0,其他是 1。类似于一个结束标记。
  • 13 位分片偏移(framegament offset): 是分片相对于原始 IP 报文开始处的偏移. 其实就是在表示当前分片在原报文中处在哪个位置. 实际偏移的字节数是这个值除8得到的。因此, 除了最后一个报文之外, 其他报文的长度必须是 8 的整数倍(否则报文就不连续了).
  • 8 位生存时间(Time To Live, TTL):数据报到达目的地的最大报文跳数。一般是64。每次经过一个路由,TTL -= 1,一直减到 0 还没到达,那么就丢弃了。这个字段主要是用来防止出现路由循环。
  • 8 位协议: 表示上层协议的类型。
  • 16 位头部校验和: 使用 CRC 进行校验, 来鉴别头部是否损坏。
  • 32 位源地址和 32 位目标地址: 表示发送端和接收端。

三、网段划分

         IP 地址分为两个部分, 网络号和主机号。网络号:保证相互连接的两个网段具有不同的标识;主机号:同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号 不同的子网其实就是把网络号相同的主机放到一起。如果在子网中新增一台主机,则这台主机的网络号和这个子网的网络号一致,是主机号必须不能和子网中的其他主机重复。
每一个子网都有唯一的标识,就是网络号。发送的报文在转发时可以根据网络号进行淘汰路径,直到找到目标网络。 CIDR(Classless Interdomain Routing)技术引入一个额外的子网掩码(subnet mask)来区分网络号和主机号;子网掩码也是一个 32 位的正整数。通常用一串 "0" 来结尾;将 IP 地址和子网掩码进行 "按位与" 操作,得到的结果就是网络号
        IP 地址和子网掩码还有一种更简洁的表示方法, 例如 140.252.20.68/24,表示 IP 地址140.252.20.68, 子网掩码的高 24 位是 1,也就是 255.255.255.0。

 四、私有IP和公网IP

        如果一个组织内部组建局域网,IP 地址只用于局域网内的通信,而不直接连到 Internet 上,理论上 使用任意的 IP 地址都可以,但是 RFC 1918 规定了用于组建局域网的私有IP地址。
  • 10.*,8 位是网络号,16,777,216个地址。
  • 172.16.*172.31.*,12 位是网络号,1,048,576个地址。
  • 192.168.*,16位是网络号65,536个地址。

包含在这个范围中的,都成为私有IP,其余的则称为全局IP(或公网IP) 

五、运营商和路由转发

        运营商将网络基础设施搭建好。我们将来所有的报文都必须经过运营商,无法绕过运营商。 现在的路由器已经支持组建局域网,一般的家用设备所分配的IP地址都是192.168开头的IP地址。

        一个路由器可以配置两个IP 地址,一个是WANIP,一个是 LANIP(子网IP)。路由器 LAN 口连接的主机,都从属于当前这个路由器的子网中。不同的路由器,子网IP其实都是一样的(通常都是 192.168.1.1)。 子网内的主机IP地址不能重复。但是子网之间的IP地址就可以重复 每一个家用路由器,其实又作为运营商路由器的子网中的一个节点。这样的运营商路由器可能会有很多级,最外层的运营商路由器,WANIP就是一个公网IP了。子网内的主机需要和外网进行通信时,路由器将IP首部中的IP地址进行替换(替换成WANIP),这样逐级替换,最终数据包中的IP地址成为一个公网 IP。这种技术称为NAT(Network Address Translation,网络地址转换)。 我们所有人访问网络都是在内网当中访问的,我们无法直接访问公网,公网由各国的运营商进行报文的转发
        NAT 路由器收到外部的数据时, 又会把目标IP202.244.174.37替换回10.0.0.10,在NAT路由器内部,有一张自动生成的用于地址转换的表,当 10.0.0.10第一次向163.221.120.9发送数据时就会生成表中的映射关系。如果局域网内有多个主机都访问同一个外网服务器, 那么对于服务器返回的数据中,目的IP都是相同的。那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?这时候NAPT来解决这个问题了。使用IP+port来建立这个关联关系。这种关联关系也是由NAT路由器自动维护的。例如在TCP的情况下,建立连接时,就会生成这个表项,在断开连接后就会删除这个表项。
         路由器要有路由发现的算法 IP数据包的传输过程也和问路一样。IP 数据包,到达路由器时,路由器会先查看目的IP;路由器决定这个数据包是能直接发送给目标主机,还是需要发送给下一个路由器;依次反复,一直到达目标IP地址。如何判定当前这个数据包该发送到哪里呢?这个就依靠每个节点内部维护一个路由表。
         路由表可以使用route命令查看 。如果目的IP命中了路由表,就直接转发即可。路由表中的最后一行,主要由下一跳地址和发送接口两部分组成,当目的地址与路由表中其它行都不匹配时,就按缺省路由条目规定的接口发送到下一跳地址。假设某主机上的网络接口配置和路由表如下:
        这台主机有两个网络接口,一个网络接口连到 192.168.10.0/24网络,另一个网络接口连到 192.168.56.0/24 网络;路由表的 Destination 是目的网络地址,Genmask 是子网掩码,Gateway 是下一跳地址,Iface是发送接口,Flags中的 U 标志表示此条目有效(可以禁用某些 条目),G标志表示此条目的下一跳地址是某个路由器的地址,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经路由器转发。
转发过程例 1: 如果要发送的数据包的目的地址是 192.168.56.3
跟第一行的子网掩码做与运算得 到 192.168.56.0,与第一行的目的网络地址不符,再跟第二行的子网掩码做与运算得到192.168.56.0,正是第二行的目的网络地址,因此从 eth1 接口发送出去;由于192.168.56.0/24 正是与 eth1 接口直接相连的网络,因此可以直接发到目的主机不需要经路由器转发。
转发过程例 2: 如果要发送的数据包的目的地址是 202.10.1.2。依次和路由表前几项进行对比,发现都不匹配;按缺省路由条目,eth0接口发出去,发往192.168.10.1路由器;由 192.168.10.1 路由器根据它的路由表决定下一跳地址。

六、地区间的网段划分

         这里为了方便,我们直接将各个国家作为网段划分单位,将每个国家的每个省作为更小一级的网段划分单位举例子。以IPv4为例,假设美国划分到的网段是1.0.0.0/8,中国划分到的网段是2.0.0.0/8,俄罗斯划分到的网段是3.0.0.0/8,也就是说拿出前八个比特位来区分国家。我们国家第一台国家级间的路由器IP地址就为2.0.0.1/8。

        我们国家再拿出5个比特位来区分省市,那么陕西省的第一台省间路由器IP地址就是2.8.0.1/13。市与市之间再采用相同的方法,拿出几个比特位来划分市。进一步的,由于IP地址数量的限制,在整个市里就可以构建出一个局域网了,市里的路由器就可以和运营商的出入口路由器构建成一个子网。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/445215.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shell案例(shell中输出彩色Hello world)

Shell中输出彩色Hello world 循环遍历不同的ANSI转义序列代码,展示了各种字体颜色、背景颜色和显示方式的效果,每个部分都包含了一个简单的循环,通过echo -e命令输出带有相应颜色或显示方式的字符串,并在每部分之间输出空行以分割…

MyBatis XML映射文件

XML映射文件 XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)XML映射文件的namespace属性为Mapper接口全限定名一致XML映射文件中SQL语句的id与Mapper接口中的方法名一致,并保持返…

ICLR 2024 Spotlight|SEAL:面向真实场景超分辨率的系统性评估框架

研究背景 现实世界图像超分辨率(Real-World Super-Resolution, Real-SR)技术,作为提升图像清晰度的关键技术,正变得越来越重要。然而,如何准确评估Real-SR方法的性能,一直是该领域的一大挑战。目前的评估…

步步精科技诚邀您参加2024慕尼黑华南电子展

尊敬的客户: 我们诚挚地邀请您参加即将于2024年10月14日至10月16日在深圳国际会展中心 (宝安新馆)举办的慕尼黑华南电子展(electronica South China)。本届将聚焦人工智能、数据中心、新型储能、无线通信、硬件安全、新能源汽车、第三代半导…

云原生(四十四) | 远程连接ECS服务器

文章目录 远程连接ECS服务器 一、自带连接工具连接ECS云服务器 二、为什么要使用远程连接工具 三、远程连接ECS服务器四要素 1、用户名 密码 2、IP地址(公网IP) 3、SSH端口号 4、阿里云安全组 四、使用MobaXterm远程连接ECS云服务器 五、ECS云…

讯飞星火与昇腾AI双向奔赴:本土化技术创新应对全球化挑战的一次成功验证

文 | 智能相对论 作者 | 陈泊丞 2019年,彼时的AI赛道还不像今天这么热。 这一年,人工智能连续第三年出现在政府工作报告中,政策关键词从“加快”“加强”转变为“深化”,开始进入行业需求快速增长的应用探索期。而华为也在这个…

爬虫(反调试)

其实就是一种给页面反爬机制,一般页面用不到。 万能解决反调试方法:

vue-插槽作用域实用场景

vue-插槽作用域实用场景 1.插槽1.1 自定义列表渲染1.2 数据表格组件1.3 树形组件1.4 表单验证组件1.5 无限滚动组件 1.插槽 插槽感觉知道有这个东西,但是挺少用过的,每次看到基本都会再去看一遍用法和概念。但是在项目里,自己还是没有用到过…

查看 Excel 应用程序中已打开的 Excel 文件的完整路径

要查看 Excel 应用程序中已打开的 Excel 文件的完整路径(全路径),你可以通过以下几种方法获取具体路径,尤其是在 VSTO 应用程序中。 方法1:使用 VSTO Excel 外接程序代码 在 VSTO 外接程序代码中,您可以直接…

海外市场充电桩需求激增:充电基础设施展望

报告显示,在大多数欧盟国家的路网中,充电桩数量存在不足、不支持快速充电且分布不均匀的问题。具体而言,有6个欧洲国家的平均每百公里充电桩数量不足1个,17个国家的平均每百公里充电桩数量少于5个,仅有5个国家的平均每…

计算机网络之传输层

一、传输层提供的服务 1、传输层的功能 向上面的应用层提供通信服务,属于面向通信的最高层,用户功能的最低层。传输层为运行在不同主机上的进程中间提供了逻辑通信,网络层提供主机之间的逻辑通信。边缘部分两台主机使用网络核心部分的功能进…

网络编程(15)——服务器如何主动退出

十五、day15 服务器主动退出一直是服务器设计必须考虑的一个方向,旨在能通过捕获信号使服务器安全退出。我们可以通过asio提供的信号机制绑定回调函数即可实现优雅退出。 之前服务器的主函数如下 #include "CSession.h" #include "CServer.h"…

[Git] Git下载及使用 从入门到精通 详解(附下载链接)

前言 目录 Git概述 简介 下载 Git代码托管服务 Git常用命令 Git全局配置 获取Git仓库 在本地初始化一个Git仓库 从远程仓库克隆 基本概念 工作区文件状态 本地仓库操作 远程仓库操作 分支操作 标签操作 在IDEA中使用Git 在IDEA中配置Git 本地仓库操作 远程仓…

Ngx+Lua+Redis 实时IP黑名单系统

实时黑名单系统,如果用php脚本实现很容易,但是效率惨不忍睹呀。 要想速度快还的在nginx层实现阻塞。如果iptables 层阻塞速度更快,但是黑名单列表如果有更新就必须要重载配置,实现还是有难度的。php管理后台把黑名单ip写入到redis…

万字详解AI实践,零手写编码用AI完成开发 + 数据清洗 + 数据处理 的每日新闻推荐,带你快速成为AI大神

用AIdify完成前后端开发数据处理和数据清洗。 引言数据获取和数据处理dify构建workflow进行数据清洗前端页面构建和前后端交互总结 引言 AI时代对开发人员的加强是非常明显的,一个开发人员可以依靠AI横跨数个自己不熟悉的领域包括前后端、算法等。让我们来做个实践…

生信初学者教程(二十八):单细胞数据标准化

文章目录 介绍加载R包导入数据消除测序深度影响评估细胞周期的影响识别高度可变的特征缩放数据降维聚类输出结果总结介绍 scRNA-seq的标准化是一个重要的预处理步骤,目的是消除技术变异(比如比如测序深度和基因长度等因素),使基因表达和/或样本之间的比较更加可靠。标准化方…

如何彻底掌握 JavaScript 23种设计模式

设计模式是解决特定问题的常用解决方案,它们可以帮助开发者编写更清晰、可维护、可扩展的代码。在 JavaScript 中,常见的设计模式可以分为三大类:创建型模式、结构型模式 和 行为型模式。本文将全面介绍 JavaScript 中常见的设计模式&#xf…

Java 日志打印

使用日志打印: private static Logger log LoggerFactory.getLogger(DeptController.class);RequestMapping("/depts")public Result list() { // System.out.println("查询全部部门数据");log.info("查询全部部门数据");ret…

pytorch 与 pytorch lightning, pytorch geometric 各个版本之间的关系

主要参考 官方的给出的意见; 1. pytorch 与 pytorch lightning 各个版本之间的关系 lightning 主要可以 适配多个版本的 torch; https://lightning.ai/docs/pytorch/latest/versioning.html#compatibility-matrix; 2. pytorch 与 pytorch geometric 各…

【AIGC】2022-NIPS-视频扩散模型

2022-NIPS-Video Diffusion Models 视频扩散模型摘要1. 引言2. 背景3. 视频扩散模型3.1. 重建引导采样以改进条件生成 4. 实验4.1. 无条件视频建模4.2. 视频预测4.3. 文本条件视频生成4.3.1 视频与图像建模的联合训练4.3.2 无分类器指导的效果4.3.3 更长序列的自回归视频扩展 5…