认识网络
基本网络
如果只有一台电脑,所有数据都存储在这台电脑上
如果有两台以上呢?为了实现数据的快速传输,就要用网线将他们连接起来
每有n台电脑,每n台电脑都需要n-1条网线,过于“复杂”,所以需要一个“上级”将它们连接起来,这个东西就是交换机
在所有电脑之间放一个交换机,让电脑都接入交换机而非各自点对点连接,由交换机分发来自不同设备的数据
交换机可以是一个有很多接口的常规网络交换机,可以是一台服务器,也可以是家里的路由器

如果是之前的电脑之间点对点连接,肯定知道数据是谁发出的,传递给谁的
IP地址
可是连接交换机之后,是可以快速传输了,但是是谁发的?给谁的?这就不知道了
为了解决这个问题,就给所有的电脑都设置一个数据虚拟地址,这就是ip地址(比如说192.168.12.3)
- 发送数据时带上这个数据虚拟地址的发送方和接收方
局域网
当交换机和它接驳的所有设备都有了IP地址后,它们的小家庭就组成了可以用来交互数据的网络,称之为局域网

如果我们再加入一个新的局域网,让新的局域网和原本的局域网进行数据沟通,就要将它们的交换机相连接,就得到了一个更庞大的局域网

随着时间推移,有了更多的局域网,为了都相连,点对点连接也会和刚才分析电脑相关联一样出现接口和线缆过多的情况,就需要给若干局域网的交换机再做一个上级,一个新的交换机

广域网
随着局域网内的设备越来越多,最后几乎全世界的人都接入到这个庞大网络中,我们只需要接入这个网络就能访问到这个世界上的绝大多数设备。这个超级庞大的连接全世界设备的网络就是广域网

把全世界的设备连接起来,就需要在各种重要城市建设骨干服务器,在不同区域还要有分支服务器,所以我们的网络服务运营商ISP就要收取宽带的限速和计费来消除设备成本
IPv4
IPv4地址由32位二进制构成,理论上可以提供2的^32约42.28亿地址
也就是4字节嘛:00000000 00000000 00000000 00000000
为了方便描述,将每八个二进制为一组转为十进制,那就是0-255,0-255,0-255,0-255的一个串
有一些地址有特殊用途,最后保留下来给大众使用的大概只有36.74亿个IPv4地址
NAT网络地址转换
Net Address Transform
我们很难让每个设备都有自己的IP地址,因为数据上限摆在那,为了解决这个问题,就用到了NAT技术
假设家里有五台电脑分别是192.168.0.1~5,然后接入路由器广域网IP6.6.6.6(由于这个路由器要负责接驳局域网的设备并且有自己的公开IP访问广域网,它也叫做网关),然后路由器要在广域网上访问一台IP为8.8.8.8的设备

然后电脑A先发送了一个文件xyz.zip给路由器,路由器知道他要发给8.8.8.8ip的设备,就会把这个xyz.zip文件用自己的6.6.6.6ip发给8.8.8.8 这样这五台局域网的设备都可以通过路由器,将原有的ip转为6.6.6.6再发给8.8.8.8,实现五台设备共用一个IP的效果
然后呢,8.8.8.8那边也可以作为网关,下面附属了若干其他设备,它们也共用了8.8.8.8的IP

这样就存在一个问题,8.8.8.8下属的设备怎么知道文件的来源是6.6.6.6的哪一个电脑?谁发过来的不知道,然后想要做出回应发给6.6.6.6,又不知道该发给谁,因为它们各自都是共用网关的IP
端口映射
为了解决NAT中的共用IP无法分辨下属电脑ip身份的问题,就给每个网关下属的电脑,加上一个端口号
在网关和下属电脑的IP地址后面都加上端口号,它们与外界网关交互时,就会利用端口号来区分不同设备,并且网关的端口例如是6.6.6.6:1100/1200等也会映射到下属电脑的192.168.0.1:80/90

这样就能实现一个IP地址还能精准传输数据
在NAT和端口映射技术的加持下,才让数量不够用的IPv4苟延残喘这么多年
公网IP和私网IP
那五台192.168.0.1~5,就是寄宿在6.6.6.6的网关下的私有IP

