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

NIO蔚来 面试——IP地址你了解多少?

目录

前言

1、IP地址

1.1、什么是IP地址

1.2、IP地址的格式

1.2.1、32位二进制数表示IP地址,够用吗?

1.3、IP地址的组成

1.4、为什么会出现IPv6

1.4.1、为什么IPv6还没有大量普及呢?

1.5、子网掩码

1.6、特殊的IP地址

2、路由选择

2.1、工作流程


前言


面试官:给你出一道算法题,一个字符串,请判断是否符合IPv4的一个格式?

Ps:你以为真的是考你算法题吗?当然不是,是考你对IPv4格式的一个理解!

1、IP地址


Ps:本章,凡是提到IP协议,没有特殊说明,默认是指IPv4。

1.1、什么是IP地址

IP地址是互联网协议地址,IP协议提供的一种统一的地址格式,为互联网上每一个网络和每一台主机分配一个逻辑地址,来屏蔽物理地址的差异。

1.2、IP地址的格式

IP地址是一个32位的二进制数字(可以表示42亿9千万个),通常使用"."号分割成4个“8位二进制数”(4个字节),例如:01100100.00000100.00000101.00000110;

一般使用“点分十进制”的方式来表示,即a.b.c.d的形式(a、b、c、d都是0~255之间的十进制整数),例如127.0.0.1。

1.2.1、32位二进制数表示IP地址,够用吗?

在当今网络如此发达的时代当然是不够用的,但是也有相应的解决办法,如下两种办法:

  • 动态分配IP地址:使用动态分配协议(DHCP)动态分配内存地址。
  • NAT:将IP分成了 外网IP 和 内网IP ,只要求 外网IP 不能重复,内网IP 在不同的局域网中是允许重复的(可以用一个外网IP代表一大波内网设备)。

内网IP 和 外网IP 是什么样的?(除了以下格式的内网IP,其他的格式都是外网IP)

 Ps:当前网络的现状——动态分配 + NAT。

1.3、IP地址的组成

IP地址分为两个部分,如下:

  • 网络号:用来标识网段(局域网的身份标识),两个相连的局域网有不同的身份标识。
  • 主机号:用来标识主机,同一个局域网中,主机之间的网络号是相同的,主机号一定不同。

1.4、为什么会出现IPv6

IPv4的地址不够用啊~

对比以下数据:

  • IPv4:4个字节,32位来表示IP地址。
  • IPv6:16个字节,128位表示IP地址。

扩大的数量大概是IPv4的42亿 * 42亿 * 42亿 * 42亿......所以可以说IPv6彻底解决了IPv4地址不够用的问题。

1.4.1、为什么IPv6还没有大量普及呢?

IPv6以及提出很多年了,当前网络现状仍然是NAT + 动态分配,为什么 IPv6 没有大量普及呢?因为 IPv6 和 IPv4 不兼容!

比如现在有一个IPv4的路由器,但是这个路由器已经用来很多年了,想要升级换设备就要花钱!不过相对来说,国内IPv6普及的还是挺好的,70%的宽带已经支持了(但基本都是未开启状态,没开启就意味着还是IPv4的方式来访问)。

1.5、子网掩码

子网掩码 划分出了从哪里到那里是一个 网络号。我们知道IP地址是32位的,特别的,子网掩码格式的IP地址的32位中 左半边是1, 右半边是0(不会01混合),左半边有多少个1就表示IP地址左侧的多少位是网络号。(把子网掩码和IP地址进行按位与运算,得到的结果就是网络号)

1.6、特殊的IP地址

如果一个 IP 地址,主机号为0,此时这个 IP 就表示网络号。192.168.0.0 ,代表当前局域网。

如果一个 IP 地址,主机号为1,此时这个 IP 就表示这个局域网的 “网关”。192.168.0.1,表示局域网的网关(网关的角色一般就是路由器,把守着当前局域网和其他局域网之间的出入口),通常是路由器的 IP。

如果一个 IP 地址,主机号全为 1(八个二进制位全为1),此时这个 IP 表示广播 IP。

127.*开头,都是 “回环IP”,典型的就是127.0.0.1;

2、路由选择


路由选择是“启发式”的过程类似于“问路”(就像地图导航一样,能够在两点之间规划一个路线)。

2.1、工作流程

a)网络数据包到达路由器的时候,路由器自身就有一个“路由表”数据结构(路由表就是这个路由器认识的路);

一个路由器无法认识到网络的全貌,但是可以认识附近的一部分。

b)如果过当前的目的 IP 路由器认识,就会给出一个明确的路线;

如果当前的目的 IP 路由器不认识,路由器就会把数据包转发给一个“更见多识广”的路由器。

c)也有可能问了一大圈最后没有找到目的地,例如 IP 地址不存在(或者不可达)。


 

http://www.lryc.cn/news/16666.html

相关文章:

  • Gluten 首次开源技术沙龙成功举办,更多新能力值得期待
  • springboot+redis+lua实现限流
  • 线段树总结
  • 龙芯GS232(MIPS 32)架构cache管理笔记
  • js去重
  • 小白都能看懂的C语言入门教程
  • leetcode 21~30 学习经历
  • 让ArcMap变得更加强大,用python执行地理处理以及编写自定义脚本工具箱
  • SAP 项目实施阶段全过程
  • idea中的Maven导包失败问题解决总结
  • REDIS中的缓存穿透,缓存击穿,缓存雪崩原因以及解决方案
  • 数据库及缓存之MySQL(一)
  • 项目管理中,项目经理需要具备哪些能力?
  • itk中的一些图像处理
  • Endless lseek导致的SQL异常
  • JUC-day01
  • Mind+Python+Mediapipe项目——AI健身之跳绳
  • 数据库概述
  • 【已解决】解决IDEA的maven刷新依赖时出现Connot reconnect错误
  • 动态链接库(.so)文件的变编译和引用、执行
  • linux(centos8)文件解压命令
  • 阅读笔记6——通道混洗
  • 上海亚商投顾:沪指失守3300点 卫星导航概念全天强势
  • 疯狂的SOVA:Android银行木马“新标杆”
  • 汽车零部件企业数字工厂管理系统建设方案
  • 【线程同步工具】Semaphore源码解析
  • 获取实时天气
  • 【数据库】redis数据持久化
  • 前端编译、JIT编译、AOT编译
  • 父子组件中,子组件调用父组件的方法