HTTP-接触
【HTTP】
http是基于TCP/IP协议的应用层协议,他不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认端口是
80端口。
不同版本http协议里的相关概念
【Content-Type字段】:是关于字符的编码,http的1.0版本规定,头信息必须是ASCLL码,后面的数据是任何格式。因此,服务器回应的时候,必须告诉客户端,数据是什么格式的,这就是Content-Type字段的作用,下面是一些Content-Type字段的值:
text/plain
text/html
text/css
image/jpeg
image/png
image/svg+xml
audio/mp4
video/mp4
application/javascript
application/pdf
application/zip
application/atom+xml。
这些数据类型总称为MIME type,每个值包括一级类型和二级泪类型,之间用斜杠分割。
【Content-Encoding 字段】:由于发送的数据可以是任何格式,因此可以把数据压缩后在发送,Content-Encoding 字段就是说明数据的压缩方式。例:
Content-Encoding: gzipContent-Encoding: compressContent-Encoding: deflate
客户端在请求时,用Accept-Encoding 说明自己可以接受那些压缩方式。例:
Accept-Encoding: gzip, deflate
【管道机制】:http1.1版本引入了管道机制,即在同一个TCP连接里面,客户端可以同时发送多个请求,改进了http协议的效率。
举例来说,客户端需要请求两个资源。以前的做法是,在同一个TCP链接里面,先发送A ,等待服务器做出反应,收到后在发送B
请求。管道机制会同时发送A、B,但也会按顺序进行请求。
【SPDY协议】
这是09年由谷歌公开的自发研制的协议,主要解决http/1.1效率不高的问题。后来被当作http/2的基础。
【http/2】:是2015年发布的,他不叫http/2.0。是因为标准委员会不打算再发布子版本了,下一个新版本将是http/3。其带有的相关属性为:
(1)二进制协议:HTTP/1.1版本的头信息肯定是文本(ASCII码),数据体可以是文本,也可以是二进制。HTTP/2则是一个彻底的二进制协议,头信息和数据体都是二进制,并统称为“帧”:头信息帧和数据帧。
二进制协议的一个好处是,可以定义额外的帧。HTTP/2 定义了近十种帧,为将来的高级应用打好了基础。如果使用文本实现这种
功能,解析数据将会变得非常麻烦,二进制解析则方便得多。
(2)多工:http/2复用TCP连接,在一个链接里,客户端和浏览器都可以同时发送多个请求或回应。而且不用按照顺序一一对应,这样就避免了“对头堵塞”。
举例说明:在一个TCP连接里面,服务器同时收到了A、B的请求,于是先回应A请求,结果发现处理非常耗时,于是就发送A请求已
经处理好的的部分,接着发送B 请求,完成后,在发送A请求的剩下部分。
这样双向的、实时的通信,就叫做多工(Multiplexing)。
(3)数据流:因为htt/2的数据包是不按顺序发送的,同一个连接里面连续的数据包,可能属于不同的回应。因此,必须对数据包
做标记,指出他属于的回应。
HTTP/2将每个请求或回应的所有数据包,称为一个数据流(stream)。每一个数据流都有一个独一无二编号。数据包发送的时候都必须标记数据流ID,用来区分他属于哪个数据流,另外还规定,客户端发出的数据流,ID一律为奇数,服务器发出的,ID为偶数。数据流发送到一半的时候,客户端和服务器都可以发送信号(RST_STREAM帧),取消这个数据流。1.1版取消数据流的唯一方法,就是关闭TCP连接。这就是说,HTTP/2 可以取消某一次请求,同时保证TCP连接还打开着,可以被其他请求使用。
(4)头信息压缩:HTTP 协议不带有状态,每次请求都必须附上所有信息。所以,请求的很多字段都是重复的,比如Cookie和User Agent,一模一样的内容,每次请求都必须附带,这会浪费很多宽带,也影响速度。
HTTP/2 对这一点做了优化,引入了头信息压缩机制(header compression)。一方面,头信息使用gzip或compress压缩后再发送;另一方面,客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,以后就不发送同样字段了,只发送索引号,这样就提高速度了。
还是很懵!
HTTP-接触的更多相关文章
- [C#] 走进异步编程的世界 - 开始接触 async/await
走进异步编程的世界 - 开始接触 async/await 序 这是学习异步编程的入门篇. 涉及 C# 5.0 引入的 async/await,但在控制台输出示例时经常会采用 C# 6.0 的 $&qu ...
- 刚接触Linux,菜鸟必备的小知识点(一)
身为一个将要大四的学生,而且还是学计算机的没有接触过linux简直是羞愧难当.这个假期做了一个软件测试员,必须要熟悉linux的操作,所以对于我这个菜鸟我也就说几点比较重要的小知识点吧. 第一.cd指 ...
- 首次接触nodejs
嗯,2017年第一次接触nodejs ,也费了一些时间才终于将hello world正确运行出来. 下面说一下我的详情吧: 第一步:不用说,在https://nodejs.org/en/下载一款新的稳 ...
- 接触PHP快4个月
就要下班了,接触php快4个月,掌握的不好,需要实战,看到自己博客空空的,就mark一下吧!下班了...
- 接触Matlab5年一个总结(Matlab要掌握的一些要点 )
阅读目录 前言 Matlab的开发环境与简单介绍 Matlab的常见命令 Matlab的灵魂-矩阵操作 Matlab的.m或.fig的编程与技巧 从大二开始接触到matlab,讲真,这是一个我觉得很良 ...
- 新接触PHP课程,给自己定制的目标
PHP课程初接触,对自己的计划和展望恢复 从今天开始了为期四个半月的关于PHP课程的学习.从零开始接触一门新的技术知识,而且还是在短短四个月内就要掌握牢固,其实确确实实感觉不易.可是世间再没有路,不还 ...
- 初次接触json...
这两天发现很多网站显示图片版块都用了瀑布流模式布局的:随着页面滚动条向下滚动,这种布局还会不断加载数据并附加至当前尾部.身为一个菜鸟级的程序员,而且以后可能会经常与网站打交道,我觉得我还是很有必要去尝 ...
- WPF学习笔记1---初接触
刚刚接触WPF,微软的一套东西.WPF最大的特点就是UI设计与代码逻辑的完全剥离.这样美工和程序员的分工就变得非常清楚.因为界面和程序的耦合度很低,也增加的代码的灵活性和可重用性. 微软为WPF的UI ...
- 初接触BurpLoader工具
初接触burp工具 菜鸟一枚,现在在接触一段时间测试,我在测试功能性的时候,想着网站被黑案例那么多,我是不是也应该弄弄安全性测试了,所以就有了下边的第一次接触BurpLoader工具来测试手机的app ...
- 接触到得到新语言里面涉及到很多关于ECMscript相关知识,所以还是来总结一下吧
ES6新增加了一些特性下面我就一边回忆一边写博文吧. 1.es6里面给我印象最深的应该就是箭头操作符(=>),它简化了函数的书写,第一次看见的时候完全懵逼,然后百度后才知道.操作符左边为输入的参 ...
随机推荐
- man page及info page用法
Linux系统的在线求助man page与info page 先来了解一下Linux有多少命令呢?在文本模式下,你可以直接按下两个[Tab]按键,看看总共有多少命令可以让你用? [vbird@www ...
- UFLDL深度学习笔记 (四)用于分类的深度网络
UFLDL深度学习笔记 (四)用于分类的深度网络 1. 主要思路 本文要讨论的"UFLDL 建立分类用深度网络"基本原理基于前2节的softmax回归和 无监督特征学习,区别在于使 ...
- Spring Cloud 微服务六:调用链跟踪Spring cloud sleuth +zipkin
前言:随着微服务系统的增加,服务之间的调用关系变得会非常复杂,这给运维以及排查问题带来了很大的麻烦,这时服务调用监控就显得非常重要了.spring cloud sleuth实现了对分布式服务的监控解决 ...
- eclipse导入web工程变成Java工程,解决方案
经常在eclipse中导入web项目时,出现转不了项目类型的问题,导入后就是一个java项目. 解决步骤: 1.进入项目目录,可看到.project文件,文本编辑器打开. 2.找到<nature ...
- RecyclerView的使用(3)之加入Header和Footer
原创文章.转载请注明 http://blog.csdn.net/leejizhou/article/details/50742544 李济洲的博客 RecyclerView尽管作为ListView的替 ...
- 批量删除redis某个键值
/usr/local/redis/src/redis-cli -h 172.28.6.23 -p 6383 keys "virtual*" |xargs /usr/local/r ...
- centos 安装composer PHP项目部署,Composer install Do not run Composer as root/super user!
使用composer 安装项目的时候遇到了 Composer install Do not run Composer as root/super user! 在博客https://segmentfau ...
- HDU 4824 Disk Schedule
//
- JPA 多表分页查询
业务场景:大学生毕业后统计毕业去向.学生实体和毕业去向实体一对一关系. 实体: @Entity @Data @Table(name = "t_s_student") public ...
- Mac idea maven 创建web项目
这样项目就创建完成了.然后把Tomcat加入进去就可以跑通了.