网络原理3 IP地址
文章目录
- 网络原理3 IP地址
- IP协议的报文格式
- IP地址的具体规则
- IP地址的组成
- 子网掩码
- 特殊的IP地址
- IP地址短缺的解决方法
- 动态分配IP地址
- NAT机制[主流机制]
- IPv6
- 路由选择
网络层中主要做的事情是在两点之间规划出一个合理的路径,同时也要对主机所处的位置进行定义
其实网络层主要就是做两件事:
- 地址管理
- 路由选择
在网络层中最重要的是IP协议
IP协议的报文格式
此处只是对IP协议的简单了解
4位版本: 其实取值只有两种,也就是4和6
IPv4 IPv6,现在一般来说指的都是IPv4
4位首部长度: 和TCP类似,首部是变长的,也是报头中带有选项
8位服务类型: 说是8位,其实只有4位,这4位表达的是当前IP协议的不同的工作模式,这4位中只有一位可以是1,不能同时多位是1,这4种状态是最小超时 最大吞吐量 最高可靠性 最小成本
16位总长度: 描述的是IP数据报的报文长度是多少,IP总长度 - IP报头长苏 = TCP报文长度
8位生存时间(TTL)
TTL的单位是“次数”,是一个整数,初始值一般是32 64 128这样的数字
数据报传输的时候,每经过一个路由器转发,TTL就会-1, 要是TTL减到0了,此时就会把数据报丢弃了,正常情况下,数据报能在很短的次数内,传输到世界上的任何一台主机上
ping 一下百度,就会发现TTL是50,说明一开始的TTL初始值很可能是64,中间转发过14次,最后到达的时候TTL变成了50
为什么只要转发十几次就能传输到呢?
这里是基于一个社会科学上的理论–六度空间理论
解释: 最多通过6个中间人你就能够认识任何一个陌生人
在计算机中,每个路由器也有与之相邻的路由器,这样子延展开来,就能访问到很远的路由器,所以传输的次数很少就能到达
8位协议: 主要做的就是将收到的IP数据报,进行分用,也就是决定数据报该由传输层的哪个协议来解析
Ip地址本质上是一个32位的整数,4个字节,由于有32位,不方便看,所以常常将写作“点分十进制”的方式
所谓的点分十进制就是使用3个点,将IP地址分为4个部分,每个部分1个字节,每个字节的取值范围是0-255
IP地址的具体规则
IP地址的组成
IP地址可以分为2个部分,网络号和主机号
网络号:标识网络,保证相互连接的两个网段具有不同的标识
主机号: 标识主机,同一个局域网中,主机之间具有相同的网络号,但是主机号一定是不一样的
在两个相邻的局域网中,网络号是不一样的
子网掩码
但是怎么知道在一个IP地址中到哪里是网络号,哪里是主机号呢?
此时就有了子网掩码用来划分出哪里是网络号,哪里是主机号
子网掩码也是32位,左半边都是1,右半边都是0,不会01混合
左半边有多少个1就表示IP地址左侧的多少位是网络号,后面就是主机号
首先看子网掩码,255–>0xFF–>11111111(八个1)
一共有3个255,说明一共有24个1,也就是说IP地址的前24位都是网络号,也就是说192.168.0是网络号,102是主机号
要是IP地址是255.255.254.0
此时就是11111111 11111111 11111110 00000000,此时就是后面9位是主机号
特殊的IP地址
如果一个IP地址的主机号为0,表示这个IP地址是网络号
如果一个IP地址的主机号为1,此时这个IP地址往往表示这个局域网的网关,常常是路由器的IP(并不是强制要求,只是习惯用法,可以手动改)
网关一般就是路由器,把守着当前局域网与其他的局域网之间的出入口
如果一个IP地址的主机号全是1,表示这个IP是广播IP
如果IP地址的开头是127,说明了该IP是环回IP
IP地址短缺的解决方法
IP地址是用来区分网络上的唯一主机
一个IP地址是4个字节,32个bit位,能表示的范围是0 – 2^32,也就是0–42亿9千万
一个IP地址就是一个主机设备,也就是说最多只能有42亿9千万多台电子设备,很明显,这是严重不够用的
所以必须要想办法应对越来越多的电子设备对IP地址的需求
现在主要有3种方法
动态分配IP地址
当有设备上网的时候才分配IP地址,不上网的时候就回收IP地址,给别人用
这种方案只能说是提高了IP地址的利用率,但是治标不治本
NAT机制[主流机制]
不响动态分配IP地址那样,NAT机制保证每个设备都有独立的IP地址
将IP地址分为两大类
-
外网IP / 共网IP
-
内网IP/私网IP/局域网IP
约定10.* 、172.16-172.31.* 、192.168.* 都是局域网/内网IP
在一个局域网中,IP地址不能重复,但是在不同的局域网中,可以存在一样的IP地址
假设A在自己家的局域网中的IP地址是192.168.0.213,B在自己家中的局域网中的IP地址也可以是192.168.0.213
当我们想要将流量发送到公网(广域网)上时,目标IP地址必须是公网IP,一个局域网中有一个公网IP,所有在局域网中的电子设备都是通过这一个公网IP来与外界通信,这样子就大大减少了外网IP的数量
路由器本身也是一个NAT设备
现在最主流的方案就是NAT+动态地址分配
就算我告诉了别人我主机的IP地址,别人也不能访问到,因为NAT机制,我的IP只能在我现在的局域网中使用,我可以通过NAT设备访问到外网的IP,但是我无法访问到其他内网中的设备
总结来说,所谓的NAT机制就是将IP分成了内网和外网,只要求外网IP不能重复,内网IP在不同的局域网中是运行重复的,这样子只要用一个外网IP就能代表一大堆的内网IP了
IPv6
使用IPv6才能彻底解决IP地址不够用的问题
IPv4是4个字节,32个bit位, 所以IP地址的个数是2^32
IPv6是16个字节,128个bit位, 所以IP地址的个数是2^128,这是在是一个巨大是数字
既然IPv6这么好,为什么动态分配+ NAT才是现在的主流呢?
这里最主要的原因就是IPv6和IPv4不兼容
也就是说,原本的IPv4的路由器不支持IPv6,要想使用IPv6就要换路由器,就要花钱,所以IPv6的普及率并不是很好(但是很多的应用程序已经支持IPv6了)
路由选择
在IP数据报中,包含了目的IP,网络数据报到达路由器之后,路由器自身有一个路由表的数据结构(路由表就是这个路由器认识的路),一个路由器无法认识到网络的全貌,但是能认识附近的一部分网络
所谓的路由选择其实就相当于是问路
如果当前的目的IP 路由器认识,它就会给出一个明确的路线
要是当前的目的IP不认识,路由器就会把数据报转发给一个更“见多识广的”路由器,这在路由表中有一个默认的选项,叫做下一跳
要是问了一大圈,也没找到目的IP的路,就有可能是这个IP根本就不存在
路由选择不仅仅是找一条路,也是要筛选出一个更好的路