一起学翻墙

我是学理科的,在那些连导数都不懂的文科生面前,就显得特别的高深。然而从历史的角度来看,理科生不过是近几百年来,尤其是牛顿爵士之后才兴起的一种学生。在这之前,世界似乎完完全全掌握在文科生手里。

不过要我说,在中国历史上,文科生们不过是统治思想的提供者和践行者,他们权力的最终来源,其实还是那些擅长砍杀的武装贵族们。

问题在于,我们今天面对的这个墙呢,既不是文科生建的,也不是武装贵族们建的,而是由理科生们建的。终于,理科生们也尝到了成为统治工具的强烈优越感。所谓翻墙,就是一帮理科生跟另一帮理科生战斗的过程。

面对墙,文科生们失去了生气。失去了发声的渠道,一纸文采又有何用?公知无口,不如要饭的。

面对墙,武装贵族们争抢着加固。若无这高耸入云的碉堡,岂不让老百姓把家丑都看遍了?

在这场以墙为中心的政治斗争中,理科生成为了决定双方命运的裁判兼运动员。那个叫什么计算机科学的玩意儿,武装贵族不屑学,文科生们学不会,最后还是把焦点挪到了理科生身上。

数据包

英语所谓packet者,包也。

以访问油管(youtube)为例,你的电脑要向油管发起一个http请求,告诉油管你需要它的主页。

所谓http请求,就是将一段具有规定格式(即http格式)的、里面记载了你希望油管返回给你的具体页面等一系列相关的信息的文字,发送给目标服务器(即此例中的油管的服务器)。油管收到这些文字后,按照http协议规范进行读取,就可以取得这些信息,并根据你的要求,把相应的网页(比如此例中的主页)以http响应(同样具有规定格式)的形式传送给你。这一来一回的过程,就是一次http通信。

http通信在逻辑上(概念上、形式上)是一来一回,它底下却是把需要发送和接收的文字,切分成一个一个的字节,再通过TCP协议传送给目标服务器的。

TCP协议在逻辑上是接收和发送字节,它底下却是把需要发送/接收的字节,打包成一个一个的数据包,再通过IP协议传送给目标服务器的。

IP协议在逻辑上……

如果再往下说下去,难免涉及具体的操作系统、网卡驱动、网卡硬件是怎么处理IP和MAC协议、怎么通过在铜导线中传送高低电平来表示0和1……甚至连麦克斯韦方程都要出来跳一段。总之,像上网这种明明很简单的事情,被理科生搞得很复杂,普通人只有懵逼的份。这也是为什么网络工程在大学里要设成一个独立的专业。

别急,急也没用;你大学计算机基础多少分啊?在这儿急?

从你的电脑到油管的服务器,中间要经历几十台不同的设备,几千公里的网线(其中大部分是光纤)。这些设备在正常情况下,会把由你送去的数据包,按照包里所写的要求,向它们认为正确的方向转发。

看,这是你发出的IP数据包:

请把我送去:77.153.128.46(油管服务器)
内容:请把你们(即油管)的主页返回给我,谢谢

正常的设备看到这个数据包,是这么反应的:

你要去77.153.128.46是吧?好,我看看走哪条路线到77.153.128.46最快,帮你把包送(转发)过去。

于是下一个设备就会收到你的数据包,并作出类似的反应。经过几十台这样的设备,你的数据包最终抵达了油管;而来自油管的数据包又会走一条类似的路径,辗转抵达你的电脑。于是你就可以欣赏郭先生的脱口秀啦!

当然,这一切都是北京奥运之前的事情了。

路由设备

帮你转发数据包的设备,一般统称路由器,它们的工作就是像上面说的那样,按照数据包里所指定的目标地址,把数据包从它认为最合适的路线转发出去。

不过,上文说的是正常的设备,这种设备在正常的国家见得比较多。而中国是一个不太正常的国家,所以自然也就会有一些不太正常的路由设备,它们看到你的数据包之后,是这么反应的:

你要去77.153.128.46是吧?等等,这好像是油管的IP地址,你这完全不符合社会主义核心价值观呀。

然后转手就把你的包丢进了垃圾桶,造成这次http请求石沉大海,也就是常见的timeout(超时)错误。

如果这个路由设备参加过政府组织的网评员培训,那么它除了把你送来的包扔掉,还可能会伪装成油管,把一个新的包给你送回去:

请把我送去:(你的IP地址)
内容:不好意思,今天油管遇到了技术故障,必须终止服务

于是你的电脑信以为真,也就是常见的conn_reset(连接重置)错误。

在出国的路线上布置这些不太正常的路由设备,就组成了所谓的墙。

file: fanqiang.md

last modified: 2017-10-31 04:13