2023.9.18 网络层 IP 协议详解

news2024/11/23 17:20:51

目录

IP协议

IPv4

32位 源IP 地址 / 32位 目的IP 地址

IP 地址管理

特殊 IP

路由选择


IP协议

IPv4


32位 源IP 地址 / 32位 目的IP 地址

基本知识:

  • 在 IP 报头中一般表示为 32位 二进制整数
  • 日常生活中的 IP 一般将 32位 二进制整数,也就是 4字节 的二进制整数,分割为 4个部分,每个部分用 0~255 十进制整数 表示,形如 176.12.215.122,称为 点分十进制

注意:

  • 如果当全世界上网设备都拥有一个唯一且不重复的 IP 地址时,我们 IP报头 中的 32位 整数仅能表示 42亿9千万 台设备,这显然是不够用的

解决方案:

  • 动态分配 IP地址:全世界上网设备并不全在 同一时间段 进行上网,此时可以 以此为基础进行 IP地址的动态分配,但是该方案仅提高了 IP地址的利用率,IP地址 的总数并未增加!
  • 使用 IPv6:用 128位,也就是 16 字节 来表示 IP地址,相当于 IPv4 能表示设备数量的 4 次方,也就是 42亿9千万 * 42亿9千万 * 42亿9千万 * 42亿9千万 这么庞大的数量,为全世界的设备都分配一个 IP地址 都是绰绰有余的 
  • NAT 网络地址转换:本质为一个 IP地址 代表一批设备,进一步提高 IP地址的利用率

NAT 将 IP地址 分为两大类:

  • 内网 IP(私网 IP):10.*  或 172.16.* ~ 172.31.* 或 192.168.*
  • 外网 IP(公网 IP):除私网 IP 以外均为 公网 IP

规则:

  • 公网IP 必须是唯一的
  • 私网IP  在不同局域网内 可以重复使用
  • 私网中的某一设备想访问公网的设备,需要用到对应的 NAT设备(路由器),将 IP地址 进行映射,从而完成网络访问
  • 公网的设备 无法直接访问 私网的设备
  • 不同局域网的私网设备无法直接相互访问

查看本机的私网IP:

  • 打开 cmd 输入 ipconfig

  • 红框部分为本机电脑的 私网IP

查看本机的公网IP:

  • 打开浏览器搜索 IP地址

  • 点开上图红色箭头所示链接

  • 红框部分为 运营商路由器 为本机提供的 公网IP

NAT 具体工作流程图:

总结:

  • 虽然 IPv6 能满足我们的需求,但是现今世界还是主要使用 IPv4 + NAT + 动态分配 来进行网络的组件,其中最重要的原因是 IPv6 和 IPv4 不兼容,如需更换 IPv6 则需更换路由器等网络设备,所带来的经济效益十分的低!

IP 地址管理

IP地址 分为两部分:

  • 网络号:标识网段,保证相互连接的两个网段有不同的标识(局域网)
  • 主机号:标识主机,主机之间具有相同的网络号,但必须有不同的主机号

如何划分网络号和主机号?

  • 通过 子网掩码 

  • 特点:左边都为1,右边都为0
  • 图中 子网掩码 为 255.255.255.0(家用设备 最常见的)
  • 即 1111 1111 1111 1111 1111 1111 0000 0000
  • 1 的部分描述 该 IP 有多少位为 网络号,0 的部分描述 该 IP 有多少位为 主机号

特殊 IP

  • IP地址 的主机地址全部设为 0 ,变为网络号,代表这个局域网
  • IP地址 的主机地址全部设为 1 ,变为广播地址,用于给同一个链路中相互连接的所以主机发送数据,使用 UDP 往该地址发送数据报,整个局域网所以的设备都能收到
  • 127.* 的 IP地址用于本机环回测试,通常为 127.0.0.1
  • 主机号为 1, 通常为 网关IP,也就是网络的入口,也可自行配置

路由选择

核心思路:

  • 问路

具体思路:

  • 每个路由器会保存一定的周围设备的信息(路由表)
  • IP数据报 每经过一个路由器,需要匹配路由表,来看下一步咋走
  • 如果路由表有匹配项 (认识路)则直接按照要求走
  • 如果没有匹配项(不认识路) 则会提供一个默认路径,大体方向是对的
  • 循环上述过程,直到到达 目的IP

注意:

  • 每经过一个路由器问一次,同时 TTL-1,如果减到 0 ,还未到达 目的IP ,该 IP数据报将被直接丢弃
  • 当然 TTL 的值为32,足够将 IP数据报 传输给全世界任何地方

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue的模板语法(下)

一.事件处理 事件修饰符 Vue通过由点(.)表示的指令后缀来调用修饰符, .stop, .prevent,.capture,.self,.once .stop:阻止事件冒泡。当一个元素触发了事件,并且该元素包含嵌套的父元素时&#…

【大虾送书第十期】从不了解用户画像,到用画像数据赋能业务看这一本书就够了

目录 🍭写在前面 🍭内容简介 🍭设计图和原型图 🍭参考目录 🍭文末福利 🦐博客主页:大虾好吃吗的博客 🦐专栏地址:免费送书活动专栏地址 写在前面 在大数据时代&#xff0…

小程序游戏开发和app游戏开发有什么不同呢?

小程序游戏开发和App游戏开发有一些重要的区别,这些区别涉及到平台、技术、发布和用户体验等方面。以下是它们之间的主要不同之处: 平台: 小程序游戏开发是为特定的小程序平台设计的,如微信小程序、支付宝小程序等。这些小程序通常…

