文章目录
- 3、工作原理
DNS域名解析器
主机到本地服务器 —> 采用递归
www.baidu.com域名 --> 本地的hosts文件 --> DNS域名解析器 —> 本地DNS服务器 —> 根域名服务器
本地服务器到根域名 —> 迭代
根域名服务器会告诉本地域名服务器去查询哪个顶级域名服务器。
本地服务器–> 顶级 顶级说去哪个权限域名服务器
本地服务器–> 权限 权限告诉本地域名服务器相应的www.baidu.com所对应的IP地址。
本地域名服务器告诉主机 www.baidu.com所对应的IP地址。
APR地址转换协议
seq序号
ack 确认号
syn 链接
fin 断开链接
一次完整的HTTP请求过程:
1.首先进行域名解析,域名解析具体过程讲一下: 应用层
- 浏览器搜索自己的DNS缓存,缓存中维护一张域名与IP地址的对应表;
- 若没有,则搜索操作系统的DNS缓存;
- 若没有,则操作系统将域名发送至本地域名服务器(递归查询方式),本地域名服务器查询自己的DNS缓存,查找成功则返回结果,否则,通过以下方式迭代查找:
本地域名服务器向根域名服务器发起请求,根域名服务器返回com域的顶级域名服务器的地址;
本地域名服务器向com域的顶级域名服务器发起请求,返回权限域名服务器地址;
本地域名服务器向权限域名服务器发起请求,得到IP地址;
- 本地域名服务器将得到的IP地址返回给操作系统,同时自己将IP地址缓存起来;
- 操作系统将IP地址返回给浏览器,同时自己也将IP地址缓存起来;
- 至此,浏览器已经得到了域名对应的IP地址。
2.浏览器发起HTTP请求;应用层
3.接下来到了传输层,选择传输协议,TCP或者UDP,TCP是可靠的传输控制协议,对HTTP请求进行封装,加入了端口号等信息;
4.然后到了网络层,通过IP协议将IP地址封装为IP数据报;然后此时会用到ARP协议,主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址,找到目的MAC地址;
5.接下来到了数据链路层, 交换机 把网络层交下来的IP数据报添加首部和尾部,封装为MAC帧,现在根据目的mac开始建立TCP连接,三次握手,接收端在收到物理层上交的比特流后,根据首尾的标记,识别帧的开始和结束,将中间的数据部分上交给网络层,然后层层向上传递到应用层;
6.服务器响应请求并请求客户端要的资源,传回给客户端;
7.断开TCP连接,浏览器对页面进行渲染呈现给客户端。
当前读,快照读和MVCC的关系
MVCC 多版本并发控制是 「维持一个数据的多个版本,使得读写操作没有冲突」 的概念,只是一个抽象概念,并非实现
因为 MVCC 只是一个抽象概念,要实现这么一个概念,MySQL 就需要提供具体的功能去实现它,「快照读就是 MySQL 实现 MVCC 理想模型的其中一个非阻塞读功能」。而相对而言,当前读就是悲观锁的具体功能实现
要说的再细致一些,快照读本身也是一个抽象概念,再深入研究。MVCC 模型在 MySQL 中的具体实现则是由 3 个隐式字段,undo 日志 ,Read View 等去完成的,具体可以看下面的 MVCC 实现原理
MVCC 能解决什么问题,好处是?
数据库并发场景有三种,分别为:
读-读:不存在任何问题,也不需要并发控制
读-写:有线程安全问题,可能会造成事务隔离性问题,可能遇到脏读,幻读,不可重复读
写-写:有线程安全问题,可能会存在更新丢失问题,比如第一类更新丢失,第二类更新丢失
MVCC 带来的好处是?
多版本并发控制(MVCC)是一种用来解决读-写冲突的无锁并发控制,也就是为事务分配单向增长的时间戳,为每个修改保存一个版本,版本与事务时间戳关联,读操作只读该事务开始前的数据库的快照。 所以 MVCC 可以为数据库解决以下问题
在并发读写数据库时,可以做到在读操作时不用阻塞写操作,写操作也不用阻塞读操作,提高了数据库并发读写的性能
同时还可以解决脏读,幻读,不可重复读等事务隔离问题,但不能解决更新丢失问题
一、二层交换机
1、基本作用
交换机工作在二层,可以用来隔离冲突域,在OSI参考模型中,二层(数据链路层)的作用是寻址,这边寻址指的是MAC地址,而交换机就是对MAC地址进行转发,在每个交换机中,都有一张MAC地址表,这个表是交换机自动学习的,所以,总得来说交换机的作用是寻址和转发。
2、基本功能
(1) 无限的传输距离
(2)提高端口密度—可以增加更多的接口
(3) 彻底解决了冲突—所有的接口可以同时收发数据
(4) 二层单播—物理寻址,在一个交换网络内,实现一对一通讯,保障了数据的安全,减少了垃圾数据量,降低的转发延时;
3、工作原理
转发机制:
流量进入交换机后,先识别数据帧中的源MAC地址,然后将该MAC地址与该流量的进入接口进行绑定、记录,生成MAC地址表——再转换为CAM表
然后查看数据帧中的目标MAC地址,在CAM表中寻找对应的记录,若存在记录,按记录接口单播转发;
若没有记录将洪泛该流量; 洪泛——除流量的入口外其他所有出口复制;
默认CAM在一个mac最后出现之后300s将被删除;
注:MAC地址表和CAM的区别------CAM是将MAC表中的MAC地址+接口编号+vlanid转换为hash值,再转换为二进制;意义在于识别更快;
二、三层交换机
三层交换机与二层交换机相比是可以处理三层数据的,可以识别三层数据包.
“一次路由,多次交换”基本概括了三层交换机的原理,通过这句话可以把三层交换机剖析清楚。
1、工作原理
当一个三层数据包进入三层交换机以后,会查看路由表,即“一次路由”,查找出接口和下一跳,之后会找到下一跳的MAC地址,进行二层封装的变换,和三层设备即路由器的本质是一样的(三层的本质:是把一个子网的MAC迁移到另外一个子网,不同子网的MAC不可能会出现在同一个包的源目MAC上,把原有的二层封装去掉,封装上新的MAC地址,源是出接口的MAC地址,目的是下一跳的MAC地址,此时新的二层封装形成,数据包转发出设备),完成一次“路由器”的工作
如果找不到下一跳的MAC地址,进行ARP洪范,再找不到就丢弃。在做二层封装的时候,因为有目标MAC的存在,所以也可以说是三层的目标IP最后会映射到目标MAC上,此时会形成一个目标IP和封装目标MAC的映射,而三层交换机具有二层交换机的功能,则此时就形成了三层到二层的一个映射,转发一定是要找到接口,通过IP找到MAC,通过MAC找到对应出接口,这就相当于形成了一个IP的MAC表,那么三层IP进来以后就直接会找到对应的出接口,数据包就不需要再查看数据表,只需要变换一次二层封装就可以了。
2、工作过程
三层路由器的工作顺序就是:数据包进来—查看路由表—变换二层封装—数据包出去,三层交换机帮助路由器节约了一步,就是查看路由表的步骤,此步骤的省略会节约大量的时间,简化工作过程,即“多次交换”,一个IP对应一个接口,就和二层交换机的MAC表有一些类似了,是一种交换能力,省略了路由器递归查找的环节,这就是三层交换机的工作过程。
总的来说,三层交换机最突出的地方就是
“一次路由,多次交换”
第一次路由本质上找到了IP和接口的对应关系
直接利用IP和接口的对应关系进行数据交换,省掉了查找路由表的环节。
注:本质上三层交换机和路由器还是有一些区别的,三层交换机因为帮助路由器省掉了查找路由表的环节,所以工作速度会比路由表快