目录
IP协议一般指IP. IP指网际互连协议,Internet Protocol的缩写,是TCP/IP体系中的网络层协议.
1.地址管理
每个网络上的设备能分配一个地址,我们都希望每个IP地址是唯一的,但是IP地址本质上是一个32位整数,采用点分十进制.
32位整数最多能表示多少个不同的地址呢?42亿9千万.无疑是不够用的.
那么如何解决呢?
解决方案
- 动态分配IP地址
设备上网就分配,不上网就不分配
缺点:无法从根源上解决问题
- NAT机制(依仗路由器的子功能NAT)
将所有的IP地址分成两大类:
内网IP:10.* /172.16.*-172.31.* /192.168.*
可重复出现的IP(在不同的局域网中,是允许重复的!在相同的局域网中,不允许重复)
192.168.10.1
此时的IP就是内网IP.
外网IP:剩下的IP(必须是唯一的)
那么在NAT背景下,如何进行通信呢?
1.外网设备访问外网设备:不需要NAT,直接进行通信
2.内网设备访问内网设备:不允许
3.外网设备访问内网设备:不允许
4.内网设备访问外网设备:对应的路由器会利用NAT,把内网IP进行替换(将IP数据报的源IP替换成路由器自己的IP)
首先,主机构造IP数据报,将IP数据报转发给路由器,此时路由器触发NAT功能,将IP数据报的源IP替换成路由器自己的IP.再将IP数据报转发给服务器.此时服务器会认为在这个数据报是路由器发给自己的.
当在同一个局域网中的不同主机发送的请求不一样,得到的响应自然也不一样,那么,如何让响应返回到正确的主机上呢?路由器+端口号.
首先,主机A和主机B的端口号不同,其次,路由器会对IP数据报进行解析,它记得端口号是谁的.
最后,路由器会根据端口号,返回正确的响应.
端口号:本来是用于区分同一主机的不同程序,现在用来区分不同主机的不同程序也没问题!!!
- IPV6(彻底解决根源问题)
IPV6是使用16个字节,128位来表示IP地址
IP地址组成
IP地址由网络号和主机号组成:
网络号:表示网段,保证相互连接的两个网段具有不同标识(标识一个局域网)
主机号:表示主机,同一网段内,不同主机具有相同的网络号,但必须具有不同的主机号(标识一个局域网内的主机)
从上图可以看出:路由器把2个局域网连在了一起.此时y局域网1和局域网2则为相邻局域网.
那么,
一个IP地址中,如何区分网络号和主机号呢?
有两种方法:
1.IP地址分类(ABCDE):但是不怎么用了
2.子网掩码:
将其转换成二进制,左侧全为1,右侧全为0;全为1的为网络号,全为0为主机号.
例如上述子网掩码:192.168.10即为网络号,1为主机号.
特殊的IP地址
1.主机号为0的IP:192.168.0.0
就是网络号,局域网里不存在某个主机,主机号为0
2.主机号全为1:192.168.0.255
广播地址(往这个地址发送UDP数据报,此时这个数据报就会被转发给这个局域网的其它主机)
例如:投屏.
特别注意:广播是不知道对端IP的.
3.IP为127开头的
127.*称为环回IP,环回IP对应特殊的虚拟网卡,通过环回IP传输的数据,走虚拟网卡.(这个过程没有I/O操作,是纯内存操作),传输速度比普通IP快.
127.0.0.1 :主机自己和自己通信
4.主机号为1
192.168.0.1:一般作为网关IP(局域网的出入口)
2.路由选择
从A到B之间,具体路线怎么走走哪一条.
路由器是不知道怎么从A走到B的,它只能记录周围的情况(邻居).通过路由表(一种数据结构)来记录邻居信息.
就好比,我要从玄武湖-->红山森林动物园
就好比小曹从玄武湖出发,要去红山动物园,问了一个小A,不知道,说去门口问问;到了门口后,小B说去玄武湖地铁站看看.到了玄武湖地铁站,小C说坐去红山动物园地铁站看看;到了地铁站,遇到了小D,小弟说,往前走500m,就到红山森林动物园啦!!!
总的来说,IP数据报在进行网络转发的过程中,是一个逐渐问路的过程.
总
祝大家顺顺利利健健康康,下次见!!!