002/Node.js(Mooc)--Http知识

1。什么是Http

http是一个网页互相请求的一个协议。

说明:

【1】。http客户端发起请求,创建端口

【2】。http服务器在端口监听客户端请求

【3】。http服务器向客户端返回状态和内容

如:访问Mooc网址:https://www.imooc.com/video/6712 或刷新页面时,经过很短时间页面即渲染出来。

但在这里面,计算机和浏览器做了许多事情。首先是域名解析。

比如应用Chrome浏览器。则

Step1:Chrome浏览器搜索自身的DNS缓存(看自身的缓存中是否有www.imooc.com这个域名以及IP地址)

输入:chrome://net-internals/#dns 查看曾经浏览网站的缓存记录。

Chrome浏览器隐藏的某些功能:

 1 Chrome 有很多的特性在界面菜单中是没有体现的,你可以通过 chrome:// 命令来访问。本文介绍 12 个非常有用的 chrome:// 命令:
 2 
 3 1. chrome://flags
 4 可用来启用或者关闭某些 chrome 的体验特性
 5 
 6 2. chrome://dns
 7 
 8 该命令将显示浏览器预抓取的主机名列表
 9 
10 3. chrome://downloads
11 该命令同时也可以从菜单中的下载来访问,其快捷键是 Ctrl + J
12 
13 4. chrome://extensions
14 该命令等同于菜单 - 工具 - 扩展
15 
16 5. chrome://bookmarks
17 改名了等同于菜单-书签-书签管理器,快捷键 Ctrl+Shift+O
18 
19 6. chrome://history
20 该命令可从菜单-历史直接访问,快捷键 Ctrl+H
21 
22 7. chrome://memory
23 该命令将重定向到 “chrome://memory-redirect/”. 它将显示浏览器使用内存的情况,以及系统中运行的其他浏览器,包括 firefox。同时还显示浏览器进程的详细信息。
24 
25 8. chrome://net-internals
26 该命令显示网络相关信息,用来捕获浏览器生成的网络事件,可导出数据,可查看DNS主机解析缓存。
27 
28 其中一个很重要的功能就是“测试”,如果你无法访问某个网址,那么可以使用 “chrome://net-internals” -> 点击“Tests” tab -> 输入网址,并点击开始测试,Chrome 将报告具体的问题所在。
29 
30 9. chrome://quota-internals
31 
32 该命令用来显示浏览器所使用磁盘空间配额的情况。
33 
34 10. chrome://sessions
35 该命令用来显示当前运行的浏览器的会话信息数以及详细列表
36 
37 11. chrome://settings
38 
39 该命令可通过菜单-选项直接访问,可用来控制浏览器各项设置值
40 
41 12. chrome://sync-internals
42 
43 用来显示 chrome 的同步状态
44 
45 最后,如果你想查看 chrome 所有的命令,可使用 chrome://about/
46 
47 
48 另外,请注意,上面提及的所有命令也可使用 about:xxx 命令,将会自动重定向到 chrome://,例如:
49 
50 about:dns
51 
52 chrome://dns
53 
54 
55  Google Chrome浏览器的隐藏功:地址栏应用
56 
57 about:version                                        -- 显示当前版本 也可以是chrome-resource://about/
58 
59 about:plugins                                       -- 显示已安装插件
60 
61 about:histograms                                 -- 显示历史记录
62 
63 about:dns                                             -- 显示DNS状态  
64 
65 about:cache                                         -- 重定向到 view-cache: 显示缓存页面  
66 
67 view-cache:stats                                  -- 缓存状态  
68 
69 about:stats                                           -- 显示状态  
70 
71 about:network                                     -- 很酷的网络工具(目前无法访问)  
72 
73 about:internets                                    -- 这应该算是一个彩蛋(目前无法访问)  
74 
75 chrome-resource://new-tab/             -- 新标签页  
76 
77 chrome-resource://favicon/               -- 目前chrome上无法访问  
78 
79 about:memory                                     -- 显示浏览器的内存占用状态(包括其他浏览器)  
80 
81 about:flags                                          -- 显示实验室功能
View Code

Step2:搜索操作系统自身的DNS缓存(浏览器没有找到缓存或缓存已经失效)

Step3:若上述1 和 2 均没有查到,则读取本地的HOST文件。

Step4:若HOST文件也没有找到缓存,则浏览器发起一个DNS的一个系统调用。

【1】宽带运营商提供服务器查看本地缓存

【2】运营商服务器(代替浏览器)发起一个迭代DNS解析的请求

       运营商服务器把结果返回操作系统内核同时缓存起来,

       操作系统内核把结果返回浏览器

       最终浏览器拿到了www.imooc.com对应的IP地址

Step5:浏览器获取域名对应的IP地址后,发起HTTP“三次握手”

Step6:TCP/IP 连接建立起来后,浏览器就可以向服务器发送HTTP请求了。如用HTTP的GET方法请求一个根域里的一个域名,协议可以采用HTTP1.0的一个协议。

Step7:服务器端接受到了这个请求,根据路径参数,经过后端的一些处理之后,把处理后的一个结果的数据返回给浏览器,如果是mooc的页面,就会把完整的html页面代码返回给浏览器。

Step8:浏览器拿到了mooc的完整html代码,在解析和渲染这个页面的时候,里面的js/css/图片静态资源。他们同样也是一个个HTTP请求,均需要经过上面7步。

Step9:浏览器根据拿到的资源对页面进行渲染,最终把一个完整的页面呈现给了用户。 

HTTP请求流程:分为请求和响应。无论是请求还是响应都会发送一个http头和正文信息

http头和正文信息:

【1】HTTP头:发送的是一些附加的信息(内容类型,服务器发响应的日期,HTTP状态码)

【2】正文:就是用户提交的表单数据(或返回的数据)

猜你喜欢

转载自www.cnblogs.com/kaixinyufeng/p/9222753.html