http协议(三)几种数据传输方式

说说http协议的一些特色:java

1)无状态web

http协议是一种自身不对请求和响应之间的通讯状态进行保存的协议,即无状态协议。浏览器

这种设置的好处是:更快的处理更多的请求事务,确保协议的可伸缩性安全

不过随着web的不断发展,有时候,须要将这种状态进行保持,随即,就引入了cookie技术,cookie技术经过在请求和响应报文中写入cookie信息来控制客户端的状态。服务器

有关cookie的内容后面咱们再说。。。cookie

2)持久性网络

正常在发送http时,都须要创建TCP的链接,再发送报文。架构

 

若是每次想要发送http报文都须要通过这个过程,那么时间大部分都会消耗在创建和断开链接的过程当中。app

所以http中使用了connection属性,用于指定链接的方式。ide

当设置成keep-alive,http就会创建一条持久化的链接,不须要每次都创建链接,再中断。

这样作的好处是:减轻了服务器端的负载,减小开销的那部分时间,使http请求和响应都能更快的结束,相应的,web页面显示速度也就相对提高了。

3)管线化

若是一个http请求,请求了大量的图片等大文件,那么其余的http请求怎么办呢?

如今,管线化技术的出现,使得http请求比持久性链接更要快;特色在于:请求数越多,时间差越明显。

4)内容编码

因为某些报文的内容过大,所以在传输时,为了减小传输的时间,会采起一些压缩的措施。

例如上面的报文信息中,Accept-Encoding就定义了内容编码的格式:gzip

有下面几种方式:

gzip:GNU压缩格式

compress:UNIX系统的标准压缩格式

deflate:是一种同时使用了LZ77和哈弗曼编码的无损压缩格式

identity:不进行压缩

5)多部分对象集合

有的时候传输的内容,不只仅是一些字符串,还有多是一些图片,字符,音乐二进制等混杂的内容。

这就须要使用多部分对象集合,multipart,例如在使用java编写web上传文件的代码时,须要在form中指定form的编码格式。

设置form的enctype属性的值为multipart/form-data。

这是由于默认的状况下form使用的编码格式是:applicatin/x-www-form-urlencoded,这种编码格式会把全部的内容进行编码,不适合上传文件这种状况。

这两种编码格式的区别主要是:

multipart/form-data 会以控件为基准,编码form中的内容。

application/x-www-form-urlencoded 会把form中的内容编码成键值对的形式。

6)范围请求

有些场景下,http报文请求一些很大的图片,可是加载过程很慢。

好比咱们登陆一些大图片的网址,会发现有时候图片是一块一块加载的。

这就是由于设置了http请求的长度,这样就能够分块的加载资源文件。

在请求报文中使用Range属性,在响应报文中使用Content-Type属性均可以指定必定字节范围的http请求。

 

接下来,说说几种http协议的数据传输方式

http协议的传输方式有不少种,处于安全考虑,经常使用的通常都是GET和POST两种,先来介绍下这两种

1)GET:获取资源

GET方法用来请求访问已被URL识别的资源

2)POST:传输实体主体

POST方法用来请求服务器传输信息实体的主体

GET和POST的区别:

首先,使用目标不一样:GET方法只是用来查询,不会对浏览器上的信息产生影响,每次GET的方法都是相同的

其次,大小不一样:GET是放在URL首部,所以大小随着浏览器而定,而POST则是在报文中,只要没有具体限制,文件的大小是没限制的

而后,安全性不一样:GET采用的是明文传输,而POST是放在报文内部,没法看到

从使用场景的角度来讲,通常像用户注册登陆这种信息都是私密的,采用POST,而针对查询等,为了快速,大多采用GET传输。

(关于关于GET和POST的区别,最近从新看了不少别人写的博客啊资料什么的,发现上面的解释比较模糊,我就在下面的评论区里面将区别清晰的描述一下,固然,后面的博客也会详细的解释)

 

接下来介绍其余几种数据传输方式:

3)PUT:传输文件

PUT要求在请求报文的主体中包含文件内容,而后保存到请求URL指定的位置

处于安全考虑,通常web网站不使用此方法,若配合web的安全验证机制,或者架构采用REST标准的网站,就可能开放使用此方法

4)HEAD:得到报文首部

HEAD和GET方法同样,只不过不返回报文主体部分,用于确认URI的有效性及资源更新的日期时间等

5)DELETE:删除文件

DELETE是与PUT相反的方法,是按请求URI删除指定的资源

处于安全考虑,通常web网站不使用此方法,若配合web的安全验证机制,或者架构采用REST标准的网站,就可能开放使用此方法

6)OPTIONS:询问支持的方法

用来查询针对请求URI指定的资源支持的方法

7)TRACE:追踪路径

是让web服务器端将以前的请求通讯还回给客户端的方法

发送请求时,在Max-Frowards首部字段中填入数值,每通过一个服务器端就-1,当数值为0时,中止传输,最后收到服务器返回状态码200 OK的响应

可是,这种方法基本不多使用,并且很容易引发XST(跨站追踪)攻击,就更不会用到了。

8)CONNECT:要求采用隧道协议链接代理

该方法要求在于代理服务器通讯时创建隧道,实现用隧道协议进行TCP通讯,主要使用SSL(安全套接层)和TLS(传输层安全)协议把通讯内容加密后通过网络传输。

 

最后,附上一张http1.1和http1.0版本各自支持的方法,另外,注意用大写。。。。。。

其中,LINK和UNLINK已被HTTP1.1废弃,再也不支持!

相关文章
相关标签/搜索