IP 协议(网络层协议)

IP协议

  • IP 协议作用
  • 地址管理
    • 动态分配 IP 地址
    • NAT 机制
    • IPv6
    • IP 地址的组成
  • 路由选择

IP 协议作用

主要有两点 :

  1. 地址管理

为每个上网的设备分配一个唯一地址.

  1. 路由选择

两台主机间的信息交互, 具体走哪条线路.

地址管理

先来看看 IP协议 报文格式 :
在这里插入图片描述
IP 协议最主要就是 32 位的源 IP 和目的 IP 地址.
源 IP 描述这个数据报从哪里来的, 目的 IP 描述数据报去哪里.

IP 地址本质上是 32 位的二进制整数, 但是通常写成点分十进制形式, 便于观察数据.
点分十进制就是用三个点, 将 32 位整型分成 4 个部分, 每个部分都是一个字节, 每个部分的取值范围是 0 ~ 255.

那 32 位的二进制整数能表示多少个不同的地址呢 ?
它可以表示 2^32 个不同的数, 即大概有 42 亿 9 千万的不同地址.
这么多地址在以前是完全够用的, 但现在随着科技的进步, 电子设备也越来越多了, 凡是能上网的都需要一个 IP 地址, 那不够怎么办呢 ?

这里采取三种措施 :

  1. 动态分配 IP 地址
  2. NAT 机制
  3. IPv6

动态分配 IP 地址

动态分配顾名思义, 就是上网就分配, 不上网就不分配 IP 地址, 这样就可以节省一大批 IP 地址.
但这也仅仅是解决了燃眉之急, 并没有解决根本问题 IP 地址并没有增加, 早晚有一天会用完的.

NAT 机制

NAT 技术是当前解决 IP 地址不够用的主要手段,是路由器的一个重要功能.
NAT 机制规定 :
内网(局域网)IP :

10.*
172.16.* - 172.31.*
192.168.*

外网IP则是剩下的 IP.

注意 :
外网 IP 必须是唯一的.
内网 IP 在不同的局域网中可以重复.

当内网设备要访问外网时, 路由器就会给它分配一个外网 IP, 这个外网 IP 并不是这个设备独占的, 而是这个内网中所有设备都共用的. 一个外网 IP 就代表了一系列设备.
像我们的手机, 电脑等, 连上路由器就是处在内网中了.

也可以通过电脑来查看当前内网 IP, 和外网 IP.
内网 IP : 打开命令提示符(按住 win + r, 然后输入 cmd 即可), 输入 ipconfig.
在这里插入图片描述
这个便是我当前所在局域网给我这个设备分配的内网 IP 地址了.

外网 IP : 打开浏览器, 输入 IP 地址.
在这里插入图片描述
点击即可查询当前设备的外网 IP, 这个外网 IP 是当前局域网内设备共用的.

一台设备上网流程大概如下 :

在这里插入图片描述
① : 我的主机构造数据报, 发送给路由器.
② : 路由器将数据报的内网 IP 换成它的 IP 地址, 也就是外网 IP, 然后发送给搜狗服务器.
③ : 搜狗服务器收到数据报后, 就知道了请求来源的 IP 地址是 4.3.2.1, 构造数据报时就将其作为目的 IP.

注意 : 当路由器拿到搜狗返回的数据报后, 就会返回给我的主机, 它具体是如何识别的呢 ? 如果有别的设备也通过路由器发送请求会不会串了呢 ?

这里路由器是根据端口号来识别不同主机发的请求的, 当路由器接收到局域网的请求时, 就会记录该设备具体是哪个端口号发送的, 等到收到响应时, 再比对发送给对应端口.

总结 :

NAT机制是内网访问外网才会触发的, 由路由器执行.
内网设备可以通过 NAT 机制访问外网设备 ; 反之, 外网设备不能直接访问内网设备.
不同内网之间的主机不能直接通信, 需要借助外网作为中转.
同一个内网之间可以直接通过内网 IP 进行通信.