网关所拥有的可以直接在广域网上交互数据的6.6.6.6,就是它在广域网中的公网IP
IPv6
IP协议更新迭代,IPv6由8组四位十六进制数组合而成
也就是像3FFE:F200:0234:AB00:0123:4567:8901:ABCD这样的一个地址,就是IPv6地址
理论上可以提供3.4x10^38个地址(可以给地球上每一粒沙子标注独立的IP)
不过IPv4和Ipv6是两个不同的协议,不能直接互通,需要利用其他设备做转换和映射
DNS
能打开QQ但是打不开网页,可能就是DNS配置错误;还有一些路由器、宽带提供商存在DNS劫持或DNS污染的现象
域名Domain
想要在互联网上访问对方,就需要知道它的IP地址,一般是四组0-255的数字构成,只要错一个就无法正常访问,这就带来不便利了
所以需要一些有特征的有关联的内容,与IP地址做关联,域名就是一个很好的东西
Hosts文件
那为什么直接访问www.baidu.com就能不利用IP信息访问百度的IP设备呢?
因为电脑里有一些神奇的东西,做了常规的域名vsIP的对应关系,访问指定的域名就可以访问到想要的IP
这个神奇的东西就是Hosts文件,在C:\Windows\System32\drivers\etc地址下有一个hosts文件
当我们访问www.baidu.com时,互联网不支持直接用域名访问,系统就去Hosts文件里面找这个域名对应的IP,然后再去互联网中访问这个IP
DNS服务器
但是Hosts文件记录的对应关系是有限的!所以单独用一台服务器来存储绝大多数域名和IP的映射表,这个服务器就是DNS:Domain Name System
当我们想要访问网站时,先让电脑去DNS服务器上查询我要访问的域名对应的IP是什么,然后再在电脑上访问这个IP

作为“指路人”的DNS服务器,它的反馈速度越快,就能越快访问到对应域名的IP,就越快的访问的那个IP的网站
所以选择一个合适的DNS服务器很重要,能显著提高网页浏览体验
DNS劫持&污染
假设某个网站域名是www.abc.com,它的IP是202.206.64.41
当我们在浏览器输入www.abc.com后,一个正常的DNS服务器就要返回IP地址202.206.64.41给我
但是在这个过程中发生一些不为人知的操作,返回地址是202.206.64.42,就无法访问原网站
轻一点程度,返还广告,顶多影响用户体验
严重一点,把某个网站完整复制,利用这个克隆网站完成盗号信息获取等内容
而从浏览器前台来看,确实是这个域名
DHCP
动态主机配置协议DHCP
用来配置主机的,四个东西:
- IP地址
- 掩码mask
- 网关地址GW
- DNS
让一个非专业的人员来配置,肯定不容易,所以有自动配置的方法!
就是靠DHCP自动获取配置,通常单独用一个DHCP服务器,在这个服务器中,预先配置好几个东西:
- 地址池:用于给下属主机设备分发ip地址 例如192.168.1.100~200,掩码24位
- 网关地址:有时候DHCP服务器直接架设在网关上,也就是网关就是DHCP服务器自己 例如192.168.1.1
- DNS:每个地区不同,可以是114.114.114.114 或8.8.8.8或运营商提供
配置好DHCP后,只需要将它和主机放置在同一个交换网络中,主机就会自动向外请求获取ip地址然后得到DHCP分配的地址,这个过程有四步:
主机主动发送dhcp的发现报文(广播报文),在这个网络中寻找DHCP服务器
如果网络中有DHCP服务器存在,就会给那个主机返回Offer(包含了IP、掩码等信息的报文)
一个网络中可能有多台DHCP服务器,谁先返回offer就用谁的分配信息!
主机选择最先到达的ip地址,然后再发送一个广播请求,告速DHCP服务器我请求使用192.168.1.100这个ip地址
由分配地址的DHCP服务器最后返回确认消息,告速主机OK,你可以使用啦
一共四次通信完成DHCP自动配置
