DNS
1.DNS的作用
DNS 的主要作用就是将我们输入的域名解析成对应的 IP 地址,让浏览器能够找到目标服务器并建立连接,获取网页内容等东西
2.DNS的解析过程
dns解析首先要查询缓存表,缓存表有就不用去解析,缓存表没有就要去解析,缓存表没有就去找host文件(本地),host文件能找到就解析,找不到就走路由器(内置了13台根域服务器),13台根域服务器会去判断你的后缀是com,cn还是org,他会把解析的地址告诉你,如果你是com结尾就把你的解析交给com.顶级域的dns服务器,com看到你是baidu.com又会把你的域名交给百度去解析,然后百度的dns服务器会把它的ip解析出来,然后百度就会把ip回给路由器,然后路由器再下发到你的电脑,然后你的电脑访问后就会将它的缓存记录在本地 。由于你本地已经有百度的服务器IP了,当你要去访问百度时,你还要建立3次握手,3次握手建立成功以后才能去请求百度(发httprequest的请求),然后百度把你的请求下发回来,你才能访问到百度。
ps:如果要制作虚拟主机,就直接改一下host文件里面就行(相当于你网址出去访问的时候不让你出去直接先查询本地缓存表)
3.解析dns的两条命令
nslookup + 网址 (在window和linux都可以解析)
dig + 网址 (只能在linux下解析)
HTTPS
1.https与http的区别
http与https的区别就是多了个s,也就是在http与tcp之间加入了TLS或者说是SSL协议来解决http的3个风险(完整性,可用性,保密性)
2.HTTPS的传输过程:
客户端在浏览器要访问某个https的网址时,就会向服务器发起连接请求(也就是TCP的3次握手)
3次握手通过之后,接下来就是ssl/tls握手也就是下面的部分
客户端又会向服务端发送client hello的信息(协议号,随机数,加密套件),客户端收到服务器会回一个ack,并且还会发3个报文,第一个server hello报文(协议号,另一个随机数,加密套件)第2个包就是数字证书(非对称的公钥,签名)用来验证身份的,如图所示
第3个报文就是server hello done 用来告诉客户端结束了,然后客户端又会回复ack包来确认,然后由于客户端收到了服务端发的证书,客户端就会生成一个私钥M,并且用刚刚服务端证书里面的公钥D来进行加密(这个公钥D只有服务端自身的那个私钥C能解)用 client key exchange来发送,然后由于服务端已经收到密钥M,然后客户端就会向服务端发送两个报文一个是 client cipher spec(对称密钥) 第2个就是finished用来问服务端能否解密这个信息(包含了之前的握手信息) 服务端收到后会回复ACK确认报文,然后会和客户端一样用M加密也就是client cipher spec(对称密钥)报文,服务端也会回复finished报文用来确认密钥M的有效性,然后客户端会回复ACK,最后的最后,双方就开始通过密钥M来传输HTTP的数据,数据传输结束,双发方会先关闭SSL/TLS连接,再进行4次挥手断开底层的连接
3.RSA加密算法
那么https的原理又是RSA加密算法,也就是通过非对称加密来传输对称加密的钥匙,最后通过对称加密来传输信息,然而最终发现需要第3个人(CA证书颁发机构)才能做到
这里引用老师的图,这样就能保证小宇给班长,班长用私钥J加密D公钥,然后再回给小宇,这样坏人就只能通过K查看班长加密的公钥D,而无法换走或者修改,因为修改后没有班长的私钥J,坏人无法给其上锁,然后小宇就将被班长私钥加密的公钥D传给闪客,如果黑客用公钥k解开也无法锁上只能看不能改,闪客先用公钥K解开,得到钥匙D,然后把M(对称加密)放进去用D加密给小宇,由于D加密坏人只能用C解密,发现不行,然后小宇和闪客都可以用M来传输数据
私钥加密公钥解密称为签名
公钥加密私钥解密称为加密