从URL输入到页面实现
我们需要知道我们从浏览器打开一个页面到底发生了什么
第一步:在浏览器输入URL
URL是什么
URL的全称是统一资源定位符(Uniform Resource Location)用于定位互联网上的资源
URL对应了域名、端口号、协议、以及一些相关的信息
常见的协议
- http 用于找到网络上的资源
- https 加密后的http
- ftp 文件传输
- file 用于定位本地电脑上的文件
第二步:浏览器域名解析
当我们输入https://www.bilibili.com/的URL,浏览器并不知道https://www.bilibili.com/是什么,这个时候要解析bilibili.com这个域名对应服务器的ip地址
为什么需要域名不直接用ip
域名最终都是需要解析成ip地址,那为什么不直接使用ip地址呢!
使用域名是为了方便记忆,例如百度的ip地址为119.75.217.109很难记忆但是baidu.com却很好记忆。域名具有语义化的作用
ip地址是什么
- 每个处于互联网上的设备都有ip地址
- 局域网ip和公网ip是有差别的
- 127.0.0.1代表本机ip
域名解析过程
1.浏览器缓存-浏览器会缓存dns记录一段时间
假如以前在浏览器中打开过一个页面 浏览器会缓存这个页面的ip地址一段时间
2.系统缓存-从hosts文件查找是否有该域名对应的ip地址
当我们第一次打开一个页面,浏览器没有缓存,这个时候会从系统的host文件中寻找域名对应的ip地址,如果host文件里存有域名的ip地址浏览器就会直接访问
3.路由器缓存-路由器也会缓存域名信息
只要是路由器的用户打开过页面都会存在缓存
4.ISP DNS缓存-比如电信的dns上查找缓存
这是通信服务商的缓存
5.如果以上过程都没找到,则向根域名服务器查找对应ip
根域名服务器把请求转发到下一级,直到找到ip
第三步:服务器处理
服务器就是一台安装了服务器系统的机器,常见的服务器系统有linux和Windows Server20102。linux是没有图型界面的,windows server是有图形界面的。系统了安装了处理请求的应用为 web server。
web服务器
常见的web服务器有Apache、nginx、lls、lighttpd
web服务器的作用就是接收用户的请求(Request)交给网站代码
上图有三个网站他们的域名都不一样,但是ip地址是一样的,nginx就接收这些请求,根据请求分配不同文件架下页面发送给用户