持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第33天,点击查看活动详情
大家好,我是bug郭,一名双非科班的在校大学生。对C/JAVA、数据结构、Spring系列框架、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流
作者简介:
- CSDN java领域新星创作者blog.csdn.net/bug..
- 掘金LV3用户 juejin.cn/user/bug..
- 阿里云社区专家博主,星级博主,developer.aliyun.com/bug..
- 华为云云享专家 bbs.huaweicloud.com/bug..
地址管理
我们知道IP地址的表示分成4组,每组一个字节!
我们又把这4组数据进行了划分!
前3个字节一般表示网络号,最后一个字节表示主机号!
192.168.107.89
- 网络号
不同的网络号表示不同的局域网!
- 主机号
主机号表示该局域网中的设备编号!
我们通过网络号可以找到该局域网,通过主机号可以找到该局域网下的主机设备!
这里的的地址划分是唯一不变的嘛?如果该局域网下的主机设备超过1个字节大小咋整?
这里的地址划分并不唯一,如果该局域网下的主机过多,一个字节一个无法编号!那就需要有新的划分方式,我们这时就要引入子网掩码这个概念! 子网掩码 子网掩码也是32位!通过子网掩码可以将IP地址进行不同的划分方式!
例如:我的IP地址是
192.168.107.89我咱知道我前几位表示网络号,后几位表示主机号呢? 通过这个子网掩码255.255.255.0就可以知道前3个字节表示网络号,最后一个字节表示主机号! 网络号:通过通过1标识(255) 主机号:通过0标识 这里的0和1不能交替,只可能1在前,0在后! 这就是子网掩码地址划分方式
特殊IP地址
根据对地址的划分,我们可以更好的管理IP地址
我们也规定了一些
IP地址具有特殊意义!
- 如果
IP主机号全为0,该IP就表示网络号(一个局域网中的设备主机号不能全为1) - 如果
IP的主机号全为1,该IP就是广播地址,通过这个IP,我们可以对整个局域网中的主机进行消息传输,在该局域网中的设备都可以接收到数据,类似于机房的广播! - 如果
IP地址以127开头,该IP表示环回IP,就是表示自己的主机,典型的环回IP127.0.0.1 - 如果
IP地址以10开头,192.168开头或者172.16-172.31开头表示该IP地址是一个局域网IP地址,这个IP地址只能由该局域网中的设备访问,其他局域网的设备访问不到这个IP地址! - 要求外网
IP是唯一的,每个外网IP都会对应到唯一的一台设备,内网IP在一个局域网中是对应到唯一设备的,当时不同局域网中的内网IP可以相同!
我们再思考另一个问题,居然每一台设备都有自己的IP地址,为啥要区分内网IP和外网IP,大家都整一个不同的IP不就好了?
我们知道IP地址范围是32个比特位也就是一个int型数据,而最大的表示范围是4294967295也是是42亿九千万大小!
而如今的世界上的设备远远超过了42亿,如果我们给每一台设备分配一个IP,势必会有设备的IP重复不唯一!
如何解决这个IP分配问题呢?
- 动态分配IP地址
让每台设备联网的时候分配一个IP地址,设备休息的时候,就不分配IP,然而这个问题并没有从根本上解决这个问题,设备数量一直在增加!
- NAT机制
让多台设备共用一个IP(外网IP) 把网络分成了内网(局域网)和外网(广域网) 要求外网IP只能唯一一台设备 同时同一个局域网的设备共用一个外网IP 所以一个外网IP可能表示上千或者上万台设备! 不同的局域网设备可以具有相同的内网IP 这时IP地址分配压力就缓解了! NAT机制下的重要结论: 有外网IP的设备,可以在互联网中的任何地方都可以访问到! 具有内网IP的设备只能由在这个局域网中的设备访问,其他局域网中的设备访问不到! 例如: 在一个学校就是一个局域网,然后每台设备都有一个内网IP,而这个I只能由在这个学校的局域网中的设备访问! 在不同的局域网下那我们如何将主机A的信息发送给主机B呢? 就比如我们发微信,我们先通过这个内网IP,访问一个共用的外网IP,这里可能是运营商的外网IP,通过运营商的外网IP,我们就可以访问到微信的服务器外网IP,然后将消息发送给主机B! 我们知道同一个局域网下共用一个外网IP,那如果该局域网下的多台设备下的客户端程序系统分配绑定相同的端口号咋整? 我们把具有外网IP的路由器设备叫做NAT路由! 通过NAT路由器可以将两个设备的内网IP和端口号记录下来,然后通过某种映射关系,映射新的端口号,然后消息再传回时,根据开始的映射关系将信息返回不同的设备!
- IPv6
虽然NAT机制目前解决了地址分配的情况,但是这并不是长远之计!毕竟我们IP设计的初衷就是一台设备分配一个IP地址,所以IPv6从根本上解决了这个问题! IPv6版本不同于之前的IPv4版本IP地址只有32位比特位! IPv6版本的IP地址升级具有128位的IP地址!也就是可以保存16位字节大小的数据!直接在IPv4版本42亿9千万的范指数加了个4,就是4个42亿9千万相乘,可想而知范围之大,号称可以将地球上的一粒沙子都编号IP地址! 但是IPv6和IPv4设备并不兼容,需要更改新的设备才能支持IPv6,国家在大力推行IPv6升级!
路由选择
我们知道网络层在网络传输中就相当于快递公司承担着规划路线的作用!我们要规划好合适的线路将该IP地址主机发送的信息传输到另一个IP地址的主机! 如何规划好线路呢?
我们的协议报头中已经保存了发送方和接收方的主机IP,但是我们要选择一条合适的线路,将信息发送过去! 而我们知道网络通信需要经过很多的路由设备,而网络环境复杂,如何选择一条线路到达目的IP地址十分重要! 路由器设备如果知道这个IP地址就可以直接发送过去! 就相当于你要去一个地方,如果你认识路就可以直接过去,如果你不认识路的话只知道大致的方向,那你只能到达一个地方通过问路的方式,继续接下来的前行! 这里的路由器也会通过这种询问的方式,先将数据发送给大致方向的路由器,然后由接下来的路由机继续发送,直到有路由器认识这个IP然后到达这个IP有很多条路线,这时IP协议就会选择合适的线路,这就是路由选择! 路由器如何认识IP呢? 路由器内部维护了一个数据结构路由表 路由表保存了一些网段信息(网络号)目的IP就是通过这些网段信息进行匹配以及每个网段信息对应的网络接口(也就是路由器里面具体的端口),路由器通过相邻的路由设设备保存的路由表信息扩展自己的路由表信息!