在本文讲解的网络层中,注意了解一下:IP协议!
IP地址:本质上是一个32位的整数!
通常情况下,会把32位的整数,转换成点分十进制的表示方式
需要三个点,把这个整数分成4个部分,每个部分1个字节,每个部分的取值范围为:0~255
一个字节 | 0~255 | -128~+127 |
二个字节 | 0~65535 | -32768~+32767 |
四个字节 | 0~42亿9千万 | -21亿~+21亿 |
对于32位的整数,最多能表示多少个不同的地址呢??42亿9千万
但是,对于全世界的电脑,服务器,路由器,手机…………不够用!!
那么,该如何解决上述问题呢??
设备上网才分配,不上网就不分配,此时就可以省下一大批IP地址了,但是,并没有增加IP的数量,此时只能一定程度的缓解,不能彻底的解决问题!!
把所有的IP地址分为两大类(内网,外网)
内网:以10.*,127.16.*到127.31.*,192.168.*开头的,内网IP可以重复出现(尤其在不同的局域网中)
外网:剩下的IP,外网IP必须是唯一的!!
内网设备如果要访问外网,会给他们分配一个外网IP,但是这个外网IP不是这个设备独占的,而是这个内网中所有的设备都共用这一个外网IP
局域网就可以认为是内网,连在家的路由器就是处在内网中!!
正是因为VAT机制,导致咱们字节的个人电脑处在内网中,不能直接被外部访问!
只要求外网IP必须唯一的
内网IP在不同的局域网中,是允许重复的!!(同一个局域网里不能重复)
内网IP在咱们办公楼内部(局域网内部),别人的IP一定都不一样!
但是,相对于全国各地,有的就可能会有和我一样的内网IP!
那么,在NAT背景下,如何进行通信??
因此,可以通过动态分配+NAT从而解决IP不够用的问题!!
当然,也有IPv6
IPv4是传统的IP协议,使用4个字节,32位来表示IP地址(2^32)
IPv6是更新的IP协议,使用16个字节,128位来表示IP地址(2^128=2^32*2^32*2^32*2^32)
但是:IPv4和IPv6不兼容!!
一个普通的IPv4路由器要想支持NAT,在软件上升级一下系统就了(成本很低)
一个普通的IPv4路由器要想支持IPv6,光升级软件不行,还得升级硬件(成本很高)
IP地址的组成:
IP地址分为两个部分:网络号和主机号!
IP地址中,哪个部分是网络号??哪个部分是主机号??
一定前三个字节是网络号吗??不一定哟!!
对应网络号和主机号的划分,主要有两种分类方式:
- IP地址分类(ABCDE)该方法早已淹没在历史长河中,但是,在有的教科书中非常活跃,甚至,在部分的笔试/面试中可以见到
- 子网掩码:
255.255.255.0
255——》0xff——》1111 1111(8个1)
子网掩码,站在二进制的角度来看,也是一个32位整数!
左侧都是1,右侧都是0(不会有1010这种混合的情况)
左侧有几个1,意思是IP地址的哪些位就是网络号
对于255.255.255.0而言,左侧有24个1,右侧有8个0,那么该IP地址的前24位都是网络号,剩下的8位是主机号!
特殊的IP:
路由选择:
A——》B之间该怎么走??A——》B之间存在很低条路径,路由选择就是要做出决定:具体走哪条路??
网络环境很复杂!!
某个路由,无法把整个网络环境都记录下来,路由器只能记录周围的情况(只能知道邻居是谁!!),在实际的转发过程中,是渐进式的,类似于”问路“,从而逐渐接近目标!
IP数据报,在进行网络转发的过程中,就是类似于一个”逐渐问路“的过程,每个路由只能认识周围的情况,很可能问的目标并不知道(目的IP在路由表中,没有匹配结果),此时就会走路由器给你指出的一条默认的路径!从而把咱们的数据报引向更上一级的路径!!(越上级的路由器,越见多识广,路由器与路由器之间是不一样的!!)