XingYun blog
  • JS基础

    • 图解js原型链
    • JS Event Loop
    • 对象的底层数据结构
    • 让你的JavaScript代码简单又高效
    • 函数参数按值传递
    • 判断数据类型
    • 浮点数精度问题和解决办法
    • 常用方法snippet
    • 实现Promise
    • 防抖和节流
    • 巧用sort排序
  • CSS && HTML

    • CSS也需要性能优化
    • class命名规范
    • em、px、rem、vh、vw 区别
    • CSS揭秘阅读笔记
  • 浏览器

    • 浏览器是如何渲染页面的
    • 重排和重绘
    • BOM浏览器对象模型
    • DOM事件
    • 浏览器存储
  • 数据结构

    • JS实现链表
    • JS实现栈与栈应用
    • JS实现常见排序
    • 哈夫曼编码
    • MD5算法
  • vue原理浅析

    • Vue虚拟dom与Diff算法
    • 前端打包文件的缓存机制
    • vue数组为什么不是响应式
    • v-for为什么不能用index做key
  • 前端工程化

    • 浏览器是如何渲染页面的
    • 前端打包需要gzip压缩吗
    • 前端打包文件的缓存机制
    • webpack loader和plugin
  • 轮子&&组件库

    • 实现水波浪进度球
  • 文字转语音mp3文件
  • 文件上传前后端实现
  • moment.js给定时间获取自然月、周的时间轴
  • 实现文件上传功能
  • 批量下载照片
  • leaflet改变坐标原点
  • 网络

    • 有了MAC地址 为什么还需要IP地址
    • 为什么IP地址老是变
    • 我们为什么需要IPV6
    • TCP与UDP
  • 计算机组成原理

    • ASCII、Unicode、UTF-8和UTF-16
  • VSCode

    • VSCode图片预览插件 Image preview
    • rsync:linux间的高效传输工具

XingYun