在我们现实生活中, 其实是采用 动态分配 + NAT机制 来解决 IP 地址不够用的问题的.
本质上也还是提高了 IP 地址的利用率, 没有在根本上改变 IP 地址不够用问题.

IPv6

IPv6 不一样了, 它从根本上解决了 IP 地址不够用的问题.

IPv4 是传统的 IP 协议, 由 4 个字节, 32位来表示 IP 地址.
IPv6 则是新的 IP 协议, 由 16 个字节, 128 位来表示 IP 地址.

IPv4能提供 2^32 个 IP 地址, 而 IPv6 则能提供 2^128 个IP 地址, 想想就恐怖, 这已近可以为我们地球上的每粒沙子都提供一个唯一的 IP 地址了, 从根本上解决了地址不够用问题.

当然了, 虽然 IPv6很强, 但我们现在都不用它, 还是用的 IPv4, 为啥呢 ?
因为 IPv4 与 IPv6 不兼容.
一个普通路由器想要支持 NAT, 只需要在升级下系统就行.(成本低)
一个普通路由器想要支持 IPv6, 不光得升级软件了, 还得升级硬件.(成本高)
这样就导致了一个问题, 想升级就得换新的路由器, 但不升级也能用, 就没人愿意掏这钱了, 也就导致大家都还是用的 IPv4.

当然我国 IPv6 的普及率还是很高的, 只是没有开启而已, 现在购买的路由器都支持 IPv6. 很多应用都支持了 IPv6, 大家可以进淘宝, 支付宝时观察一下, 下面都会标志 IPv6.

如果大家想对 IPv6 的发展多加了解可以去看看这个视频(强烈推荐) : 链接

IP 地址的组成

IP 地址分为两个部分 : 网络号和主机号.
网络号 : 标识网段(局域网). 保证相互连接的两个网段具有不同的标识.
主机号 : 标识主机. 同一网段内, 主机间具有相同的网络号, 但主机号一定不同.

一个路由器其实由两个 IP 地址(WAN 口 IP 和 LAN 口 IP), 分别在不同的局域网中, 路由器的作用就是将两个局域网连接起来.
在这里插入图片描述
一般来说一个路由器有一个 WAN口 和多个 LAN口, 具体路由器之间是如何相互连接的呢 ?

在这里插入图片描述
LAN口 接的是内部设备, WAN口 接的是另一个路由器.
图中, 被同一个路由器连起来的相邻局域网, 就叫做 "相邻"局域网, 这两个局域网网络号不能一样.

一个 IP 地址中, 哪部分是网络号, 哪部分又是主机号呢 ?
上面我们是按前三个字节是网络号, 但一定如此吗 ?
这个不一定, 对于网络号与主机号的划分主要有两种方式.

  1. IP 地址分类(ABCDE)
  2. 子网掩码
  1. IP 地址分类

在这里插入图片描述
每个类别的前缀都不一样, 每个类别下网络号与主机号长度都是固定的.
这种分类方式已经淹没在历史的长河中, 现在都是用的子网掩码来划分.

  1. 子网掩码

再打开命令提示符, 输入 ipconfig.

在这里插入图片描述
子网掩码是 : 255.255.255.0, 也就是 1111 1111 1111 1111 1111 11111 0000 0000
子网掩码, 左侧都是 1, 右侧都是 0, 不会出现 10101 这种参杂现象, 左侧有几个 1, 就表示 IP 地址哪些位是网络号, 家用网络子网掩码一般是 255.255.255.0, 一些大型网络就不一定了.(这个事情归网管管)
依照子网掩码来看, 上面的 IP 地址前 24 位是网络号, 后面 8 位是主机号.

在子网掩码是 255.255.255.0 的情况下, 有很多特殊的 IP 地址.

  1. 主机号为 0 的 IP : 如 192.168.0.0, 这就是网络号, 局域网里的主机号不应该为 0.
  2. 主机号为全 1 的 IP : 如 192.168.0.255, 这是广播地址, 往这个地址上发送 UDP 数据报就会被转发给该局域网的所有主机.(TCP 不支持广播)
  3. IP 为 127 开头的 IP : 127.* 被称为环回 IP, 其中 127.0.0.1 是最常用的.(注:其他的环回IP也能用)

