业余网络知识杂记

周末在家无聊,突然想到昨天在公司跟同事聊天的时候说到内网和公网,自己看似知道却不是很清楚,所以今天在网上搜索了一番,牵引这么多业余知识,并将其记录。

(1)ADSL是什么?

        通常我们家拉的电信或者网通的网线通常都称之为adsl上网,我们习惯称为adsl拨号上网。其实,也就是一根电话线,然后电话线经过ADSL终端(因为和传统的调制解调器(Modem)类似,所以也被称为“猫”来连接电话线路。

       它因为上行和下行带宽不对称,因此称为非对称数字用户线环路。它采用频分复用技术把普通的电话线分成了电话、上行和下行三个相对独立的信道,从而避免了相互之间的干扰。即使边打电话边上网,也不会发生上网速率和通话质量下降的情况。



(2)网络地址转换(NAT)

网络地址转换(Network Address Translation)简称为NAT,是将IP数据包包头中的IP地址转换为另一个IP地址的协议。当IP数据包通过路由器或者安全网关时,路由器或者安全网关会把IP数据包的源IP地址和/或者目的IP地址进行转换。在实际应用中,NAT主要用于私有网络访问外部网络或外部网络访问私有网络的情况。NAT有以下优点:

  • 通过使用少量的公有IP地址代表多数的私有IP地址,缓解了可用IP地址空间枯竭的速度。
  • NAT可以隐藏私有网络,达到保护私有网络的目的。

私有网络一般使用私有地址,私有地址不会出现在共有网络上,RFC1918规定的三类私有地址如下:

  • A类:10.0.0.0 - 10.255.255.255(10.0.0.0/8)
  • B类:172.16.0.0 - 172.31.255.255(172.16.0.0/12)
  • C类:192.168.0.0 - 192.168.255.255(192.168.0.0/16)

上述三个范围的IP地址不会在因特网上被分配,因而可以不必向ISP(Internet Service Provider)或注册中心申请,而在公司或企业内部自由使用。

NAT的基本转换过程

安全网关执行NAT功能时,处于公有网络和私有网络的连接处。下图描述了NAT的基本转换过程:

如上图所示,安全网关处于私有网络和公有网络的连接处。当内部PC(10.1.1.2)向外部服务器(202.1.1.2)发送一个IP包1时,IP包将通过安全网关。安全网关查看包头内容,发现该IP包是发向公有网络的,然后它将IP包1的源地址10.1.1.2换成一个可以在Internet上选路的公有地址202.1.1.1,并将该IP包发送到外部服务器,与此同时,安全网关还在网络地址转换表中记录这一映射。外部服务器给内部PC发送IP包1的应答报文2(其初始目的地址为202.1.1.1),到达安全网关后,安全网关再次查看包头内容,然后查找当前网络地址转换表的记录,用内部PC的私有地址10.1.1.2替换目的地址。这个过程中,安全网关对PC和Server来说是透明的。对外部服务器来说,它认为内部PC的地址就是202.1.1.1,并不知道10.1.1.2这个地址。因此,NAT“隐藏”了企业的私有网络。

安全网关的NAT功能

安全网关的NAT功能将内部网络主机的IP地址和端口替换为安全网关外部网络的地址和端口,以及将安全网关的外部网络地址和端口转换为内部网络主机的IP地址和端口。也就是“私有地址+端口”与“公有地址+端口”之间的转换。

安全网关通过创建并执行NAT规则来实现NAT功能。NAT规则有两类,分别为源NAT规则(SNAT Rule)和目的NAT规则(DNAT Rule)。SNAT转换源IP地址,从而隐藏内部IP地址或者分享有限的IP地址;DNAT转换目的IP地址,通常是将受安全网关保护的内部服务器(如WWW服务器或者SMTP服务器)的IP地址转换成公网IP地址。

(3)端口映射

 参考地址:https://blog.csdn.net/songshiMVP1/article/details/51519767

对于初学者而已,我们学习的网络编程(如TCP,UDP编程),我们通常都是在局域网内进行通信测试,有时候我们或者会想,我们现在写的内网网络数据和外网的网络数据有什么不同,我们内网的数据是如何走出外网的呢?

再者,我们大多人都是使用宽带上网,结果发现,A 和 B 的局域网 IP 都是192.168.31.11,当他们都访问百度浏览网页时,百度服务器回复数据时,如何区分是给 A 还是给 B 呢?

  

公有 IP 和私有 IP 的区别(也是本文的出发点)

首先,我们需要了解一下什么是公有 IP 和私有 IP ?

公有地址(Public address):由 Inter NIC(Internet Network Information Center 因特网信息中心)负责。这些 IP 地址分配给注册并向Inter NIC提出申请的组织机构,公有 IP 全球唯一,通过它直接访问因特网(直接能上网)。

私有地址(Private address):属于非注册地址,专门为组织机构内部使用,说白了,私有 IP 不能直接上网。

①查看共有IP和私有IP的方法?

登录网站http://www.ip138.com/ 查看当前所在的公网地址。如图:


②查看运营商给我路由器分配的IP地址?

登录192.168.1.1,查看WAN口


③查看本机的局域网地址?

打开cmd输入ipconfig查看,找到使用上网的网卡,查看信息,本机是使用的无线网。


家里面通过路由器分出来的 IP 是私有 IP(局域网 IP),大家可能会疑问,我们可以上网啊,怎么会是私有 IP 呢?租用(申请)公有 IP 是需要钱的。 运营商买了一些公有 IP,然后通过这些公有 IP 分出来,再分给一个一个的用户使用。这个过程有点类似于,我们去安装了宽度,通过路由器分出几个 IP,让好几个人都能上网,当然运营商通过公有 IP 分出来的过程肯定比这个复杂多了。所以,我们平时上网用的 IP 是私有 IP,真正拥有公有 IP 的是运营商(当然,我们可以租用一个公有 IP )。所以,A 家庭的局域网 IP 和 B 家庭的局域网 IP 相同很正常,但是,最终 A 和 B 能上网(数据走出去)还是通过运营商的公有 IP,毕竟,公有 IP 的资源有限,这一片区域的用户使用的很有可能(实际上就是这样的)是同一个公有 IP,这样的话,又回到前面的问题,假如 A 和 B 的局域网 IP 相同(192.168.31.11),当他们同时访问百度服务器的时候,百度服务器如何区分哪个是 A,哪个是 B 呢?

  

端口映射

经常在网上听说架服务器要用到端口映射,那么何谓端口映射?
假设现在有一个局域网,主机为A,局域网内除了主机外,还有一台机器为B,B机器当然是通过主机A上网的。另外还有一台可上网的机器为C,与A和B并不在一个局域网内。通常情况下,C机器只能访问到A主机,而无法穿透局域网,访问到B。而通过端口映射后,当C机器访问主机A的指定端口时,主机A上的“端口映射器”就起作用了,它会把指定端口上的数据转到局域网内另一台机器的指定端口上,从而实现访问内网机器的目的。
看来,端口映射可以解决某些外网用户访问内网资源的问题
如果你是ADSL、CABLE MODEM或光纤等宽带接入用户,想在网吧或公司内部建一个游戏服务器或WEB服务器,并且能够让互联网上的用户访问你的服务器,那么你就会遇到端口映射问题。
通常情况下,路由器都有防火墙功能,互联网用户只能访问到你的路由器WAN口(接ADSL线口),而访问不到内部服务器。要想让外面用户访问到服务器,那么你就要在路由器上做一个转发设置,也就是端口映射设置,让用户的请求到了路由器后,并能够到达游戏服务器或WEB服务器。这就是端口映射。
目前,所有的宽带路由器都有端口映射功能,只是各个路由器厂商所取功能名称不一样,有的叫虚拟服务器,有的叫NAT设置。
端口映射设置很简单,例如要映射一台IP地址为192.168.1.254的WEB服务器,只需把服务器的IP地址192.168.1.254和TCP端口80填入到路由器的端口映射表中就OK了。
 
 
什么情况使用端口映射?
现在绝大多数网吧和lan网络都只有一个固定IP,在网吧内的客户端 你可以架设cs服务器,但是对外网来说,你只是
一个固定IP网络的一部分,是不可能访问到的。如何把外网的IP映射成相应的内网IP地址,就是我们本课要讲的内容了

接下来,给大家介绍一下什么是端口映射?

端口映射是 NAT 的一种,它将外网主机的 IP 地址的一个端口映射到内网中一台机器,提供相应的服务。当用户访问该 IP 的这个端口时,服务器自动将请求映射到对应局域网内部的机器上。

现在市场上的家庭路由器都具备 NAT 功能,也可以实现端口映射。下图为小米路由器的端口映射设置图:

  

我们平时经过路由器,通过宽带,最终去到运营商那边,数据是从运营商出去,最终数据是回到运营商那边,运营商再把数据发送到用户的电脑。

路由器,至少有两个端口:WAN 口和 LAN 口。

WAN:接外部 IP 地址用,通常指的是出口,转发来自内部 LAN 接口的 IP 数据包,这个口的 IP 是唯一的。

LAN:接内部 IP 地址用,LAN 内部是交换机。

这里,我们简化这个过程,我们把运营商当做一个 NAT 设备。

  

为了方便大家理解,我们把 IP 的转化方向反过来分析(准确来说,公网转局域网)。

A 电脑的 IP 是局域网 IP(192.168.31.11),这个 IP(192.168.31.11)是从路由器的 lan口分配的。

当我们上百度的时候,经过路由器的 wan口,进行相应的IP、端口转化:192.168.31.11:80 -> 10.221.0.24:8080,所以,从 wan口出去的地址为:10.221.0.24:8080。

  

最后,经过运营商,运营商那边会做相应的端口映射(而且是动态端口映射),子网 IP(10.221.0.24:8080)转化为公网 IP(128.0.0.1:8888),通过这个公网 IP 去访问百度服务器。

  

同理,B 的过程也是一样。通过这样的层层端口映射,最终保证地址(IP + 端口)的唯一性。A 和 B 访问百度服务器,尽管它们的局域网 IP 是一样的,但是最终它们访问百度的地址(IP + 端口)是唯一的,所以,百度服务器回复时,原路返回时能够区分到底给谁回。

如何让外网能够访问自己写的网络程序(服务器)

首先,我们需要在运营商那边申请(租用)一个公有 IP (长城宽带一年需要 2000 元左右),假如这个公有 IP 为:128.0.0.123。

假如,我们写的服务器如下:

  

接着,找个 NAT 设备进行相应的端口映射,家庭路由器都有这个功能。这里以小米路由器为例:

  

映射关系如下:

  

其他人写客户端程序时(电脑能上外网),只要指定目的 IP 地址为 128.0.0.123,端口为 8888,通过这个地址,就能找到192.168.31.248:8080,因为这两者已经建立好映射,如上图,这样,我们的服务器就能收到数据。

最后,可能会说,我们上网也没有设置端口映射也可以上网,为什么?

       端口映射分为动态和静态 
 动态端口映射:内网中的一台电脑要访问新浪网,会向NAT网关发送数据包,包头中包括对方(就是新浪    网)IP、端口和本机IP、端口,NAT网关会把本机IP、端口替换成自己的公网IP、一个未使用的端口,并且会记下这个映射关系,为以后转发数据包使用。然后再把数据发给新浪网,新浪网收到数据后做出反应,发送数据到NAT网关的那个未使用的端口,然后NAT网关将数据转发给内网中的那台电脑,实现内网和公网的通讯.当连接关闭时,NAT网关会释放分配给这条连接的端口,以便以后的连接可以继续使用。 

动态端口映射其实就是NAT网关的工作方式 


静态端口映射就是在NAT网关上开放一个固定的端口,然后设定此端口收到的数据要转发给内网哪个IP和端口,不管有没有连接,这个映射关系都会一直存在。就可以让公网主动访问内网的一个电脑 
NAT
网关可以是交换机、路由器或电脑。 
现在很多关于端口映射的文章都严重的误导人,许多不懂的人把端口映射软件用在自己的电脑上,其实端口映射是要在网关上做的!!!而网关很少是电脑,大部分人也不能控制网关,所以那几个端口映射的软件基本没用。

详细更多请参考 http://blog.51cto.com/luoyuehansong/66612

(4)交换机和路由器区别

引用知乎上面的一句话来形容:

       路由器就像是出租车,上车后司机需要知道你的目的地(IP地址),然后司机来负责选择路线到达目的地,到达目的地的路线可能根据实际的交通情况有所变化。

       交换机就像地铁,从A到B的路线是固定的,只要你选择了到达地址(MAC),你就只能乘坐某条固定的路线,地铁司机也不会问你去哪。

工作层次不同:
交换机主要工作在数据链路层(第二层)
路由器工作在网络层(第三层)。
      转发依据不同:
交换机转发所依据的对象是:MAC地址。(物理地址)
路由器转发所依据的对象是:IP地址。(网络地址)
两者都是维护着一张map表而已。交换机维护的是端口-MAC地址的映射表,局域网的那些主机对它而言,就是一个个MAC物理地址。路由器维护的是目地IP地址-网关IP地址的映射表,即通常说的路由表。对于经过的每一个网络包,路由器要做的就是,为它找到下一跳的网关IP地址,然后填入网关的MAC地址送过去。路由协议众多,籍此分享路由表信息,一个路由器可以探知整个网络的拓扑结构。
      主要功能不同:
交换机主要用于组建局域网,而路由主要功能是将由交换机组好的局域网相互连接起来,或者接入Internet。
交换机能做的,路由器都能做。
交换机不能分割广播域,路由可以。
路由还可以提供防火墙的功能。
路由配置比交换机复杂。


(5)

https://www.jianshu.com/p/b132713c37c7


(5)内网穿透TCP打洞









猜你喜欢

转载自blog.csdn.net/qq_31930499/article/details/80462058
今日推荐