一、网段划分
现在的网络划分:
——通过子网掩码区分网络号和主机号
如图是Windows系统控制平台下网络IP的设置界面,下面也会介绍这些内容
1、一般情况下的家庭网络环境
下面介绍一下家庭网络的一般的部署情况:
1、如果在一个局域网中,网络号和主机号都相同,就不能上网,因为每个主机都是单独的个体,如果两个主机的主机号都一样,则不能辨别这两个主机谁是谁,网络数据也自然不知道传给谁。
2、如果是相邻的局域网,则他们的网络号不能相同,否则上不了网,这里的相邻是指上下相邻,如运营商的光猫下接我们的路由器,路由器下接我们的电脑设备,这里的路由器和电脑设备就是相邻的。如图:
如图:在一个局域网内,网络号要一样,但主机号不能一样;而且相邻的局域网的网络号不能一样,如上图,你买的路由器的LAN口IP不能和光猫上的LAN口IP一样,也就是说,你的电脑上的IP不能和光猫上的LAN口IP一样,这就是相邻的意思。
还有,在同一个局域网中,我们可以通过这局域网内的一个设备访问另一个设备,比如上图的设备A就能访问设备C。
如果想要我们家电脑设备断网,防止熊孩子沉迷游戏,就可以把路由器上的LAN口IP和WAN口IP设置成一样,这样相邻的局域网的IP网络号一样,就不能上网了。
2、IP地址
在局域网中,我们的设备的IP地址(IPv4)分成两部分:网络号 + 主机号,如图:
网络号(同一个局域网内前半部分都是相同的):192.168.83 主机号(同一个局域网内后半部分都是不同的):63
这里的网络号是路由器LAN口的IP,同一个局域网上的设备,网络号都是一样的,主机号就是区分同一局域网的不同设备,所有主机号要不一样。
网络号要和路由器的LAN口IP一样,才能上网。
3、子网掩码
我们怎么知道哪几位是网络号呢?就是看子网掩码,如图是子网掩码:
前三部分都是255,二进制表示是8个1,如果写出二进制的话,前24位都是1,后8位都是0,这就说明:前三部分是网络号,最后一部分是主机号。
4、网关
可以把网关理解成上网的关卡,这个关卡就是路由器,是局域网网络数据的进出口。所以网关写的就是路由器的LAN口IP。
但是要设置这么多东西,我们连网就能上网,也没有配置这些东西啊,原因就是路由器帮我们自动配置了,如图:
只要你一连上路由器,路由器的DHCP功能,就可以自动的帮你分配一个IP,这也意味着,每次重启路由器,可能会有不同的IP地址。
如果要手动配置的话,要对网络环境很清楚,不然容易出问题,上不了网。
以前的网络划分:
把时间往前推移个20~30年,当时的网络划分不是像现在这种,不过也是按网络号和主机号进行划分,如下图这种:
这时上古时期的网段划分了,并没有子网掩码区分网络号和主机号;上面的这种网段划分也是因为浪费了太多IP地址,给放弃使用了,如A类,有24位的主机号,要知道,24是一个很大的数字:2^16 * 2^8 = 65535 * 2^8 = 65535 * 255 大于120万,而一个局域网内真的可能会有120万个设备吗,答案肯定是NO!这就导致,浪费了很多IP地址,而且在这个网络划分出来后,网络迅速发展,就连B类也很快就满了,后来就想出来现如今的网络划分,使用子网掩码的方式辨别网络号。
其中我们如今的IP:192.168.0.1不是上面的C类,我们是用子网掩码可以设置网络号和主机号,完全可以把前两段设为网络号,后两位设为主机号,所以,上面这种IP不是以前的C类。
二、特殊IP
——这里使用的是现如今子网掩码的网络划分
1、环回 IP
环回IP(loopback)是127.0.0.1,表示自己本机。
我们程序员写完代码,肯定是要对代码进行测试的,而测试就是要在本机上测试,所以就设置一个这样的IP供我们程序员使用。
其实,换回IP不是就仅仅只有一个(127.0.0.1)。127.* ,以127开头的IP地址,都是环回IP
2、主机号为全 0 的IP
IP地址的主机号为全0,例如:192.168.1.0,最后一部分是主机号,主机号为全0,表示 “这个网段”,这个IP比较特殊,不能分配给某个主机。
3、广播地址IP
广播地址IP是主机号为全 1 的的IP,注意,这里不是10进制的全1,而是二进制的全1,例如:192.168.1.255,前三部分是网络号,后一部分是主机号,主机号的二进制是全1,8个1,也就是255。其中有以下几种情况:
单播:一对一
组播:一对多(多是有限制的,是整体的一部分)
广播:一对多(这里的多是整体全部,比组播的多还大)
上面的广播:往广播的IP地址发送消息,局域网内的所有设备都能收到。(广播只能发UDP协议的消息,TCP的则不行)
广播的经典应用场景:手机投屏 / 电脑投屏,以下简单介绍投屏的流程:
在家里的场景,家里的通信设备 / 电视.....都会连接你家的网,多个设备连同一个网,这也就是你家的局域网了;这时,我们想把手机的视频投屏到家里的电视中,就要点击手机的投屏功能。
手机上点击完投屏后,你手机就会广播一个查询数据包,查询有多少个设备是连接了你家网的,这时候你家连网的设备就会给你返回响应,返回响应到你手机后,你手机就要判断哪些设备是支持投屏的,这时候选择可以投屏功能的设备(电视),就可以在电视上看你手机上的视频了。
这个投屏播放视频,传输数据的过程是直接传输的,因为在同一个局域网中,里面的设备都是可以互相访问、通信的。
学校中的机房,学生机和讲台上的机器,这种一般不是广播,而是:学生机是客户端,讲台上的机器是服务器,客户端从服务器中拉去画面(这里如果有办法关闭学生机中的客户端进程,你就可以自由控制电脑了)。
三、路由选择(路线规划)
因为网络结构太复杂,每个路由都无法掌握全局的信息,只能掌握一部分局部的信息(周围的),所以数据进行网络传输的路线不能一开始就规划好全局路线。
当一个数据刚进行网络传输时,从此时的起始IP到目的IP,这个数据走的路线,并不能从全局的角度就给它规划好路线(像如今的地图功能),因为网络结构复杂,且网络环境难以预料,是一直在变化的,所以进行网络传输网络数据时,它只能走一步看一步,走到当前节点(路由),就看看周围的节点哪些适合这个数据传输,是从局部的角度,看离自己近的节点,选择下个合适的节点,传输给它。
这里是探索式 / 启发式 / 渐进式的路线规划,类似以前没有手机地图的时候,去别的陌生地方要不停的向路人问路,因为这个路人如果是住在附近的人,就对这里不会陌生,附近的地方也大概率会知道;而路由就类似路人,它虽然不能知道网络全局的信息,但能知道相邻的路由(“附近的网络环境”)有一定了解,网络数据就可以根据这个路由来确认下一个的节点,应该是哪个。
路由能够知道附近的路由设备的网络环境,是因为路由器内部有一个数据结构:路由表,大概结构如图:
这里的数据拿着目的 IP,路由表这里就会告诉你,应该往哪走(对应的网络接口,这里的接口和物理上的接口不同);但是这了数据有时候目的IP去找出口,可能查询不到结果(应该往哪走),这里就要靠这里特殊的表项,里面有default,表示默认的,虽然此时数据不知道怎么走,但是可以往一个大概方向走,特殊表项就是这种原理(像我从北京去广东,虽然不知道咋走吗,但主体方向是往南走,肯定不会错)。