squid阅读笔记一 - squid工作流程

   研究squid也有一段时间了,也有一些心得,由于发觉网上介绍squid源码的资料实在太少,所以决心以后将陆续将squid一些代码的研究写成博客,一来作为自己的笔记,用于以后拾起,二来用于和同样研究squid的学者交流分享。

squid是一款缓存internet数据的软件,它接收用户的下载申请,并自动处理所下载的数据。也就是说,当一个用户象要访问一个url时,它向squid发出一个申请,请求squid替它下载,然后squid连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,squid将缓存的该页面立即传给用户,加速用户的访问。目前,squid 可以代理HTTP, FTP, GOPHER, SSL 和 WAIS 协议,暂不能代理POP, NNTP等协议。

squid作为源站和客户端之间的桥梁,一方面减轻了源站的负担,另一方面加速了客户端的访问。squid一般做反向代理,当客户端发起web请求时,DNS服务器将访问域名解析为squid服务器的ip地址,这样客户端就会与squid服务器建立tcp连接,将请求数据发送给squid服务器,squid服务器会解析客户请求,然后向源站去请求资源并缓存在本地,然后再将资源返回给客户端。这样,当客户下次进行同样的请求时,就会squid服务器这边直接命中,而不用再去源站请求,这样就加快了访问速度,同时也减轻了源站负担。

squid反向代理一般架构如下所示


1. squid内部框架

    squid主要是一个请求/响应体,通过监听事件和回调函数机制进行响应的业务处理。

    

2. ProcessHit流程

   首先,发送响应头

   

 发完响应头之后,开始发body

   

3. ProcessMiss流程

    首先,发送请求到源站

    

然后,处理从源站收到的响应

    

你可能感兴趣的:(squid)