当用户在浏览器网址中输入一个网址到打开这个页面浏览器所发生的行为
第一步:用户输入网址(url)
第二步:DNS进行解析(域名解析)
第三步:建立tcp连接
第五步:客户端发出http请求
第六步:服务器处理用户请求
第七步:服务器响应用户请求
第八步:浏览器展示html页面
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)
- 浏览器向 /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到页面展示的流程
网友评论