HTTP -- 特性

1,特点
1. 灵活可扩展,可以任意添加头字段实现任意功能;
2. 可靠传输协议,基于TCP/IP协议“尽量”保证数据的送达;
3. 应用层协议,比FTP、SSH等更通用功能更多,能够传输任意数据;
4. 使用请求-应答模式,客户端主动发起请求,服务器被动回复请求;
5. 本质是无状态的,每个请求都是互相独立、毫无关联的,协议不要求客户端或服务器记录请求相关的信息。
1.1 优缺点
1. 优点是简单、灵活和易于扩展;
2. 拥有成熟的软硬件环境,应用广泛,成了互联网的基础设施;
3. 无状态的,可以轻松实现集群化,扩展性能,也可以用Cookie技术来实现“有状态”;
4. 明文传输,数据完全肉眼可见,能够方便地研究分析,也容易被窃听;
5. 不安全的,无法验证通信双方的身份,不能判断报文是否被窜改(中间人);
6. 性能不算差,但不完全适应现在的互联网,还有很大的提升空间。
2,类型
2.1 MIME type
1. text:文本格式的可读数据,text/html表示超文本文档,还有纯文本text/plain、样式表text/css等。
2. image:图像文件,有image/gif、image/jpeg、image/png等。
3. audio/video:音频和视频数据,如audio/mpeg、video/mp4等。
4. application:数据格式不固定,可能是文本也可能是二进制,由上层应用程序解释。常见有application/json,application/javascript、application/pdf等,不知道数据是什么类型如:application/octet-stream,不透明的二进制数据。
2.2 Encoding type
1. gzip:GNU zip压缩格式,互联网最流行的压缩格式;
2. deflate:zlib(deflate)压缩格式,流行程度次于gzip;
3. br:专门为HTTP优化的新压缩算法(Brotli)。
2.3 头字段
Request HeaderResponse Header
客户端用Accept头告诉服务器希望接收什么样的数据AcceptContent服务器用Content头告诉客户端实际返回了什么样的数据。在响应报文里用头字段 Content-Type告诉实体数据的真实类型
标记客户端支持的压缩格式,服务器可以选择其中一种来压缩数据,可以省略表示不支持压缩Accept-EncodingContent-Encoding实际使用的压缩格式放在响应头字段 。可以省略,没有表示没压缩
标记客户端可理解的自然语言Accept-LanguageContent-Language客户端实体数据使用的实际语言类型
字符集请求头字段Accept-Charsetcharset=xxx在 Content-Type字段的数据类型后用“charset=xxx”表示
2.4 body优化处理
1. 压缩:压缩HTML等文本文件是传输大文件最基本的方法;
2. 分块传输:可以流式收发数据,节约内存和带宽,使用响应头字段“Transfer-Encoding: chunked”来表示,分块的格式是16进制长度头+数据块;
3. 范围请求:可以只获取部分数据,即“分块请求”,实现视频拖拽或者断点续传,使用请求头字段“Range”和响应头字段“Content-Range”,响应状态码必须是206;
4. 请求多个范围:响应报文的数据类型是“multipart/byteranges”,body里的多个部分会用boundary字符串分隔。
2.5 连接
1. 短连接:每次发送请求前需要先与服务器建立连接,收到响应报文后会立即关闭连接,客户端不会与服务器保持长时间的连接状态
2. HTTP/1.1默认启用长连接,一个连接上收发多个请求响应,提高了=传输效率;
3. 服务器发送Connection:keep-alive启用长连接,Connection: close表示长连接即将关闭
4. 过多的长连接会占用服务器资源,服务器会用一些策略有选择地关闭长连接;
5. 队头阻塞:HTTP规定报文必须是“一发一收”,FIFO队列,队列头的请求因为处理的慢耽误时间,队列后面所有请求也一起等待,后面其他的请求承担了不应有的时间成本
6. 用“并发连接”和“域名分片”技术缓解队头阻塞问题导致的性能下降
2.6 重定向
1. 重定向是服务器发起的跳转,要求客户端改用新的URI重新发送请求,浏览器会根据状态码判断自动进行,用户无感;
2. 301/302是最常用的重定向状态码,分别是“永久重定向”和“临时重定向”;
3. 响应头字段Location指示了要跳转的URI,可以用绝对或相对的形式;
4. 重定向可以把一个URI指向另一个URI,也可以把多个URI指向同一个URI;
5. 重定向的机制决定了一个跳转会有两次请求-应答,造成资源损耗,还要避免出现循环跳转,“A=>B=>C=>A”的无限循环。

注 :如有不当之处,联系侵删。文章节选自极客时间–透视HTTP协议

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值