第四层交换机能够检测出第四层地址(IP地址和TCP端口号),并据此来选择路由。比如,一台第四层交换机可以将所有目的为端口80的Web流量都发送到某个代理上去。在下图中,编写交换机程序,将MAC3上所有端口80的流量都转发到MAC6(代理缓存)上去。MAC3上所有其他流量都会被转发到MAC5上去
通常,如果缓存中有所请求的HTTP内容,而且是新鲜的,那么就由代理缓存来提供内容。否则,代理缓存就会代表客户端向此内容的原始服务器发送一条HTTP请求。交换机会将端口80的请求从代理(MAC6)发送给因特网网关(MAC5)
支持MAC转发的第四层交换机通常会将请求转发给几个代理缓存,并在它们之间平衡负载。类似地,也可以将HTTP流量转发给备用HTTP服务器。因为MAC地址转发只是点对点的,所以服务器或代理只能位于离交换机一跳远的地方
【IP地址转发】
在IP地址转发中,交换机或其他第四层设备会检测输入分组中的TCP/IP地址,并通过修改目的IP地址(不是目的MAC地址),对分组进行相应的转发。与MAC转发相比,这么做的优点是目标服务器不需要位于一跳远的地方;只需要位于交换机的上游就行了,而且通常第三层的端到端因特网路由都会将分组传送到正确的地方。这种类型的转发也被称为NAT(Network Address Translation,网络地址转换)
但还有一个问题,就是对称路由。从客户端接受输入TCP连接的交换机管理着连接,交换机必须通过那条TCP连接将响应回送给客户端。这样,所有来自目标服务器或代理的响应都必须返回给交换机
有以下两种方式可以控制响应的返回路径
1、将分组的源IP地址改成交换机的IP地址。通过这种方式,无论交换机和服务器之间采用何种网络配置,响应分组都会被发送给交换机。这种方式被称为完全NAT(full NAT),其中的IP转发设备会对目的IP地址和源IP地址都进行转换
这样做的缺点是服务器不知道客户端的IP地址,那种需要认证和计费的Web服务器无法获知客户端的IP地址
2、如果源IP地址仍然是客户端的IP地址,就要确保(从硬件的角度来看)没有从服务器到客户端的直接路由(绕过交换机的)。这种方式有时被称为半NAT(half NAT)。这种方法的优点是服务器知道客户端的IP地址,但缺点是要对客户端和服务器之间的整个网络都有某种程度的控制
【网元控制协议】
NECP(Network Element Control Protocol,网元控制协议)允许网元(NE,路由器和交换机等负责转发IP分组的设备)与服务器元素(SE,Web服务器和代理缓存等提供应用层请求的设备)进行交互。NECP并未显式提供对负载均衡的支持,它只是为SE提供了一种发送负载均衡信息给NE的方式,这样NE就可以在它认为合适的情况下进行负载均衡了。与WCCP一样,NECP也提供了几种转发分组的方式:MAC转发、GRE封装和NAT
NECP支持例外。SE可以决定它不能为某些特定的源IP地址提供服务,并将这些地址发送给NE。然后,NE可以将来自这些IP地址的请求转发给原始服务器
下表描述了NECP报文
代理重定向到目前为止,我们已经讨论过通用的重定向方法了。出于潜在的安全考虑,内容也可能需要通过各种代理来访问,或者网络中可能有一个客户端可利用的代理缓存,因为获取已缓存的内容很可能要比直接连接到原始服务器快得多
但Web浏览器客户端怎么才会知道要连接到某个代理上去呢?可以用3种方法来判断:显式浏览器配置、动态自动配置以及透明拦截
代理可以顺次将客户端请求重定向到另一个代理上去。比如,没有缓存此内容的代理缓存可能会选择将客户端重定向到另一个代理缓存。这样一来,响应就会来自与客户端请求资源的地址不同的另外一个地址,所以,我们还会讨论几种用于对等代理——缓存重定向的协议:ICP、CARP和HTCP
【显式浏览器配置】
大多数浏览器都可以配置为从代理服务器上获取内容——浏览器中有一个下拉菜单,用户可以在这个菜单中输入代理的名字或IP地址以及端口号。然后浏览器的所有请求都可以发送给这个代理。有些服务提供商不允许用户配置普通浏览器来使用代理,它们会要求用户下载事先配置好的浏览器。这些浏览器知道所要使用的代理的地址
显式浏览器配置有以下两个主要的缺点: