大家都知道,当我们在浏览器地址栏中输入baidu.com访问后会自动跳转到百度首页展现页面,那么,在整个过程中都发生了什么呢?
1、在浏览器输入URL
1.1 URL是什么
URL: 统一资源定位符,用于定位互联网上的资源
把URL可以分割成几个部分:协议、网络地址、资源路径。
其中网络地址指示该连接网络上哪一台计算机,可以是域名或者IP地址,可以包括端口号;协议是从该计算机获取资源的方式,常见的是HTTP、FTP,不同协议有不同的通讯内容格式;资源路径指示从服务器上获取哪一项资源。
例如:https://baike.baidu.com/item/url
协议部分:http 网络地址:baike.baidu.com资源路径:/item/url
2. 域名解析
对于http://baidu.com的URL,浏览器实际上不知道 baidu.com到底是什么东西,需要查找baidu.com网站所在服务器的IP地址,才能找到目标
那么问题来了,为什么我们要使用域名而不是直接访问IP地址呢?
答案很简单:不好记- - 。
2.1 域名是什么
对于https://www.baidu.com/ , baidu.com就是域名
2.2 IP地址是什么
IP地址是指互联网协议地址,每个处于互联网中的设备都有IP 地址,形如 192.168.0.1
局域网 IP 和公网 IP 是有差别的。
公有地址(Public address)由Inter NIC(Internet Network Information Center 因特网信息中心)负责,这些IP地址分配给注册并向Inter NIC提出申请的组织机构,通过它直接访问因特网;私有地址(Private address)属于非注册地址,专门为组织机构内部使用。
127.0.0.1代表本机的 IP。
2.3 域名解析的流程
Internet上的计算机是通过IP地址来定位的,给出一个IP地址,就可以找到Internet上的某台主机。而因为IP地址难于记忆,又发明了域名来代替IP地址。但通过域名并不能直接找到要访问的主机,中间要加一个从域名查找IP地址的过程,这个过程就是域名解析。
域名解析的大概流程如下:
浏览器缓存 – 浏览器会缓存DNS记录一段时间。
系统缓存 - 从 Hosts 文件查找是否有该域名和对应 IP。
路由器缓存 – 一般路由器也会缓存域名信息。
ISP DNS 缓存 – 比如到电信的 DNS 上查找缓存。
如果都没有找到,则向根域名服务器查找域名对应 IP,根域名服务器把请求转发到下一级,直到找到域名对应 IP地址。
3. 服务器处理
3.1 服务器是什么
服务器是一台安装系统的机器,常见的系统如Linux、windows server 2012
系统里安装的处理请求的应用叫 Web server
3.2 WEB服务器
常见的 web服务器有 Apache、Nginx、IIS、Lighttpd
web服务器接收用户的Request 交给网站代码,或者接受请求反向代理到其他 web服务器
4. 网站处理流程
MVC 模型(model)-视图(view)-控制器(controller)
5. 浏览器处理并绘制网页
HTML字符串被浏览器接受后被一句句读取解析
- 解析到link 标签后重新发送请求获取css
- 解析到 script标签后发送请求获取 js,并执行代码
- 解析到img 标签后发送请求获取图片资源
浏览器根据 HTML 和 CSS 计算得到渲染树,绘制到屏幕上,js 会被执行。