冲!
  • JS基础

    • 图解js原型链
    • JS Event Loop
    • 对象的底层数据结构
    • 让你的JavaScript代码简单又高效
    • 函数参数按值传递
    • 判断数据类型
    • 浮点数精度问题和解决办法
    • 常用方法snippet
    • 实现Promise
    • 防抖和节流
    • 巧用sort排序
  • CSS && HTML

    • CSS也需要性能优化
    • class命名规范
    • em、px、rem、vh、vw 区别
    • CSS揭秘阅读笔记
  • 浏览器

    • 浏览器是如何渲染页面的
    • 重排和重绘
    • BOM浏览器对象模型
    • DOM事件
    • 浏览器存储
  • 数据结构

    • JS实现链表
    • JS实现栈与栈应用
    • JS实现常见排序
    • 哈夫曼编码
    • MD5算法
  • vue原理浅析

    • Vue虚拟dom与Diff算法
    • 前端打包文件的缓存机制
    • vue数组为什么不是响应式
    • v-for为什么不能用index做key
  • 前端工程化

    • 浏览器是如何渲染页面的
    • 前端打包需要gzip压缩吗
    • 前端打包文件的缓存机制
    • webpack loader和plugin
  • 轮子&&组件库

    • 实现水波浪进度球
  • 文字转语音mp3文件
  • 文件上传前后端实现
  • moment.js给定时间获取自然月、周的时间轴
  • 实现文件上传功能
  • 批量下载照片
  • leaflet改变坐标原点
  • 网络

    • 有了MAC地址 为什么还需要IP地址
    • 为什么IP地址老是变
    • 我们为什么需要IPV6
    • TCP与UDP
  • 计算机组成原理

    • ASCII、Unicode、UTF-8和UTF-16
  • VSCode

    • VSCode图片预览插件 Image preview
    • rsync:linux间的高效传输工具
  • 有了MAC地址 为什么还需要IP地址
  • 为什么IP地址老是变
    • 我们为什么需要IPV6
    • TCP与IP协议
    • TCP与UDP
    • https与http
    • DNS域名解析
    • 进程与线程
    • SSH
    • 正向代理与反向代理
    • 程序猿必须掌握的英语单词
    • ASCII、Unicode、UTF-8和UTF-16
    • 异或门怎么连
    • 前端够用的linux命令
    • http1.1与http2
    • 与服务器保持连接的几种方式
    • base64编码
    • 关于URL
    • http请求方式
    • 图解http阅读笔记
    • 计算机
    XingYun
    2021-11-15
    目录

    为什么IP地址老是变

    # IP地址现状

    目前手机上网的的ip几乎都是ipv4版本的地址,公网地址池的最大ip也就255.255.255.255,可以计算出最多也就42亿地址池(简单算就是255的四次方

    手机用户和pc用户和终端用户几乎都是ipv4的协议,大部分人是同时拥有笔记本、台式机、手机等需要上网的设备的,就按中国14亿人里有8亿个人上网终端用户,平均每人两个设备,中国人就有了16亿终端,如果每个人的上网设备都需求固定ip,中国就需求超过三分之一的地址了。

    全世界一百多亿人,至少需求百亿以上的地址,而这种地址资源还受美国控制,分给中国的地址能有多少?更遑论目前ipv4地址资源几近枯竭。

    # 目前运营商的解决方案

    因为不可能每个人都有公网ip,但是电信运营商又必须提供公网ip连接外网,怎么办?

    只能公用一部分地址资源!你不用的时候就释放,你用的时候就临时分配。

    而且也不是所有人都用公网ip,更多的时候是一个路由设备给一个ip分享给其他终端设备,甚至家用路由器一般给的都不是公网ip

    所以家庭组网中,一般采取的方案是1公网IP + n私网IP

    # 公网IP与私网IP

    # 公网IP

    公网IP是指在因特网上直接可达的地址,如果你有一个公网地址,那就意味着你不但能访问别人,还能被人访问。

    公网地址是架设各种服务器必不可少的条件。当你在云服务商买了一个服务器实例的时候,服务商都会给你提供一个公网IP

    公网IP地址

    # 私网IP

    网络中的主机需要通信,需要使用一个IP地址,目前我们普遍使用的IPv4的地址,分为A、B、C、D、E五类,在上面已经列出,其中A、B、C类是我们常见的IP地址段。在这三类地址中,大多数为公有地址,需要向国际互联网信息中心注册。在IPv4地址中预留了3个IP地址段,作为私有地址,共家庭、企业、学校等内部组网使用。

    私网IP地址

    除了这三个ip地址段为私有ip地址外,其它的都为公网ip。

    这些地址已被声明私有化,任何内网中的设备可以任意使用这些地址,但是在这三个范围内的IP地址不允许出现在Internet(外网)上。在机构企业内部组网时用的比较多,比如监控项目与公司内部电脑ip设置,用的多的就是192.168.xx。

    通常情况下,按照需要容纳的主机数选择私有地址段。家庭网络规模比较小,一个C类地址,192.168.1.x可以容纳254个终端,足够使用。

    学校或者大型企业可能使用B类甚至A类作为内部网络的地址段。比如手机上网很可能获取的也是一个10开头的内网地址,而不是公网地址。

    三、NAT地址转换

    ​ 私网地址只能在局域网中使用,不同的局域网可以使用同样的私网地址,私网地址是不能出现在互联网上的。那么私网地址如何访问互联网呢?这就需要用到NAT地址转换,将内网地址映射到外网地址。

    而NAT地址转换它实现内网的IP地址与公网的地址之间的相互转换,将大量的内网IP地址转换为一个或少量的公网IP地址,减少对公网IP地址的占用。

    ​ 家庭网络普遍使用端口映射的方式,NAT的核心是一张映射表(源IP地址,源端口,目的IP地址,目的端口),将内网源IP地址和端口映射到同一个公网地址的不同端口,如下图所示。

    ![image-20211115110435337](/Users/xinyun/Library/Application Support/typora-user-images/image-20211115110435337.png)

    总之,家庭网络由于网络规模比较小,通常使用了192.168开头的私网地址,光猫拨号获取了一个公网地址(或者运营商私网地址),通过NAT方式的映射到这个公网地址的不同端口,访问互联网。

    #网络
    上次更新: 2023/04/05, 09:41:10
    有了MAC地址 为什么还需要IP地址
    我们为什么需要IPV6

    ← 有了MAC地址 为什么还需要IP地址 我们为什么需要IPV6→

    最近更新
    01
    JavaScript-test
    07-20
    02
    二维码的原理
    07-20
    03
    利用ChatGPT优化代码
    07-20
    更多文章>
    Theme by Vdoing | Copyright © 2021-2023 XingYun | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式