Android使用Chrome浏览器进行抓包

Android使用Chrome浏览器进行抓包 这里记录一个用Android真机抓包的方法。 打开Chrome浏览器,打开网址:chrome://inspect/#devices 找到对应 App 点击 inspect,进行网络请求,就能看到抓包的数据啦 数据线连上android设备&#x…

Mybatis框架学习

什么是mybatis? mybatis是一款用于持久层的、轻量级的半自动化ORM框架,封装了所有jdbc操作以及设置查询参数和获取结果集的操作,支持自定义sql、存储过程和高级映射 mybatis用来干什么? 用于处理java和数据库的交互 使用mybat…

容器中的nginx暴露一个端口部署多个功能的网站

随着容器的应用越来越多,将nginx部署在容器中也是常有之事。可能事先创建容器时只暴露了一个端口给浏览器连接,后面又想根据添加多个应用,根据URL的不同来访问不同的应用。比如在暴露了主机的83端口给nginx容器的80端口,原来只有一…

华为云云耀云服务器L实例评测|宝塔一站式安装数据库MySQL+Redis教程

目录 前言 一、传统服务器安装数据库 1.安装MySQL 2.安装Redis 二、云耀云服务器L安装MySQL 1.云耀云服务器L实例购买 2.远程登录并重置密码 3.云耀云服务器L初始化宝塔面板 4.宝塔面板安装数据库 5.MySQL第三方登录 三、云耀云服务器L安装Redis 1.宝塔面板安装Redis 2.Redis密…

JumpServer未授权访问漏洞 CVE-2023-42442

JumpServer未授权访问漏洞 CVE-2023-42442 一、漏洞描述二、漏洞影响三、网络测绘四、漏洞复现poc通过burp发送请求包小龙POC检测 五、修复建议 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接…

【正则表达式】

正则表达式 1 本节目标2 正则表达式概述2.1 什么是正则表达式2.2 正则表达式的特点 3 正则表达式在JavaScript中的使用3.1 创建正则表达式3.2 测试正则表达式test 4 正则表达式中的特殊字符4.1 正则表达式的组成4.2 边界符4.3 字符类4.4 量词符4.5 括号总结4.6 预定义类 5 正则…

如何分清PMP和NPDP?一篇文足以

先简单介绍一下两个证书: PMP:项目管理证书,项目经理 英文全称是Project Management Professional,中文全称叫做项目管理专业人士资格认证。 它是由美国项目管理协会(PMI)在全球范围内推出的针对项目经理…

mojo安装

docker安装mojo 官网 https://developer.modular.com/login 很奇怪登录页面不显示 类似于网站劫持 docker 安装mojo带jupyterlab的方式 https://hub.docker.com/r/lmq886/mojojupyterlab 拉取镜像 docker pull lmq886/mojojupyterlab docker pull lmq886/mojojupyterlab:1.2 启…

没有任何销售经验怎么管理销售团队?

本文将为大家讲解:1、什么是销售管理?2、销售管理的流程是什么?3、如何进行销售管理?4、crm客户管理系统对于销售管理有什么样的作用?5、2023年最全crm客户管理系统推荐。 一、什么是销售管理? 根据美国营…

【数据结构与算法】一文带你学透——算法概述

前言 本期我们所要学习的内容是数据结构与算法中的算法的相关内容,通过上期我们学的数据结构想必大家都会了吧,在学习完毕之后算法,我想你已经可以编写出比较优秀的代码了,著名计算机科学家沃思曾提出一个公式 程序数据结构算法。…

18.备忘录模式(Memento)

意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以在以后将该对象恢复到原先保存的状态。 上下文:某些对象的状态在转换过程中,可能由于某种需要,要求…

Python的电机控制模拟程序

一个带有EPICS支持的虚拟电机控制器。 1)Status类:其实例化对象代表一个电机轴的状态。 #!/usr/bin/env python Status类代表一个电机处于的状态:1、DIRECTION状态位:设置运动方向2、DONE_MOVING状态字:置位表示结束…

数据结构与算法的力量:编写更高效的代码

文章目录 为什么数据结构和算法重要?1. 提高性能2. 节省资源3. 解决复杂问题4. 改进代码质量 常见数据结构和算法数据结构1. 数组(Array)2. 链表(Linked List)3. 栈(Stack)4. 队列(Q…

哈希(hash)——【C++实现】

本章gitee代码仓库:Hash 文章目录 💐1. 哈希概念🌻2. 哈希冲突🌼3. 哈希函数🌸3.1 哈希函数设计原则🌸3.2 常见哈希函数 🪴4. 哈希冲突解决方案🌱4.1 闭散列——开放定址法&#x1f…

Android存储权限完美适配(Android11及以上适配)

一、Bug简述 一个很普通的需求,需要下载图片到本地,我的三个测试机(荣耀Android10,红米 11 和小米Android 13都没有问题)。 然后,主角登场了,测试的三星Android 13 死活拉不起存储权限弹窗。 …

使用setInterval定时器实现文字一个一个的打印在页面中

前言: 项目需求实现请求回来的数据一个一个的打印在页面中,点击“停止生成”暂停打印;该功能需求类似于文心一言。 代码实现: view页面代码: script代码: 核心代码: let k 0; timer setInte…

【python】lightgbm 无法打开文件

问题&#xff1a;文件无法打开 在使用 lightgbm 读取模型文件时不能打开 报错&#xff1a; Traceback (most recent call last):File "detect_interpretability_.py", line 176, in <module>lightgbm_test(White_data, os.path.basename(data_path), model_f…