URL是什么
/https?:\/\/.+/
/file:\/\/.+/ //打开本地文件
统一资源定位符,定位网络资源,文件,数据,图片等。协议是前面的那几样,除了http等,还有一个ftp。
https是加密的,相比http,在本机访问服务器的中间过程,加密了,中间的路由节点不能被读取出来的,http就是明文传输,用户名密码数据等都可以被看见。
没有前面的协议时,就是当前URL协议跟当前页面的一样的,嗯嗯这里可以有跨域的安全性的联想的。
下面的就是浏览器通过URL去要数据了,向哪里要呢?
域名解析
域名就是双斜杠后面的端口号前面的那部分。
浏览器不知道URL是什么鬼,浏览器只会访问URL所对应的服务器IP。
为啥不直接输入IP?
我们搜索东西或者问题是不是直接把关键词输进去?更语义化了,而且符合我们大众的生活吧,而不是把各种网站的IP都记下。
我最近也买了个域名,买了虚拟主机,自己建了个博客,对域名算是了解的更深了点。当初我在域名商那里解析域名时,就是先输入我的域名,又输入我的IP,然后点的运行,感觉就像自己的域名就是IP的身份证一样,有了备注了,有了案底了,浏览器一看URL,不知道是什么地址,但是可以查它的案底记录,嗷嗷,原来它本名就是那个IP啊,浏览器对IP,那是真认识的,把IP传给路由器,路由器再一步步地走,,,这中间我没深挖,找到百度服务器,这时候百度才有响应。当然,IP主机那里也必须要绑定域名。
IP,公网IP都是唯一的,局域网的IP可以一样的,,运营商给的虚拟的IP,但是互相不通的。它就是相当于某台服务器的身份地址。
本机IP,127.0.0.1。
localhost,代表域名,跟本机相对应。
流程:
浏览器缓存,会缓存域名解析的记录DNS。
如果浏览器没有访问过,再找系统缓存,从Hosts文件查找是否有该域名和对应IP。这个文件在哪呢?百度一下,加上你的系统名,就搜到了,然后可以用编辑器开打,也可以修改,对应文件的显示,就是key和value的形式,一个IP对应一个域名。第一个就是:
127.0.0.1 localhost
,所以访问这两个都是本机。
你也可以修改里面的值,修改了,访问对应修改的域名,还是对应的IP。
文件里的#是为了注释的,加了就是注释了。
这也没有的话,就传到路由了,路由也有缓存记录,记录了其他用户的访问记录,如果是这个域名,那就直接找到对应的IP了。
如果还没有,就传到用的宽带的服务商那里的ISP DNS缓存里找了。
如果都没找到,就会向根域名服务器发请求,根域名服务器再向下一级发请求,直到找到。比如,baidu.music,就先去baidu ,再到baidu 下的music。
电脑劫持,路由出问题了,上不了网了?
修改DNS为 8.8.8.8(谷歌)或者114.114.114.114(电信)。
不走路由,直接优先向8.8.8.8服务器要真实IP,都是真的,不走路由。
假设根域名服务器被劫持了,访问这个服务器,回的是一个假网站就是如此。
服务器处理
安装了web server服务器处理程序。
接受用户请求,交给网站代码,或接受请求反向代理到其他web服务器。
买了服务器,商家会给你一个IP号,在服务器的主机管理界面,有一个操作是绑定域名,上面说到解析域名时候说到了,这里绑定域名的意义就是让服务器能够看懂识别浏览器发请求的那个域名想要访问的是哪个IP,哪个端口。
中间服务器会实时监听各种请求的,做配置的时候,会做各种判断,对应域名不同,对应不同端口,发送请求到各个端口,各个端口也有自己的服务器,再做处理。中间服务器相当于反向代理了。这时候,访问不同域名,看到的就是不同的网站。
请求到了网站之后,呢?
网站处理流程
MVC---view----controller
请求到了网站,交给网站代码,请求一般就是文件路径一样的概念,前面是锁定了IP,锁定了端口,锁定了网站,后面的pass也就是路由就是我想要的文件,数据,命令,,,
请求被交给网站路由,路由会找到控制器,控制器就是中间処理机构,跟模型去交互,模型是专门用于找数据的,向数据库要数据。同时控制器跟视图去交互,视图是html的模板,有了数据,模板,把数据塞到模板里,生成新的html文件,再发给浏览器。
浏览器处理
收到的是HTML字符串,浏览器会去解析。一句一句读取。
读到link标签,就发请求要数据获取css,读到script标签,发请求获取JS,并执行,然后img等同理。请求就是又干了上面的流程了。
这里的知识点又扩展到浏览器的渲染了,还可以想到JS的执行,还有JS的位置放的问题,白屏等等知识点了。
绘制网页
先去解析html和css,形成DOM树,形成渲染树,绘制到页面,然后JS执行。
具体后面的逻辑又可以细化了。