起了哪些作用?

姜睿兮姜睿兮最佳答案最佳答案

1,简化了数据传输,在TCP/IP协议里,很多数据的传输都通过数组来实现的,比如一个请求可能这样传到服务器上 这样的话,你发送的每个请求都会经过一次编码和解码操作,如果这个请求里有很多的数据,那么就会很麻烦,因为每次传输都需要先编码后解码。而http是面向文本的,虽然也有二进制的内容,但是可以被切分,就可以一次性全部发送到服务器端(用hash表或二叉树之类的结构优化一下的话可以更节省一些资源),到了服务器再切成一个个的小块根据需求进行处理。

2,实现了keep-alive 如果你发了个get请求然后服务器回了ok,接下来你再发另一个get请求的时候不需要再次建立连接了,直接复用原来的连接即可(对于某些负载比较轻的服务器来说甚至可以达到秒发的程度)这也就方便了浏览器和下载软件(像迅雷这种)实现一边下载一边浏览的功能。(当然,如果是同步请求那就得等请求完成了才能观看或者下载,否则就是半拉子工程……)

3,无状态的连接 对于同一个用户,不同的时间发出不同的请求,这些请求虽然具有时间上的关联性,但根据http协议本身是并没有办法把这样的信息传递给服务器的,为了便于解决这样的问题,我们需要用到cookie或者是session之类的方法来进行问题的解决。不过使用http协议本身是可以减轻这方面的工作量的。

4,无连接 但是实际上http是一种无连接的协议,也就是说它只负责完成数据从客户端到服务器端的传递,至于中间网络是否拥堵,服务器能否处理等等的问题它是不用负责的——这就是它为什么要提供keep-alive功能的原因,利用keep-alive,我们可以尽可能多的让一个连接保持活跃而不需要频繁的重新建立。但也正因为如此,当网络环境发生变化的时候,http是没有办法自适应的,它会一直尝试原来的速度直到失败为止。所以为了提高性能,我们一般会结合其他的网络协议一起使用。

我来回答
请发表正能量的言论,文明评论!