07简单的HTTP协议——持久连接和Cookie状态管理

2.7持久连接节省通信流量

HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接。

--------------------------------------------
           ————————SYN————————>
           <——————SYN/ACK——————
           ————————ACK————————>     
           ------HTTP请求----->      
  客户端   <-----HTTP响应------    服务器
           <———————FIN————————
           ————————ACK————————>
           ————————FIN————————>
           <———————ACK—————————
----------------------------------------------

原先的通信都是容量很小的文本传输,所以即使这样频繁的发送请求也没有问题。但是随着网络的进步,文档中包含大量图片的情况多了起来。

例如,如果浏览器页面包含多个资源或者图片的HTML界面时,在发送请求访问HTML页面资源的同时,也会请求该HTML页面里包含的其他资源。因此,每次都会造成无效的TCP连接建立和断开,增加通信量的开销。

2.7.1持久连接

为了解决上述连接问题,HTTP/1.1和HTTP/1.0推出了持久连接方法。

持久连接——HTTP Persistent Connections,即HTTP keep-alive或HTTP connection reuse。

--------------------------------------------
           ————————SYN————————>
           <——————SYN/ACK——————
           ————————ACK————————>     
           ------HTTP请求----->      
           <-----HTTP响应------    
                    |
  客户端            ||             服务器
                    |
           ------HTTP请求----->
           <-----HTTP响应------
           <———————FIN————————
           ————————ACK————————>
           ————————FIN————————>
           <———————ACK—————————
----------------------------------------------

持久连接的好处在于减少了TCP连接的重复建立和断开所造成的额外开销,减少了服务器端的负载。

减少开销的那部分时间,使HTTP请求和响应可以更早的结束,这样使web页面的显示速度也就相应的提高了。

2.7.2管线化

持久连接使得多数请求以管线化方式发送成为可能。

从前发送请求后需等待并收到响应,之后才能发送下一个请求。

管线化技术出现后,不用等待响应亦可直接发送下一个请求。

比如,当请求一个包含10张图片的HTML Web页面,与挨个连接相比,用持久化连接可以让请求更快结束。而管线化技术则比持久化连接还快。请求数越多,时间差越明显。

--------------------------------------------
                建立TCP连接
           ------HTTP请求①----->      
           <-----HTTP响应②------    
                    |
                    |            
                    |
           ------HTTP请求①----->
           <-----HTTP响应②------
----------------------------------------------

2.8使用Cookie的状态管理

由于HTTP是无状态协议,它不对之前发生过的请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。

而Cookie的出现,则完美解决了这个问题。

Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。

Cookie会根据从服务器端发送的响应报文的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。服务器端发现客户端发送过来地Cookie之后,会去检查是从哪一个客户端发送过来地连接请求,然后比对服务器上地记录,最后得到之前的状态信息。

--------------------------------------
①请求报文(没有Cookie信息的状态)
GET /reader/ HTTP/1.1
Host: hackr.jp
--------------------------------------
②响应报文(服务器端生成Cookie信息)
HTTP/1.1 200 OK
Date: Thu, 12 Jul 2012 07:12:00 GMT
Server: Apache
<Set-Cookie: sid=1342077140226724; path=/; expires=Wed,=>10-Oct-12 07:12:20 GMT>
Content-Type:text/plain; charset=UTF-8
---------------------------------------
③请求报文(自动发送保存着的Cookie信息)
GET /image/ HTTP/1.1
Host:hackr.jp
Cookie: sid=1342077140226724
---------------------------------------

有关请求报文和响应报文内Cookie对应的首部字段

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叼个奶嘴闯天下呦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值