@panhonhang
2020-02-14T15:58:59.000000Z
字数 2012
阅读 385
HTTP学习 1
面试
发展过程
- HTTP/0.9
- 只允许客户端发送GET这一种请求
- 不支持请求头。
- 只支持纯文本。
- HTTP/1.0
- 增加了 HEAD、POST 等新方法
- 响应对象不只限于文本
- 引入了 HTTP Header(头部)的概念
- 引入了协议版本号概念
- 支持长连接(但默认还是使用短连接),缓存机制,以及身份认证
- HTTP/1.1
- 默认为长连接
- 增加了 PUT、DELETE 等新的方法
- 增加了缓存管理和控制,cache的新特性,引入了实体标签,一般被称为e-tags
- 允许响应数据分块(chunked),利于传输大文件
- 强制要求 Host 头,让互联网主机托管成为可能
- 新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
- HTTP/2.0
- 二进制协议,不再是纯文本;
- 多路复用,可发起多个请求,废弃了 1.1 里的管道;
- 使用专用算法压缩头部,减少数据传输量;
- 允许服务器主动向客户端推送数据;
- 增强了安全性,“事实上”要求加密通信。
- 请求优先级,浏览器可以在发现资源时立即分派请求,指定每个流的优先级
- HTTP/3
- 还没有正式发布
HTTP相关
- HTTP是什么
- 超文本传输协议,HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范”。
- HTTP 通常跑在 TCP/IP 协议栈之上
- 依靠IP协议实现寻址和路由
- 属于网际层,实现寻址和路由
- 使用IP地址的概念来定位互联网上的每一台计算机
- IPv4 使用4个点分隔,如“192.168.0.1”,总共有 2^32个【已经使用完了】
- IPv6 使用8个点分隔,总共有 2^128个
- 依靠TCP协议实现可靠数据传输
- “传输控制协议”, 基于 IP 协议提供可靠的、字节流形式的通信,是 HTTP 协议得以实现的基础。
- 依靠DNS 协议实现域名查找
- 域名系统,将域名(主机名)映射”到它的真实 IP,这就是所谓的“域名解析”。
- 依靠SSL/TLS 协议实现安全通信。
- 综合了对称加密、非对称加密、摘要算法、数字
签名、数字证书等技术,能够在不安全的环境中为通信的双方创建出一个秘密的、安全的传输通道。
- 依靠HTTP的协议:例如 WebSocket、HTTPDNS
- 相关概念
- 互联网上绝大部分资源都使用 HTTP 协议传输;
- 浏览器是 HTTP 协议里的请求方,即 User Agent;
- 服务器是 HTTP 协议里的应答方,常用的有 Apache 和 Nginx;
- CDN 位于浏览器和服务器之间,主要起到缓存加速的作用;
- 爬虫是另一类 User Agent,是自动访问网络资源的程序。
- URI(统一资源标识符)URL(统一资源定位符)
- 代理分类
- 代理可以实现
- 负载均衡:把访问请求均匀分散到多台机器,实现访问集群化;
- 内容缓存:暂存上下行的数据,减轻后端的压力;
- 安全防护:隐匿 IP, 使用 WAF 等工具抵御网络攻击,保护被代理的机器;
- 数据处理:提供压缩、加密等额外的功能。
网络分层【从下往上看】
域名相关
- 组成
- 域名解析
- 根域名服务器:管理顶级域名服务器,返回“com”“net”“cn”等顶级域名服务器的 IP 地址;
- 顶级域名服务器:管理各自域名下的权威域名服务器,比如
com 顶级域名服务器可以返回 apple.com 域名服务器的 IP 地址;
- 权威域名服务器:管理自己域名下主机的 IP 地址,比如
apple.com 权威域名服务器可以返回 www.apple.com 的 IP 地址。
- 缓存
- “非权威域名服务器”【自己建立的 DNS 服务器】
- 操作系统缓存
- "主机映射"文件,host文件