转至:http://www.cnblogs.com/PeterBi/archive/2011/03/25/1995228.html
Squid是什么
Squid是一种用来缓冲Internet数据的软件。它是这样实现其功能的,接受来自人们需要下载的目标 (object)的请求并适当地处理这些请求。也就是说,如果一个人想下载一web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服 务器(比如:http://squid.nlanr.net/)并向这个页面发出请求。然后,Squid显式地聚集数据到客户端机器,而且同时复制一份。 当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上。当前的Squid可以处理 HTTP,FTP,GOPHER,SSL和WAIS等协议。但它不能处理如POP,NNTP,RealAudio以及其它类型的东西。
Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。
Squid 将数据元缓存在内存中,同时也缓存DNS查询的结果,除此之外,它还支持非模块化的DNS查询,对失败的请求进行消极缓存。Squid支持SSL,支持访 问控制。由于使用了ICP(轻量Internet缓存协议),Squid能够实现层叠的代理阵列,从而最大限度地节约带宽。
Squid由一个主 要的服务程序squid,一个DNS查询程序dnsserver,几个重写请求和执行认证的程序,以及几个管理工具组成。当Squid启动以后,它可以派 生出预先指定数目的dnsserver进程,而每一个dnsserver进程都可以执行单独的DNS查询,这样一来就大大减少了服务器等待DNS查询的时 间。
Internet缓冲的一些概念
你可能会想到一些问题:缓冲有多大的用处?什么时候目标(object)应该或者不应该被缓冲?例如,缓冲信用卡号码是完全不适合的,脚本文件的执行结果在远程服务器端,站点经常更新(象www.cnn.com)或者甚至站点不允许缓冲,这些情况也都是不适合缓冲的。
Squid处理各种情况是不错的(当然,这需要远程站点按标准形式工作)。
可执行的cgi-bin脚本文件不被缓冲,返回正确页眉的页面是在一段限制了的时间内被缓冲,而且你可以规定特殊的规则以确定什么是可以或不可以被缓冲的,还有缓冲的时间为多长。
谈到缓冲的用处有多大,这要看Internet的容量大小,各有不同。对于小型的缓冲区(几转磁盘空间)来说,返回值非常高(达到25%)。这个空间缓 冲经常访问的站点,如netscape,cnn和其它一些类似情况的站点。如果你增加一倍缓冲的磁盘空间,但你不会成倍增加你的命中率。这是因为你开始缓 冲网络中剩余部分时,这些通常时很大的而且很少被访问。一个非常大的高速缓冲区,有20转左右,可能返回值仍小于50%,除非你对保存数据的时间长短经常 改变(一般地你不要分配20转的磁盘空间,因为页面很快就会过时,应该被删除掉)。
我们在这里说的目标(object)指的是可保存的web页面或其它类似的可下载页面(ftp文件或目录内容也称为目标(object))。
Squid运行在什么系统上?
Squid可运行在大多数Unix和OS/2版本的系统之上,已知的可工作的有:
AIX,Digital Unix,FreeBSD,HP-UX,Irix,Linux,NetBSD,Nextstep,SCO,Solaris
SQUID如何工作
[传统代理]
1.SQUID被绑定到代理服务器的3128端口。
2.客户端浏览器被配置使用代理服务器的3128端口。
3.客户端不需要配置DNS。4.代理服务器上需要配置代理服务器。
5.客户端不需要配置缺省路由。
当我们在客户端浏览器中打开一个web请求,比如“http://www.96333.com”,这时将陆续发生以下事件:
1.客户端使用某一端口(比如1025)连接代理服务器3128端口,请求web页面“http://www.96333.com”
2.代理服务器向DNS请求“www.96333.com”,得到相应的IP地址2.3.4.5。然后,代理服务器使用某一端口(比如1037)向该IP地址的80端口发起web连接请求,请求web页面。
3.收到响应的web页面后,代理服务器把该数据传送给客户端。
4.客户端浏览器显示该页面。
从www.96333.com的角度看来,连接是在1.2.3.4地1037端口和2.3.4.5的80端口之间建立的。
从client的角度看来,连接是在192.168.1.100的1025端口和1.2.3.4的3128端口之间建立的。
[透明代理]
透明代理的意思是客户端根本不需要知道有代理服务器的存在。
在以上基础上我们做以下工作:
1.配置透明代理服务器软件运行在代理服务器的3128端口。
2.配置代理服务器将所有对80端口的连接重定向到3128端口。
3.配置客户端浏览器直接连解到Internet。
4.在客户端配置好DNS.
5.配置客户端的缺省网关为192.168.1.1.
当我们在客户端浏览器中打开一个web请求,比如“http://www.96333.com”,这时将陆续发生以下事件:
1.客户端向DNS请求“www.96333.com”,得到相应的IP地址2.3.4.5。然后,客户端使用某一端口(比如1066)向该IP地址的80端口发起web连接请求,请求web页面。
2.当该请求包通过透明代理服务器时,被防火墙将该数据包重定向到代理服务器的绑定端口3128。于是,透明
代理服务器用某一端口(比如1088)向2.3.4.5的80端口发起web连接请求,请求web页面。
3.收到响应的web页面后,代理服务器把该数据传送给客户端。
4.客户端浏览器显示该页面。
从www.96333.com的角度看来,连接是在1.2.3.4地1088端口和2.3.4.5的80端口之间建立的。从client的角度看来,连接是在192.168.1.100的1066端口和2.3.4.5的80端口之间建立的。
以上就是传统代理服务器和透明代理服务器的区别所在。
[反向代理]
反向代理是相对于传统代理而言,是代理web服务器接受客户端的请求。在此,我们忽略客户端的设置,假设客户端是可以直接访问互联网。
web服务器与客户端的结构如下:
假设已经将www.96333.com的域名指向了squid服务器所在的ip,并且在web服务器集群里做了dns轮询。
web server1 -|
web server2 -|- squid 服务器/ INTERNET / - Client
web server3 -|
1.客户端通过IE向DNS服务器发送访问www.96333.com的请求,由客户所在地的DNS服务器解析www.96333.com的IP为2.3.4.5并返回给用户。
2.客户收到DNS返回的服务器IP地址,重新向www.96333.com指向的IP地址发送访问请求。
3.squid 服务器接收到用户的请求后,查询自身缓存中是否有用户请求内容,有则直接发送给客户端,如果没有则通过内部DNS轮询查询空闲服务器,并将客户请求发送到 该服务器,在获取到用户数据并返回给用户的同时保留一份在自己本身的缓存当中。在用户看来,自己访问的是www.96333.com这个服务器,实际上真 正的WEB服务器为SQUID缓存后面的服务器或者服务器集群,通过外部DNS做CNAME转向,将用户请求转发到内部真正的web服务器上去。
Squid工作原理是什么
一、SQUID缓存的存放方式:
每一台Squid 代理服务器上都有若干颗硬盘,每颗硬盘又分割成多个分区,每一个分区又可建立很多目录,目录下才放文件(Squid 把它叫object)。
二、SQUID的查询方式:
SQUID通过查询表的方式来定位某个资源的位置,所查询的表叫Hash table 和Digest table;Digest table在这里可以称之为摘要或者索引,它记录了磁盘上每个分区,每个目录里存的缓存摘要,Hash table在这里可以称之为目录或者提纲,它记录所有的Digest table表信息,SQUID接受到请求后先查询Hash table,在根据Hash table所指向的Digest table查询需要的信息。
三、SQUID服务器之间的关系:
SQUID服务器存在两种工作关系,一种为Child、Parent,当child squid server没有用户需要的数据时,就象parent server发出请求,并持续等待,直到parent server回应自己为止;另外一种为ibling,当本地SQUID server没有用户请求数据时,会向sibling server发出请求,如果sibling server没有资料则会向上级sibling或者INTERNET发送数据请求
四、SQUID运作模式
1. 当Squid Server 没有资料时,会先向Sibling 的Squid Server 要资料,如果Sibling没资料,就跳过它直接向Parent 要。
2. 向Parent 要资料,然後一直等,直到Parent 给它资料为止(Parent 自己有的资料或上Internet 去拿)。
3. 没有Parent 时,就自己上Internet 去拿。
4. 如果这三者都拿不到资料,才向用户端回报拿不到资料。
一 般而言,把网路上一层的Squid Server 设成Sibling 是不错的选择(例如:一个学校将所在城市网和附近的大学设成Sibling),因为网路上一层的Squid Server 服务对象较多,其硬件功能较强,离我们比较近,速度也比较快;万一要不到资料,我们还可以自己上Internet 去拿。那什麽时候设Parent?当您的出口只有一个,或上一层Squid Server 拿不到资料,自己也一定拿不到,只好将上一层Squid Server 设为Parent。
分享到:
相关推荐
Squid的工作原理主要包括以下几个关键点: 1. **缓存机制**:Squid的核心功能是缓存。当客户端(如浏览器)向Squid发送HTTP请求时,Squid会检查请求的目标资源是否在本地缓存中。如果存在,就直接返回给客户端,...
**SQUID原理** SQUID的核心功能是作为HTTP代理服务器,它通过缓存互联网上的静态内容(如图片、CSS、JavaScript文件等),减少对原始服务器的请求,从而加快本地用户访问速度。当一个请求到达SQUID时,它会检查缓存...
Squid的基础概念是了解其工作原理的关键。它充当了客户端和互联网之间的中介,接收用户的HTTP和HTTPS请求,然后缓存这些请求的结果。如果后续的用户请求相同资源,Squid可以从本地缓存中快速提供,而无需再次从远程...
深入研究"**squidb-master**"源代码,我们可以了解到Squidb的内部工作原理。首先,Squidb的表定义是用Java类来表示的,这使得表结构可以与代码紧密集成,易于理解和维护。其次,Squidb的查询语言(SquidQL)提供了...
通过阅读这本书,读者可以深入了解 Squid 的工作原理,并掌握如何有效地部署和管理 Squid 代理服务器,以提升网络性能和安全性。 总的来说,Squid 是一个强大且灵活的工具,无论是在企业网络环境中还是大型数据中心...
2. **内容过滤**:Squid可以设置规则来限制或阻止特定类型的网络流量,如广告、恶意软件或非工作相关的网站,这对于企业网络管理和家庭网络安全非常有用。 3. **访问控制**:通过配置访问控制列表(ACL),Squid...
在学习Squid的过程中,首先你需要了解基本概念,如代理服务器的工作原理、缓存机制以及HTTP协议。代理服务器作为客户端和服务器之间的中介,可以减少直接访问互联网的请求,从而降低网络延迟和带宽消耗。缓存机制则...
对Squid源代码进行深入分析有助于我们理解其内部工作原理,优化性能,或者根据特定需求进行定制化开发。 在Squid源代码中,我们可以发现以下几个关键知识点: 1. **网络通信机制**:Squid采用事件驱动模型,如I/O...
1. **基本概念**:了解代理服务的基本原理,Squid 作为代理服务器,接收客户端请求并代表其与目标服务器交互,缓存返回的内容以加快后续请求的响应速度。 2. **安装与配置**:在 Linux 系统上,可以使用包管理器...
squid教程 Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。
- **diskd存储机制**:diskd与aufs类似,但工作原理不同,也提供了如何监控的方法。 - **coss存储机制**:coss存储机制的特点和使用方法。 在文件中还提到了译者彭勇华先生,他在维护Squid服务器方面有丰富经验,并...
#### 二、Squid Cache 工作原理 Squid 作为一个代理服务器,其主要工作流程如下: 1. **用户请求**:用户通过浏览器向 Squid 发送 HTTP 请求。 2. **缓存检查**:Squid 收到请求后首先检查本地缓存中是否有该资源...
#### 三、SQUID的工作原理 1. **约瑟夫森效应**:SQUID的核心是约瑟夫森结,这是一种由两个超导体之间通过一个非常薄的绝缘层连接而成的结构。当电流通过这种结构时,即使在没有外部电压的情况下,也会有电流流过,...
本章将解释缓存的工作原理、缓存策略以及如何优化磁盘空间的使用。理解这部分内容有助于提升Squid的缓存效率,减少对原始服务器的请求次数。 第8章“高级磁盘缓存主题”则进一步扩展了第7章的内容,包括更复杂的...
Squid 是一个强大的开源代理服务器,广泛用于网络缓存和流量控制。...通过阅读这份详尽的“Squid中文文档”,读者能够全面了解Squid的工作原理,掌握其配置与管理技巧,从而在实际工作中更好地利用Squid优化网络环境。
在源代码分析中,我们可以深入理解其工作原理和内部机制。 源代码版本 3.5.1 是 Squid 的一个稳定版本,发布于2014年,包含了当时的最新特性和改进。这个版本提供了许多重要的功能,如缓存策略优化、SSL/TLS 加密...