从URL输入到页面展现的简单流程
URL是什么
- URL:Uniform Resource Location 统一资源定位符,用于定位互联网上的资源
采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。
URL的格式URL的格式由下列三部分组成:
- 第一部分是协议(或称为服务方式);
- 第二部分是存有该资源的主机IP地址(有时也包括端口号);
- 第三部分是主机资源的具体地址。,如目录和文件名等。
- 第一部分和第二部分之间用“://”符号隔开,第二部分和第三部分用“/”符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。
URL对应http、file、ftp、https协议
- http:超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。对应网络上的某个资源。
- file:本地文件传输协议,File协议主要用于访问本地计算机中的文件,就如同在Windows资源管理器中打开文件一样。对应本地的某个资源
- ftp: 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
- https:(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。简单来说,就是加密后的http。
而不加http和https的域名则是因为其域名和当前页面的协议保持一致
域名解析
对于http://jirengu.com 的URL,浏览器实际上不知道jirengu.com到底是什么东西,需要查找jirengu.com网站所在服务器的IP地址,才能找到目标。域名比数字的IP好记,所以HTML上显示的是域名
- IP:网络之间互连的协议(IP)是Internet Protocol的外语缩写,中文缩写为“网协”。每个处于互联网中的设备都有IP 地址,形如 192.168.0.1
- 域名:对于http://jirengu.com:8080/blog, jirengu.com就是域名;就是URL中的第二部分去掉端口号后剩下的部分**
局域网 IP 和公网 IP 是有差别的,如果你在某个局域网中,那你上网时的使用的IP就是局域网的IP,而不是你设备上的IP,而公网IP是需要申请的
域名解析的流程
- 1.浏览器缓存 – 浏览器会缓存DNS记录一段时间
- 2.系统缓存 - 从 Hosts 文件查找是否有该域名和对应 IP。
- 3.路由器缓存 – 一般路由器也会缓存域名信息。
- 4.SP DNS 缓存 – 比如到电信的 DNS 上查找缓存。
你所打开的域名按以上顺序进行缓存,如果都没有找到,则向根域名服务器查找域名对应 IP,根域名服务器把请求转发到下一级,直到找到 IP
电脑如果上不了网,修改dns为8.8.8.8(google提供的dns服务器) 或者114.114.114.114(国内某个dns服务器),你所打开的域名就会直接从上面的服务器中寻找IP
dns 劫持:当你查找的域名时,所在的根服务器中的域名遭恶意篡改后给了个假的IP地址,导致你访问的网站不对,危害大,一般攻击的是ISP DNS
服务器处理阶段
服务器是一台安装系统的机器,常见的系统如Linux、windows server 2012
系统里安装的处理请求的应用叫 Web server
Web服务器
常见的 web服务器有 Apache、Nginx、IIS、Lighttpd
web服务器接收用户的Request 交给网站代码,或者接受请求反向代理到其他 web服务器
示例:
用户发送Request交给Web服务器(ngnix),ngnix接收后,查找到IP地址202.112.230.14,当然,同一个IP下对应有不同的Request请求,通过ngnix寻找到该IP对应的服务器下的文件夹,再发送给用户
网站处理流程
MVC 模型(model)-视图(view)-控制器(controller)
rails_mvc- 浏览器向 /users 发送请求;
- Rails 的路由把 /users 交给 Users 控制器的 index 动作处理;
- index 动作要求 User 模型读取所有用户(User.all);
- User 模型从数据库中读取所有用户;
- User 模型把所有用户组成的列表返回给控制器;
- 控制器把所有用户赋值给 @users 变量,然后传入 index 视图;
- 视图使用嵌入式 Ruby 把页面渲染成 HTML;
- 控制器把 HTML 送回浏览器
我们所说的前端就是视图的部分
浏览器处理阶段
- HTML字符串被浏览器接受后被一句句读取解析
- 解析到link 标签后重新发送请求获取css
- 解析到 script标签后发送请求获取 js,并执行代码
- 解析到img 标签后发送请求获取图片资源
绘制网页阶段
浏览器根据 HTML 和 CSS 计算得到渲染树,绘制到屏幕上
由HTML和CSS来控制网页的整个渲染效果,通过js来执行完成网页的视图效果
通过上述过程简单的描述了从URL到页面展示的流程