初识Http
-
HTTP是一个用在计算机世界里的协议,它确立了一种计算机之间交流通信的规范,以及相关的各种控制 和错误处理方式。
-
HTTP专门用来在两点之间传输数据,不能用于广播、寻址或路由。
-
HTTP传输的是文字、图片、音频、视频等超文本数据。
-
HTTP是构建互联网的重要基础技术,它没有实体,依赖许多其他的技术来实现,但同时许多技术也都依赖于它
-
http1.1新特性,HTTP/1.1是目前互联网上使用最广泛的协议,功能也非常完善
-
增加了PUT、DELETE等新的方法;
-
增加了缓存管理和控制;
-
明确了连接管理,允许持久连接;
-
允许响应数据分块(chunked),利于传输大文件;
-
强制要求Host头,让互联网主机托管成为可能。
-
http2高度兼容http1.1,基于Google的SPDY协议,注重性能改善,但还未普及;
-
二进制协议,不再是纯文本;
-
可发起多个请求,废弃了1.1里的管道;
-
使用专用算法压缩头部,减少数据传输量;
-
允许服务器主动向客户端推送数据;
-
增强了安全性,“事实上”要求加密通信。
-
TCP/IP是网络世界最常用的协议,HTTP通常运行在TCP/IP提供的可靠传输基础上
-
. DNS域名是IP地址的等价替代,需要用域名解析实现到IP地址的映射
-
域名使用字符串来代替IP地址,方便用户记忆,本质上一个名字空间系统;
-
DNS就像是我们现实世界里的电话本、查号台,统管着互联网世界里的所有网站,是一个“超级大管 家”
-
DNS是一个树状的分布式查询系统,但为了提高查询效率,外围有多级的缓存
-
使用DNS可以实现基于域名的负载均衡,既可以在内网,也可以在外网。
-
URI是用来标记互联网上资源的一个名字,由“协议名+主机名+路径”构成,俗称URL;
-
HTTPS相当于“HTTP+SSL/TLS+TCP/IP”,为HTTP套了一个安全的外壳;
-
代理是HTTP传输过程中的“中转站”,可以实现缓存加速、负载均衡等功能。
-
浏览器从地址栏的输入网址发生:
-
浏览器从地址栏的输入中获得服务器的IP地址和端口号;
-
浏览器用TCP的三次握手与服务器建立连接;
-
浏览器向服务器发送拼好的报文;
-
服务器收到报文后处理请求,同样拼好报文再发给浏览器;
-
浏览器解析报文,渲染输出页面
-
HTTP链接:
-
HTTP协议基于底层的TCP/IP协议,所以必须要用IP地址建立连接;
-
如果不知道IP地址,就要用DNS协议去解析得到IP地址,否则就会连接失败;
-
建立TCP连接后会顺序收发数据,请求方和应答方都必须依据HTTP规范构建和解析报文;
-
为了减少响应时间,整个过程中的每一个环节都会有缓存,能够实现“短路”操作;
-
虽然现实中的HTTP传输过程非常复杂,但理论上仍然可以简化成实验里的“两点”模型
-
http报文结构
-
起始行(start line):描述请求或响应的基本信息;
-
头部字段集合(header):使用key-value形式更详细地说明报文;
-
消息正文(entity):实际传输的数据,它不一定是纯文本,可以是图片、视频等二进制数据。
-
HTTP报文结构就像是“大头儿子”,由“起始行+头部+空行+实体”组成,简单地说就 是“header+body”;
-
HTTP报文可以没有body,但必须要有header,而且header后也必须要有空行,形象地说就是“大 头”必须要带着“脖子”;
-
请求头由“请求行+头部字段”构成,响应头由“状态行+头部字段”构成;
-
请求行有三部分:请求方法,请求目标和版本号;
-
状态行也有三部分:版本号,状态码和原因字符串;
-
头部字段是key-value的形式,用“:”分隔,不区分大小写,顺序任意,除了规定的标准头,也可以任意 添加自定义字段,实现功能扩展;
-
HTTP/1.1里唯一要求必须提供的头字段是Host,它必须出现在请求头里,标记虚拟主机名。
-
http特点:
-
HTTP是灵活可扩展的,可以任意添加头字段实现任意功能;
-
HTTP是可靠传输协议,基于TCP/IP协议“尽量”保证数据的送达;
-
HTTP是应用层协议,比FTP、SSH等更通用功能更多,能够传输任意数据;
-
HTTP使用了请求-应答模式,客户端主动发起请求,服务器被动回复请求;
-
HTTP本质上是无状态的,每个请求都是互相独立、毫无关联的,协议不要求客户端或服务器记录请求相 关的信息。可以轻松实现集群化,扩展性能,但有时也需要用Cookie技术来实现“有状态”;
-
HTTP最大的优点是简单、灵活和易于扩展;
-
HTTP拥有成熟的软硬件环境,应用的非常广泛,是互联网的基础设施
-
HTTP是明文传输,数据完全肉眼可见,能够方便地研究分析,但也容易被窃听;
-
HTTP是不安全的,无法验证通信双方的身份,也不能判断报文是否被窜改;
-
HTTP的性能不算差,但不完全适应现在的互联网,还有很大的提升空间。
浪波激泥