“透明”与“非透明”之间的歧义
在准备答辩之余,翻了翻以前看过的书。发现了一些想起来会会心一笑的地方。
比如,在《用 TCP/IP 进行网际互连》第一卷 HTTP 的那一章,对代理服务器有如下阐述:
有两种形式的代理服务器存在:非透明的(nontransparent)和透明的(transparent)。正如它们的名字所暗示的,非透明服务器对用户来说是可见的,也就是说,用户必须配置浏览器来联络一个代理,而不是与原始资源所在的服务器联络。透明代理不需要对浏览器的配置进行任何改动。事实上,透明代理会检查所有通过代理的 TCP 连接,并拦截到达 80 端口的任何连接。无论是哪一种情况,代理都会将万维网页面进行缓存,然后从缓存中取出页面,以回答后来的请求。
其实这段话本来很浅显易懂,本意就是说代理服务器作为浏览器和目标服务器的中介,根据用户是否可以察觉或者是否必须显式配置可以将其分为两类:透明的和非透明的。
但当年读到这里时,总会觉得很别扭。总要停下来想想到底是“透明的”表示对用户可见还是“非透明的”表示对用户可见,以及为什么要这么命名。因为书中的“透明的”和我意识中的“透明的”意思刚好相反,在书中,“透明的”就好像是空气,所以用户看不见;而我看到“透明的”总会本能的想起一句“整个选举过程公开、透明…”,在这个语境里,“透明”的意思(注意,这里说的是本意,不涉及实际情况如何)刚好是整个选举过程是对人民可见的,所以潜意识里我就将“透明的”和“可见”绑定在一起了。进而导致每次无论我把 HTTP 看的多么顺畅,到“透明代理”这里总会卡一下,好奇为什么要把”对用户可见“说成是非透明的。忍俊不禁啊。
其实两者都没错,关键是“可见”这个词是针对谁而言。”透明“或”不透明“一般是用来修饰一个介质的,如果我们把这个介质比作一个箱子的话,那么对选举而言,“可见”与否针对的是这个箱子里面的东西,如果是透明的,那么里面的东西自然就会被大家看到,如果箱子是不透明的,那么就是所谓的“黑箱操作”了;对代理服务器而言,“可见”与否针对的是这个箱子本身而不是箱子里面的东西(箱子里面的东西当然就是目标服务器了),如果是这个箱子是透明的,那么这个箱子对我们就是不可见的,如果它是非透明的,自然这个箱子就是可见的。