一、学习计划
本周花了5天的时间看完了同事推荐的《HTTP权威指南》,加上之前看的《HTTP图解》,基本上对http了解的够全面了,不过我发现书上的内容比较老旧,后来看了一下《HTTP权威指南》是02年出的英文版,国内12年翻译的。额。。。其实能学到的知识不是很多,书上大部分都是http/1.0的知识 对新的http/2.0 http/3.0根本不涉及。所以就开始学习专栏《透视HTTP协议》。以下总结全部参考《透视HTTP协议》。以后抽空把《TCP/IP详解》三卷、《UNIX网络编程》给补上。
二、学习总结
- 第一章:时势与英雄:HTTP的前世今生
- 讲解了http的发明背景以及HTTP/0.9、HTTP/1.0、HTTP/1.1的特性
- HTTP/2 基于 Google 的 SPDY 协议,注重性能改善,但还未普及;
-
HTTP/3 基于 Google 的 QUIC 协议,是将来的发展方向。
- 第二章:HTTP是什么?HTTP又不是什么?
- HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范
- HTTP 是一个用在计算机世界里的协议,它确立了一种计算机之间交流通信的规范,以及相关的各种控制和错误处理方式。
- HTTP 专门用来在两点之间传输数据,不能用于广播、寻址或路由。
- HTTP 传输的是文字、图片、音频、视频等超文本数据。
- HTTP 是构建互联网的重要基础技术,它没有实体,依赖许多其他的技术来实现,但同时许多技术也都依赖于它。在互联网世界里,HTTP 通常跑在 TCP/IP 协议栈之上,依靠 IP 协议实现寻址和路由、TCP 协议实现可靠数据传输、DNS 协议实现域名查找、SSL/TLS 协议实现安全通信。此外,还有一些协议依赖于 HTTP,例如 WebSocket、HTTPDNS 等。这些协议相互交织,构成了一个协议网,而 HTTP 则处于中心地位。
- 第三章 :HTTP世界全览(上):与HTTP相关的各种概念
- 互联网上绝大部分资源都使用 HTTP 协议传输
- 浏览器是 HTTP 协议里的请求方,即 User Agent
- 服务器是 HTTP 协议里的应答方,常用的有 Apache 和 Nginx
- CDN 位于浏览器和服务器之间,主要起到缓存加速的作用
- 爬虫是另一类 User Agent,是自动访问网络资源的程序
- Linux上的wget、curl等命令行工具基于http,所以也是一种 User Agent
- Web Service是网络服务实体,Web Server是网络服务器
- 第四章 :HTTP世界全览(下):与HTTP相关的各种协议
-
TCP/IP 是网络世界最常用的协议,HTTP 通常运行在 TCP/IP 提供的可靠传输基础上
-
DNS 域名是 IP 地址的等价替代,需要用域名解析实现到 IP 地址的映射
-
URI 是用来标记互联网上资源的一个名字,由“协议名 + 主机名 + 路径”构成,俗称URL
-
HTTPS 相当于“HTTP+SSL/TLS+TCP/IP”,为 HTTP 套了一个安全的外壳
-
代理是 HTTP 传输过程中的“中转站”,可以实现缓存加速、负载均衡等功能。
-
如果使用UNIX/Linux操作系统,HTTP可以运行在本机的UNIX Domain Socket上,它是一种进程间的通信机制,但也是满足HTTP对下层的“可靠通信”要求,所以就成了“HTTP over UNIX Domain Socket”
-
- 第五章:常说的“四层”和“七层”到底是什么?“五层”“六层”哪去了?
-
TCP/IP 分为四层,核心是二层的 IP 和三层的 TCP,HTTP 在第四层
-
OSI 分为七层,基本对应 TCP/IP,TCP 在第四层,HTTP 在第七层
-
OSI 可以映射到 TCP/IP,但这期间一、五、六层消失了
-
日常交流的时候我们通常使用 OSI 模型,用四层、七层等术语
-
HTTP 利用 TCP/IP 协议栈逐层打包再拆包,实现了数据传输,但下面的细节并不可见
-
凡是由操作系统 负责处理的就是四层或四层以下,否则,凡是需要由应用程序(也就是你自己写代码)负责 处理的就是七层。
-
七层:物理层、数据链路层、网络层、运输层、会话层、表示层和应用层
-
四层:数据链路层、网络层、运输层和应用层
-
- 第六章:域名里有哪些门道?
-
域名使用字符串来代替 IP 地址,方便用户记忆,本质上一个名字空间系统;
-
DNS 就像是我们现实世界里的电话本、查号台,统管着互联网世界里的所有网站,是一
个“超级大管家”;
-
DNS 是一个树状的分布式查询系统,但为了提高查询效率,外围有多级的缓存;
-
使用 DNS 可以实现基于域名的负载均衡,既可以在内网,也可以在外网。
-
- 第七章:自己动手,搭建HTTP实验环境