当前位置:   article > 正文

【网络】【应用层】常见的应用层协议

应用层协议

1.HTTP/HTTPS

⑴概述

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议

⑵HTTP工作过程

在这里插入图片描述

⑶HTTP特点

  • 无状态,但是很多业务都需要对通信状态进行保存,于是我们引入了 Cookie 技术
  • 使用 Cookie 的状态管理,Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息,通知客户端保存Cookie。
  • 长连接 HTTP/1.1 和部分 HTTP/1.0 想出了持久连接的方法,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。在 HTTP/1.1 中,所有的连接默认都是持久连接
  • 管线化 能做到同时并行发送多个请求

⑷发展过程

①HTTP0.9
  • 仅支持GET
  • 相应仅支持超文本,响应后马上结束的连接
  • 没有 HTTP headers (无法传输其他内容类型的文件), 没有 status/error 代码, 没有 URLs, 没有版本控制
②HTTP1.0
  • 支持的方法:GET HESD POST
  • 响应:不再只限于超文本 (Content-Type 头部提供了传输 HTML 之外文件的能力 — 如脚本、样式或媒体文件)
  • 提供了对请求和响应都包含丰富元数据的 header 域 (HTTP 版本号、status code 和 content type)
  • HTTP1.0默认是短连接
③HTTP1.1(当前普遍使用的版本)
  • 支持的方法: GET , HEAD , POST , PUT , DELETE , TRACE , OPTIONS
  • 默认值长连接
  • 进行了重大的性能优化和特性增强,分块传输、压缩/解压等
  • 引入更多缓存机制
  • 增加了错误状态码
  • 在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)

HTTP1.1的缺点:
HTTP 1.1 在应用层以纯文本的形式进行通信。每次通信都要带完整的 HTTP 的头,而且不 考虑 pipeline 模式的话,每次的过程总是像上面描述的那样一去一回。这样在实时性、并 发性上都存在问题。

HTTP1.1的pipeline模式:
桌面浏览器仍然会选择默认关闭HTTP pipelining,只有幂等的请求可以被管线化。
它指定是把多个HTTP请求放到一个TCP连接中一一发送,而在发送过程中不需要等待服务器对前一个请求的响应;只不过,客户端还是要按照发送请求的顺序来接收响应!
如果建立多个TCP连接,会导致资源耗费和性能损失,而且也新建不了多少。

所以HTTP1.1仍旧存在线头阻塞(Head of line blocking)问题。

④SPDY(了解)

在这里插入图片描述
2012年由google提出,主要解决:

  • 降低延迟,针对HTTP高延迟的问题,SPDY优雅的采取了多路复用(multiplexing)
  • 请求优先级(request prioritization)。多路复用带来一个新的问题是,在连接共享的基础之上有可能会导 致关键请求被阻塞。SPDY允许给每个request设置优先级,这样重要的请求就会优先得到响应。比如浏览器加载首页,首页的html内容应该优先展示,之后才是各种静态资源文件,脚本文件等加载,这样可以保证用户能第一时间看到网页内容。
  • header压缩。前面提到HTTP1.x的header很多时候都是重复多余的。选择合适的压缩算法可以减小包的大小和数量。
  • 基于HTTPS的加密协议传输,大大提高了传输数据的可靠性。
  • 服务端推送(server push),采用了SPDY的网页ÿ
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/1003942
推荐阅读
相关标签
  

闽ICP备14008679号