环回 IP 对应虚拟网卡, 通过环回 IP 传输的数据, 是走虚拟网卡, 这个过程没有 IO 操作, 纯内存操作, 因此比一般普通的 IP 传输要快.

  1. 主机号为 1 的 IP : 如 192.168.0.1, 被称为网关 IP, 也就是局域网的出入口.
    (可以看到上面 LAN口 IP 都是网关 IP)

路由选择

路由选择其实就是路径规划, 就是从 A 到 B 具体路线怎么走.(A 到 B 的路线不止一条)
就像我们用地图导航一样, 我们可以很直观的找到最短路径, 但网络不一样, 网络环境更复杂.
单个路由器无法将整个网络环境都记录下来, 它只能记录周围的情况.(路由器使用路由表来记录周围路由器信息)
实际的信息转发过程是渐进式的, 类似于边走边问, 最终接近目标.
如果信息转发过程一直找不到目标信息, 那它会不断询问更高级路由器, 直到找到方向.
其实路由器也有大型的, 它可以记录更多信息.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

香橙派4和树莓派4B构建K8S集群实践之七: Jenkins

目录 1. 说明 2. 步骤 2.1 准备工作 2.2 安装 2.2.1 用jenkins原站for k8s的安装仓方法安装 2.2.2 Helm 安装 3. 相关命令 4. 遇到的问题 5. 参考 1. 说明 在k8s上部署jenkins,并用 jenkins.k8s-t2.com访问在namespace为devops下安装在指定节点k8s-master-…

任天堂 Switch 六月销量破纪录,极有可能成为日本市场销量冠军

任天堂于2017年发布的游戏机Switch已进入第六个年头。虽然该游戏机在硬件性能和品控方面受到一些评价不佳,但销售数据表明绝大多数玩家仍然乐意购买Switch游戏机。 根据日本经济新闻报道,今年6月Switch在日本销售了380,000台机器,同比增长68%…

【KingbaseES】如何查看表结构

SELECT column_name, data_type, is_nullable, column_default FROM information_schema.columns WHERE table_name test_szie;

ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、农业、大气等领域数据分析

查看原文>>> ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、农业、大气等领域数据分析 【内容简述】: 注:请提前自行配置上课环境 【其它相关推荐】: GEE遥感云大数据林业应用典型案例实践及GPT模型应用 基…

TCP的十个核心机制

目录 前言一 到 三四. 滑动窗口五. 流量控制六. 拥塞控制七. 延时应答八. 捎带应答九. 面向字节流十. 异常处理总结 前言 TCP协议是传输层的重点协议, 负责将数据从发送端传输到接收端. TCP协议是传输控制协议, 顾名思义也就是对数据的传输进行控制的协议. TCP 协议有很多, 我…

云端安全由繁到简,亚马逊云科技护航业务创新新局面

数字化愿景与现实存在的差距困扰着诸多企业,但造成这种差距的一个重要因素却一直被很多管理者所忽视,那就是企业未能建立应有的数字安全与合规体系。应用迭代的速度加快、数据快速膨胀、企业云原生道路上遭遇的种种困境,与数字安全部门有限的…

Kubernetes的Pod中进行容器初始化

Kubernetes的Pod中进行容器初始化 在很多应用场景中,应用在启动之前都需要进行如下初始化操作: 等待其他关联组件正确运行(例如数据库或某个后台服务)。 基于环境变量或配置模板生成配置文件。 从远程数据库获取本地所需配置,或者将自身注…

【网络技术】计算机网络介绍

写在前面 计算机网络是指将多台计算机连接起来,使它们能够相互通信和共享资源的系统。 它是现代计算机科学中的重要分支之一,为全球范围内的信息交流和数据传输提供了基础。 本文将介绍计算机网络的基础概念、体系结构、协议、常见问题等的知识。 一、基…

[LeetCode]2178.拆分成最多数目的偶整数之和

