1.网络层
网络层要做的事情,主要是两方面,
1)地址管理,制定一系列的规则,通过地址,描述出网络上一个设备的位置.
2)路由选择.网络环境比较复杂的,从一个节点到另一个节点之间,存在很多条不同的路径,就需要通过这种方式,筛选/规划出更合适的路径进行数据传输
IP协议
8位协议:
描述的是,IP 数据包的载荷部分, 是一个 UDP 数据包还是 TCP 数据包(传输层是哪个协议)
1.1 地址管理
IP 地址,是一个 32 位的整数.2^32 => 42亿9千万
地址,理论上来说,是不应该重复的!!
互联网发展到今天,能上网的设备,非常非常多的.早就超过了 42亿9千万这个数字~~最近几年很重要的概念,物联网.汽车,空调,冰箱,洗衣机.…. 也都能联网了
如何解决这个IP 地址不够用的问题呢?
方案一:动态分配 IP
这个方案,治标不治本, 提高了 IP 地址的利用率, 并没有增加 IP 地址的数目
(虽然这是一个 过渡 方案,这个方案目前仍然是广泛存在的)方案二:NAT 机制(网络地址转换)
本质上让一个IP 地址,代表一批设备.
把 IP 地址分成两个大类
1)内网 IP (局域网 IP)
如果一个IP 地址,是以 10.* 或者 172.16.*-172.31.*或者 192.168.(复合上述条件之一,IP 就是内网 IP)
在同一个局域网内部,内网IP之间,不能重复
在不同的局域网中, 内网 IP之间, 可以重复.2) 外网 IP (广域网 IP)
剩下的 IP 就都是外网 IP
外网 IP 则始终都不允许重复,务必唯一【当前情况下,通常都是一个小区/一个学校/一个公司, 都是构成一个大的局域网 (这一个局域网中可能就有几干,上万个设备)
这样的一个局域网,就使用一个外网 IP 即可.
(一个外网 IP 就代表了,几千个上万个这样的设备~~)】【外网 IP 其实是所在的这一个大的片区,共用的一个外网IP】
如果当前局域网内,有多个主机,都访问同一个网站服务器,此时服务器返回的响应经过当前的路由器之后,要交还给哪个主机呢??
NAT属于纯软件方案
方案三:IPV6
IPv6 使用 16 个字节来表示 IP 地址
电子监听、全国断网,棱镜门背后,中国如何从末路狂奔到世界之巅_哔哩哔哩_bilibili
1.2 网段划分
上述和 IP 地址相关的规则,也是 IP 协议的一部分.(IP 协议,两个核心功能,地址管理,路由选择)路由选择, 就是描述了 IP 协议(IP 数据报) 转发过程,
而进行 IP 数据报转发的时候,每个路由器,都是无法知道,网络的"全貌”的,只知道一些局部信息.
(一个路由器能知道哪些设备和它自己是相连的)
这就意味着 IP 数据在转发过程中, 是一个"探索式""启发式"过程.
这个过程,很难给出“最优解"只能是"较优解”
一个 网络层的数据报,每次到达一个路由器,也会进行上述“问路"过程.每个路由器内部都有一个数据结构“路由表”,根据数据报中的 目的 IP,查路由表,如果查到了 (问的人,恰好知道咋走,,就直接按照路由表给定的方向(从哪个网络接口进行转发),继续转发就行了如果没査到 (问的人,不知道咋走),路由表里有一个“"默认的表项”(下一跳地址),按照默认的表项转发即可~
2.数据链路层
这里也有很多种协议.其中一个比较常见常用的,就是"以太网协议"
通过网线/光纤,来通信,使用的协议,以太网协议,以太网,横跨数据链路层 + 物理层
网线水晶头,都是标准的~~
网线的水晶头,和电话线的水晶头就不一样~~
IP 地址虽然早都不够用了,但是 mac 还是够用的,目前来说,每个设备都是有唯一的 mac 地址~~
IP 地址和 Mac 地址各自的用途是什么?
IP 协议立足于全局,完成整个通信过程的路径规划工作
以太网 则是关注于局部, 相邻两个设备之间的通信过程~~
3.DNS 应用层协议 & 一套系统
域名解析系统
使用 IP 地址, 来描述设备在网络上的位置.
【一个网站做的好不好,和你用的技术牛不牛逼,没啥太大关系
关键在于是否有人乐意用~
IP 地址不适合进行宣传
引入了"域名"(单词(表示实际意义))这样的方式来解决上述问题】
www.baidu.com/www.sogou.com
需要有一套自动的系统,把域名翻译成 |P 地址(域名 和 IP 想象成一组键值对)
基于此大佬搭建了一套 DNS 系统(一组服务器)把上述这样的映射关系,保存到这个服务器中了,如果你想访问某个域名,就先给这个 DNS 服务器发起请求,査询一下当前 域名 对应的 ip,然后再访问目标网站。后续如果有域名的更新,只需要更新这一组指定的服务器即可~~ 不需要修改每个用户电脑的 hosts。
全世界,无时不刻都有很多设备需要进行 DNS 的请求,<-组 DNS 服务器,能抗住这么高的请求量嘛??
【1个服务器硬件资源是有限的(CPU,内存,硬盘, 网络带宽.....)服务器处理每个请求,肯定都是要消耗一定的资源的,单位时间内,请求太多,消耗的总资源超过了机器本身的资源上限~~ 机器就挂了~~~】
这种所谓的"高并发" 问题,核心思路,就是两条
1.开源
搭建DNS系统的大佬们,就开始号召各个网络运营商,你们都可以自己搭建一组"DNS 镜像服务器", 镜像服务器的数据,都从他们这边来同步此时用户就会优先访问离自己最近的镜像服务器2.节流
让请求量变少,让每个上网的设备,搞本地缓存我的电脑 1min 之内要访问 10 次 www.sogou.com只是让第一次请求 DNS 即可.把请求得到的结果保存到本地,后面 9 次请求都使用第一次的结果即可~~(域名的变换,没有那么频繁)