大学还没毕业,刚出来实习,在搞网络安全的同时我连内外网网络数据包的走向,我都搞不明白怎么去搞安全,所以下面咱们一起学习网络数据包在内外网环境下是怎么进行流通的。
1.内网和外网的含义
内网:即所说的局域网,在局域网内每台主机的ip都不一样拥有互异性。但两个局域网内的内网ip可以有相同的 。
外网:即互联网,局域网通过一台服务器或是一个路由器,对外连接的网络,这个ip地址是唯一的。
2.内网环境下,数据流通
用ipconfig/all查到的IP是你本机的内网IP;在www.ip138.com上看到的是你连接互联网所使用的IP,即外网
在局域网中,每台电脑都可以自己分配自己的IP,这个IP只在局域网中有效。而如果你将电脑连接到互联网,你的网络提供商(ISP)的服务器会为你分配一个IP地址,这个IP地址才是你在外网的IP。两个IP同时存在,一个对内,一个对外。
你的内网的机子在上网时,都是在向网关发出请求,再由网关(一般为路由器)用外网IP转到INT网上,接受数据后,再分发到你的内网IP上 。
大致的含义:内网是局域网,在局域网里所有的ip不能重样。那么怎么组建内网,可以用到交换机(这块只说二层交换机,或者咱路由器中的LAN口内部就是交换机),当pc1往pc2的机子里发消息的时候,交换机通过ARP广播对交换机内每个口进行发包,来确认在内网环境下是否有目标IP的mac地址,这也就是内网环境。
3.那么到底计算机如何把数据包发出去的?
现在我们买的电脑想要去上网,电脑通过路由器,那么怎么去上网,原理是什么呢?
大致流程是:咱的电脑在上网时,都是在向网关发出请求,再由网关(一般为路由器)用外网IP转到INT网上,接受数据后,再分发到咱的内网IP上。
这块也涉及到了端口映射的相关知识,端口映射:大家想必用过虚拟机VMware的小伙伴们,应该见到过有桥接模式和NAT模式吧。
端口映射是NAT的一种,它的任务就是把外网主机的IP地址的一个端口映射到内网中的一台机器,提供相应的服务。当用户访问该IP的这个端口时,服务器自动将请求映射到对应的局域网内部的机器上。
现在的路由器基本上都具备有NAT功能,也可以实现端口映射。
接上上面流程,用户的电脑通过路由器,在通过宽带,最终去到运营商那边(也就是移动、联通),运营商有很多的信息塔,通过塔之间的传输,然后在把数据送回到用户最近的路由器上,在发送到电脑。
路由器的话,大家经常见到有两个口,一个口是WAN,一个是LAN,那么这两个分别的区别是:
1.WAN:接外部IP地址用,通常指的是出口,转发内部LAN接口的IP数据包,这个口大家可以看一下路由器只有一个,这也意味着这个口的IP是唯一的
2.LAN:接内部IP地址用的,LAN内部其实就是交换机的原理。
通过上面的阐述,你不难发现,在你用你电脑上网的时候,你电脑IP是192.168.31.11,是内网IP,他通过路由器的时候会进行端口映射,映射成路由器WAN口的IP地址
然后呢,当然你家的路由器肯定是中国移动或者中国联通或者中国电信牌子的运营商,运营商那边也会做相应的端口映射,他需要把你子网IP(10.221.0.24)转正公网ip(128.0.0.1),只有通过公网IP地址你才能去访问互联网,才能去百度服务器。
这就是A,B两台电脑访问互联网时候的IP地址转换图
为什么公网IP能访问互联网呢?
公有地址(Public address):由 Inter NIC(Internet Network Information Center 因特网信息中心)负责。这些 IP 地址分配给注册并向Inter NIC提出申请的组织机构,公有 IP 全球唯一,通过它直接访问因特网(直接能上网)。
那么有些好奇心重的同学,可能还会想到,百度,新浪等服务器恢复你数据的时候,你经过了层层映射,怎么能知道返回给我电脑呢?
其实你是经过层层映射的,这里假设你访问的是百度服务器,百度服务器收到你的数据包后,会返回给128.0.0.1这个公网IP地址,然后在通过建立好的NAT映射关系表去查询你的电脑。
想要深入了解的同学,可以去学习相关的端口映射关系表规则,这块不做阐述。
4.路由转发
上述,就是用户电脑访问外网的流程,其中有个关键的一层是路由器,那么路由器到底干了什么活在这个过程呢?那最主要的是路由转发。
路由转发是建立在路由表基础上进行的,当路由器收到一个数据包后,会与路由表中的路由信息相比对,如果能匹配对应的路由信息,那么就会将收到的数据包按照预定的路由信息发送出去,如果没有匹配的路由信息,那么该数据包会被丢弃掉。 假设有个快递从上海寄到北京,快递员取走包裹送到中转站,然后由中转站运输到下一个中转站,最终送达客户手中。
在学习计算机网络中,大家肯定了解了,OSI七层模型以及IP头部等知识。(TCP,UDP传输层封装的是端口信息,网络层IP封装IP信息,底下是IP头部格式的图片)
OSI七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
记忆的时候可以用一下这个口诀:物联网传会表应
言归正转,路由转发具体流程(概念):
当主机A发向主机B的数据流在网络层封装成IP数据包,IP数据包的首部包含了源地址和目标地址。主机A会用本机配置的24位IP网络掩码255.255.255.0与目标地址进行与运算,得出目标网络地址与本机的网络地址是不是在同一个网段中。当然也会跟路由表比对
如果是本地网络,直接转发给本地网内的目的主机。
如果不是将IP数据包转发到网关,当然在发往网关前主机A会通过ARP请求获得默认网关的MAC地址,由nat就将改变源地址的IP(原源地址的Ip地址改为了路由器的IP地址),路由器将数据包转发到相应的端口,进行通信。
A—–(B1-B2)—–(C1-C2)——-E
如上为例,B1和B2是路由器B上的两个接口,C1和C2是路由器C上的两个接口,A和E是PC,由主机A向主机E发送数据包,那么在主机A形成的数据包的目的IP就是E的IP,源IP就是主机A的IP地址,目标MAC地址就是B1的MAC地址,源MAC地址就是A的MAC地址
由A发给路由器B,B经过重封装后,源IP和目标IP是不变的,源MAC地址变成B2的MAC地址,目标MAC地址变成C1的MAC地址,封装完成发送给路由器C,路由器C接收到数据包后和B做的操作是一样的,源IP和目标IP的不变的,源MAC地址变成C2的MAC地址,目标MAC地址变成主机E的MAC地址,然后发送给主机E,这样E就收到了这个数据包,当回复数据包的时候就是把收到的数据包的源IP地址(主机A的IP地址)和源MAC地址(接口C2的MAC地址)作为他的目标IP和目标MAC地址
补充:mac地址是在同一个广播域有效,那么去了另一个广播域(网段)MAC地址要更换。