2178.拆分成最多数目的偶整数之和 题目 思路 首先,奇数是不可拆分成多数目的偶整数,这种情况返回一个空数组。 累加2以组合一个最多不同数目偶整数,当拆分的最后一个偶整数,总和大于原数时,将差值累加到最后一位偶整…

flutter RepaintBoundary 截屏图片下载,保存图片不清晰的问题

flutter RepaintBoundary 截屏图片下载,保存图片不清晰的问题 前言一、什么是RepaintBoundary二、RepaintBoundary 能干什么三、RepaintBoundary 保存图片模糊的问题四、RepaintBoundary 使用小demo总结 前言 最近工作中,突然遇到截屏保存图片的问题&…

超细,设计一个“完美“的测试用例,用户登录模块实例...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 好的测试用例一定…

Vite按需引入自定义组件unplugin-vue-components

1.安装插件 npm i unplugin-vue-components -D 2.vite.config.ts文件加如下代码 plugins: [vue({reactivityTransform: true}),Components({extensions: [vue, md],include: [/\.vue$/, /\.vue\?vue/, /\.md$/],dts: src/components.d.ts,deep: true, // 搜索子目录dirs: [s…

RabbitMQ-基础学习

在虚拟机上安装Erlang的GCC环境,装erlong,然后安装rabbitmq 参考:安装说明链接 安装web端面板 创建交换机 先学习一下工作模式(详细介绍可见官网) 上代码 1.Hello Word模式 写在测试类中: Providucer T…

Angular 调试工具(Augury)

目录 1、简介 2、检验代码 3、Angury 本地构建和安装 3.1 添加到Chrome 浏览器: 3.2 添加到Firefox浏览器 4、项目中对应的Npm脚本 5、Augury 三大主要功能 5.1 组件树(Component Tree) 5.1.1 Component Tree 5.2 路由树&#xff0…

【DBA课程-笔记】MongoDB入门到云上开发

课程目的:成为专业MongoDB的DBA nosql第一:MongoDB 一、讲师: 二、课程目录 第1章:MongoDB数据库入门 第2章:MongoDB数据数据查询与分析 第3章:MongoDB数据库核心知识 第4章:MongoDB数据库…

基于单片机智能加湿器 水位防干烧加湿器的设计与实现

功能介绍 以51/STM32单片机作为主控系统;LCD1602液晶显示当前温湿度,当前模式,湿度下限;按键设置湿度下限,当湿度低于下限时开启加湿器;水位传感器检查加湿器是否有水,如果没有水到话加湿器不进行工作,蜂鸣…

做题遇见的PHP函数汇总

mb_substr函数 mb_substr() 函数返回字符串的一部分,之前学过 substr() 函数,它只针对英文字符,如果要分割的中文文字则需要使用 mb_substr() 语法: mb_substr ( $str ,$start [, $length NULL [, $encoding mb_encoding() ]] …

ARM架构(寄存器点灯)

文章目录 前言一、LED原理图二、使用寄存器点灯的步骤三、如何操作寄存器四、实际操作1.使能GPIO端口2.将引脚设置为输出模式3.设置输出状态 五、全部代码总结 前言 本篇文章我们来讲解一下如何使用寄存器点亮一个LED灯,一般对于新人来说都是使用HAL库或者标准库来…

交通 | 针对Close-Enough旅行商问题的一种分支定界算法

论文解读​:王飞龙,曲晨辉 1、问题背景 \qquad 旅行商问题(TSP)是一种众所周知的路径问题。TSP的目标是在图 G ( V , E ) G(V,E) G(V,E)中找一条以场站为起终点的最短路,访问所有客户点 V V V,同时没有子环路。令 E E E表示网络中…

实训笔记7.4

实训笔记7.4 7.4一、座右铭二、IDEA集成开发环境的安装和使用三、DEBUG断点调试四、Java设计模式4.1 适配器模式4.2 动态代理模式4.3 单例设计模式 五、Java中网络编程5.1 网络编程三个核心要素5.2 TCP网络编程 六、基于网络编程的聊天系统6.1 需求分析6.2 系统设计6.2.1 概要设…