网络应用

网络基础概念

什么是IP地址

就好比现实生活中的地址,IP地址的作用就是表示某台设备在网络中的位置。知道了一台设备的IP地址,你就可以请求访问它。一台接入网络的设备可以用有一个IP地址,也可以拥有多个IP地址(就好比人们在现实世界中可以有多个住址),但每个IP地址都是独一无二的,同一个网络中不能出现相同的两个IP地址。IP地址由四个数字组成,每个数字介于0至255之间,数字之间用“.”连接。(若无特别声明,本文所指的IP地址均为IPv4地址。)所有的IP地址组合,位于0.0.0.0到255.255.255.255之间。

什么是路由

路由的作用是为其他设备分配IP地址,大多数情况下会分配内网IP段的地址(如10.1.x.x, 192.168.x.x)。分配到内网IP的设备并不直接与外界相连,也不能直接上网,但可以互相连接(就是我们常说的局域网)。不过路由本身可以作为一台普通设备接入互联网。所以,局域网中的设备如果想要访问互联网,可以通过路由转发。

什么是公网,什么是内网?

通常来讲,公网指的就是互联网/广域网。内网泛指由路由建立起来的局域网。接入公网的设备可以通过公网IP相互访问,接入同一局域网的设备也可以通过内网IP相互访问。不同的网络之间是相互独立的。比如,公网设备不能直接访问某一内网下的一台设备;内网A中的设备也无法直接访问内网B中的设备。路由可以将相互独立的网络连接起来:比如,路由创建了内网1,自身接入了公网,则内网1的设备可以通过路由转发访问公网;或者,创建内网1的路由本身接入了内网2,则内网1的设备可以通过路由转发访问内网2。

什么是端口

在前文我们已经谈到,一台设备可以拥有一个IP地址,也可以拥有多个IP地址。不过,大多数情况下,每台设备都只有一个IP地址。那么,一部只有一个IP地址的电脑,是怎么做到同时浏览网页、发邮件、通过网盘客户端下载文件,以及把资料上传云端的呢?每个跟网络相关的进程都会用到设备的IP地址,然而它们却不会互相冲突,这是因为不同进程使用的网络端口不同。每个IP地址都拥有65536个端口(X.X.X.X:0-65535),不同的进程默认使用不同的端口(比如,浏览网页默认使用80端口和443端口,电子邮件服务使用25端口,ftp文件共享使用21端口,smb文件共享使用445端口...),从而避免了“多个进程抢一个IP”的问题。

路由端口转发

一个局域网下的设备,如果想要访问外界,则需要经过路由转发。同理,位于公网的设备如果想要访问一个局域网下的设备,也需要先访问该局域网的路由,再由路由转发给局域网下的目标设备。为了方便局域网设备上网,默认情况下局域网设备想经过路由访问外界都是允许的;然而出于安全考虑,外部设备想要访问局域网设备的请求,都会被路由拦截(最基本的防火墙)。不妨以家用路由器为例,连接了路由器的手机(处于内网下)可以正常上网(访问外网),但路由器会帮手机挡下来自外界的互联网攻击。

不过,有时我们确实需要从外部访问局域网设备。(比如,在家中搭建了个人云端,或者是监控系统,想用手机实时访问。)这时,就需要在路由手动指定放行规则(放行规则以端口为单位),将外部对路由某一端口的访问请求转发给内网某一设备的某个端口。举个例子,我希望在自己家中的电脑上搭建一个网站。假设该电脑的内网IP为192.168.1.2,路由的公网IP为58.58.58.58,考虑到网站服务只需要用到80端口和443端口,那么我只需要在路由上添加两条放行规则:58.58.58.58:80——192.168.1.2:80,58.58.58.58:443——192.168.1.2:443。之后,我只要从外界访问我的路由器58.58.58.58:80(或是58.58.58.58:443),路由就会自动把我的请求转发给内网下的电脑的80端口(或是443端口),该端口对应着电脑上运行的网站服务器进程,于是我就成功实现从公网访问内网设备上的网站了。

以上介绍的通过放行端口并将请求转发给特定内网设备来实现对内网访问的操作,被称为路由端口转发。

内网穿透

上段介绍的路由端口转发,可谓是最简单直接的实现由外界访问局域网的方法了。不过想通过配置端口转发来访问内网设备,有几个前提条件。一,你要拥有路由的管理权限;二,你的路由需要接入公网(如果你的路由本身都处在一个大局域网下,那即便是配置了端口转发,你也仅仅能在那个大局域网中实现对你内网设备的访问,而无法做到从公网访问内网设备)。在以上条件无法达成的情况下(比如你在使用校园网或公司网络等公共网络时,或是宽带运营商没有为你提供公网IP时),我们就需要曲线救国的办法了。这些办法被统称为内网穿透。

其中比较成熟的解决方案是反向代理。我们知道,默认情况下路由会阻挡外来的访问请求,但是,内网设备对外部的访问请求是允许的。所以,假如是内网设备主动访问外部设备并成功建立了连接,我们就绕过了路由防火墙。所谓反向代理,就是通过程序让内网设备不断地将自身信息主动发送给一个外部服务器,此实访问该外部服务器,就能接收到内网设备主动发送出来的信息。也就是说,你可以花钱租用一台服务器,在服务器上运行反向代理软件的服务端,再在内网设备上运行方向代理软件客户端,确保配置信息正确,就可以在外界访问你的内网设备了。本文推荐使用的反向代理软件是frp,该软件免费、开源、高效,且配置方法跟路由端口转发非常相似,大家可以点击链接前往其官网了解详情。

回复

This is just a placeholder img.