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里面给我印象最深的应该就是箭头操作符(=>),它简化了函数的书写,第一次看见的时候完全懵逼,然后百度后才知道.操作符左边为输入的参 ...
随机推荐
- Android Studio 使用笔记:查看类结构和继承关系
选中类 ,按下F4,可以打开类的源代码 在 Eclipse 中我们可以使用 Ctrl + O 组合热键查看类的结构,Android Studio 中也可以做到. View -> Tool Win ...
- excel表格系列
MicroSoft Excel表格系列问题 1.excel表格修改默认行高 2.[Excel技巧]Excel实现部分保护技巧
- 在eclipse创建和myeclipse一样结构的web项目
之前一直使用myeclipse,现在换成eclipse,但是创建的新项目让我很不习惯,下面这个方法可以解决. 创建好的项目结构如下图所示,不过看着还是很别扭,我们window→show view→ot ...
- python学习 03 函数 (只会执行一次return就不会往下执行)
1.调用函数只会执行一次return,而且执行return后不会往下执行
- Pell方程(求形如x*x-d*y*y=1的通解。)
佩尔方程x*x-d*y*y=1,当d不为完全平方数时,有无数个解,并且知道一个解可以推其他解. 如果d为完全平方数时,可知佩尔方程无解. 假设(x0,y0)是最小正整数解. 则: xn=xn-1*x0 ...
- 【HTML5开发系列】meta元素详解
meta元素可以用来定义文档的各种元数据.他有很多种用法,一个HTML文档可以包含多个meta元素. meta元素在HTML5中的变化 charset属性是HTML5中新增的.在HTML4中,http ...
- Python菜鸟之路:Python基础-Socket基础-1
预热知识 OSI 七层模型 谈到TCP/IP,就不得不说OSI七层模型,OSI 是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供 ...
- LookAndFeelInfo
在读zap源码的时候碰到:UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());以下来自百度知道UIManager.s ...
- IO多路复用的作用?并列举实现机制以及区别?
I/O多路复用是用于提升效率,单个进程可以同时监听多个网络连接IO. 举例:通过一种机制,可以监视多个文件描述符,一旦描述符就绪(读就绪和写就绪),能通知程序进行相应的读写操作,I/O多路复用避免阻塞 ...
- Python字典的入门案例
查看python版本: [root@localhost ~]# python -V Python 2.7.5 1.基本的字典操作 案例1:简单电话本实现 [root@localhost ~]# vim ...