用现实生活打个比喻就行了
代理,实际上只是个转发者,你把数据交给它,它帮你再把数据交给目的地。
现实生活的对应可以是,房屋中介,你把租房买房请求(数据)交给他,中介帮你联系房东(数据到达目的地)。
隧道,仅限于你和沟通对象之间建立起传输管道(多数是加密的),交换的数据仅限于你和对方。
现实生活的对应非常多,比如水管。水管把水从楼顶水池输送到洗衣机。
你把数据交给中介的时候,可以经过隧道,也可以不经过隧道直接明文传送。
你会觉得混淆,是因为有些程序既建立隧道,又干了代理的活。
比如 ssh -L 这条命令,在建立完 SSH 隧道后,SSH 服务器端会同时自动变成代理,帮你转发数据。
想要清楚分辨出哪些是隧道,哪些是代理,那就必须学一学网络基础才行。
以 VPN 为例,如果亲手按照教程来操作过,就知道建立过程中需要手动开启防火墙的 NAT 功能。
所以,实际上 VPN 干的活是:
VPN 程序本体只负责建立隧道,把收到的数据交给防火墙;
使用者开启防火墙的 NAT ,由于防火墙负责转换地址、转发数据;
防火墙把收到的数据交给 VPN 程序;
VPN 程序把数据交回给用户。
(在这里,隧道两头的沟通对象分别是:用户与服务器的防火墙) |