1.HTTP全称 超文本传输协议
2.协议的意思:
协:要求至少两个参与者
议:协议是对参与者的一种行为约定和规范
3.HTTP是一个在计算机世界里专门用来在两点之间传输数据的约定和规范。
4.文本”(Text),就表示HTTP传输的不是TCP/UDP这些底层协议里被切分的杂乱无章的二进制包(datagram),而是完整的、有意义的数据,可以被浏览器、服务器这样的上层应用程序处理。
5.超文本就是超越普通文本的文本。包含文字、图片、音频、视频,甚至超链接,可以跳转到另外一个超文本。
6.超文本资源使用HTTP,普通文件使用FTP,电子邮件使用SMTP和POP3等
7.HTTP通常跑在TCP/IP协议栈之上,依靠IP协议实现寻址和路由、TCP协议实现可靠数据传输、DNS协议实现域名查找、SSL/TLS协议实现安全通信。
8
.
9.浏览器部分:
渲染引擎的职责就是渲染,即在浏览器窗口中显示所请求的内容。这是每一个浏览器的核心部分,所以渲染引擎也称为浏览器内核。
10.
CDN,全称是“Content Delivery Network”,翻译过来就是“内容分发网络”。它应用了HTTP协议里的缓存和代理技术,代替源站响应客户端的请求。
可以缓存源站的数据,让浏览器的请求不用“千里迢迢”地到达源站服务器,直接在“半路”就可以获取响应。如果CDN的调度算法很优秀,更可以找到离用户最近的节点,
11.
TCP协议意思是“传输控制协议”,它位于IP协议之上,基于IP协议提供可靠的、字节流形式的通信,是HTTP协议得以实现的基础。
12.
URI(Uniform Resource Identifier),中文名称是统一资源标识符
13.
URL(uniform resource kocator) 统一资源定位符。
14.
15.HTTPS (HTTP over SSL/TLS)为HTTP提供了安全的外壳。
16.
代理(Proxy)是HTTP协议中请求方和应答方中间的一个环节,作为“中转站”,既可以转发客户端的请求,也可以转发服务器的应答。
我们刚才说的CDN就是代理。
17.
所谓的“四层负载均衡”就是指工作在传输层上,基于TCP/IP协议的特性,例如IP地址、端口号等实现对后端服务器的负载均衡。
所谓的“七层负载均衡”就是指工作在应用层上,看到的是HTTP协议,解析HTTP报文里的URI、主机名、资源类型等数据,再用适当的策略转发给后端服务器。
18.发送数据和接受数据的过程
19.
要访问“www.apple.com”,就要进行下面的三次查询:
1. 访问根域名服务器,它会告诉你“com”顶级域名服务器的地址;
2. 访问“com”顶级域名服务器,它再告诉你“apple.com”域名服务器的地址;
3. 最后访问“apple.com”域名服务器,就得到了“www.apple.com”的地址。
20.如何加快DNS解析过程
(1)非权威DNS服务器
许多大公司、网络运行商都会建立自己的DNS服务器,作为用户DNS查询的代理,代替用户访问核心DNS系统
(2)操作系统缓存
(3)Windows里是“C:WINDOWSsystem32driversetchosts”,如果操作系统在缓存里找不到DNS记录,就会找这个文件
21.基于域名的负载均衡
Windows里是“C:WINDOWSsystem32driversetchosts”,如果操作系统在缓存
里找不到DNS记录,就会找这个文件
(1)域名解析得到多个IP地址,可以使用轮询算法进行访问,到达负载均衡的效果。
(2)多个IP地址,可以选择质量更好的服务器主机,达到负载均衡。
22.
进行一次get请求的抓包
再简要叙述一下这次最简单的浏览器HTTP请求过程:
1. 浏览器从地址栏的输入中获得服务器的IP地址和端口号(DNS解析);
2. 浏览器用TCP的三次握手与服务器建立连接;
3. 浏览器向服务器发送拼好的报文;
4. 服务器收到报文返回TCP-ACK后处理请求,同样拼好报文再发给浏览器;
5. 客户端收到返回TCP-ACK,浏览器解析报文,渲染输出页面。
23.HTTP报文格式
请求报文的“请求头”(起始行和头部的合称)
请求行:
1.
请求方法:是一个动词,如GET/POST,表示对资源的操作;
2.
请求目标:通常是一个URI,标记了请求方法要操作的资源;
3.
版本号:表示报文使用的HTTP协议版本
(CRLF是回车换行)
响应报文的“响应头”(起始行和头部的合称)
状态行:
1.
版本号:表示报文使用的HTTP协议版本;
2.
状态码:一个三位数,用代码的形式表示处理的结果,比如200是成功,500是服务器错误;
3.
原因:作为数字状态码补充,是更详细的解释文字,帮助人理解原因
字段:
1.
通用字段:在请求头和响应头里都可以出现; Date字段 表示HTTP报文创建的时间。
2.:
请求字段:仅能出现在请求头里,进一步说明请求信息或者额外的附加条件;
HTTP/1.1的请求报文必须有
Host字段:用来表示相对于IP地址上的某一主机。
User-Agent是请求字段,只出现在请求头里。它使用一个字符串来描述发起HTTP请求的客户端,服务器可以依据它来返回最合适此浏览器显示的页面。
(还有下一文写的 accept系列 accept媒体类型 accept-language自然语言 accept-charset字符集 accept-encoding编码)
3.
响应字段:仅能出现在响应头里,补充说明响应报文的信息;Server字段 表示当前服务器的软件和版本号。
(location将请求的URI重定向到别的地方)
4.
实体字段:它实际上属于通用字段,但专门描述body的额外信息
(
Content-Encoding:实体主体适用的编码方法
Content-Language:实体主体的自然语言
Content-Length:实体主体的大小(单位:字节)
Content-Location:替代对应资源的URI
Content-MD5:实体主体的报文摘要
Content-Range:实体主体的位置范围
Content-Type:实体主体的媒体类型
Expires:实体主体过期的日期时间
Last-Modified:资源的最后修改日期时间
)
24.HTTP/1.1的请求方法
Windows里是“C:WINDOWSsystem32driversetchosts”,如果操作系统在缓存
里找不到DNS记录,就会找这个文件
User-Agent
是请求字段,只出现在请求头里。它使用一个字符串来描述发起HTTP请求的客户端,服务器可
以依据它来返回最合适此浏览器显示的页面。