有关NAT,私网IP怎么访问公网IP

这里我有必要先介绍两个头,生活在数据链路层的MAC头和生活在网络层的IP头,以及为啥他们要这样封装数据。

MAC头

1.以太网帧的内容很好理解,要找机器,需要目标MAC和源MAC;

2.类型两种一个是知道目标MAC正常封装数据帧发送;一个是不知道目标MAC需要先发送将包含目标IP地址的 ARP 请求,广播局域网所有主机找目标MAC地址然后再正常封装帧数据;

3.为了检测差错(比特差错0变1或者1变0)需要CRC循环冗余校验技术,底层是算法;

4.数据应该能理解吧,毕竟目的就是为了传输数据。

ARP角色如果不理解的可以看我的另外一篇文章:软件最需要知道的计算机网络这一篇就够了

IP头

扫描二维码关注公众号,回复: 10180867 查看本文章

1.版本号目前是 IPV4,还有在推广的 IPV6 呢,先指明了;

2.区分服务类型代表了当前包的处理优先级,内核会按照队列里面的优先级顺序来处理包;

3.标识,标志和片偏移,因为数据报长度如果超过网络的 MTU 则必须分片,这些都是和分片规则有关的;

4.生存时间TTL,我们经常会用ping来查询网络情况,ping使用的是ICMP协议,设置差错报文TTL生存时间就是用来帮助侦查网络情况的;

5.协议是标明的 TCP,UDP 协议,下一层是传输层总要告诉人家用哪一种协议,要不然人家接收到了一脸萌萌;

6.然后就是源IP和目标IP,目标IP是你要去的地方,对方接收数据返回结果的时候总要知道你在哪里,所以源IP稳稳的加上。

NAT(Network Address Translation,网络地址转换)

  1. NAT来源


    数据传输都是一去一回的,访问别人肯定要公网访问的,百度的域名和IP肯定都是交了钱租的公有的,可是我们这些老百姓如果每个设备都买个公网IP那我们岂不是要破产,买来了怎么配置还是个问题,我是个电脑小白咋办啊?物以稀为贵,以后如果 IPV6 普及了可能每个设备都能以白菜价租一个公网IP,但是IPV4的世界肯定不行。
    所以就有了划分子网,我们平时在家里公司所处的都是一个个局域网,连接的WIFI的IP地址大部分都是 192.168.xx.xx 的私有IP,可是问题来了,每天那么多人同时访问百度,私有IP大家可以自己随意配制的重复常有,百度的返回结果怎么找到你呢?因此用脚趾头也能想到肯定是有个人帮我们做了转化。
  2. NAT作用

    NAT分为 SNAT 和 DNAT,分别对应将私有IP转换成公网IP,以及将公网 IP 转化为私网 IP,一发一收。我们的 Wi-Fi 里面的机器也是组成了一个局域网,所有的设备需要共享这个路由器的公网IP,当我们问百度 “辣条是卫龙好吃还是绯旺好吃啊?” 的时候,在我们路由器的出口,会做一次SNAT将私网IP转化为这个公网IP。

    那么问题来了,百度回复你 “辣条都好吃” 的时候,DNAT 成哪一个私网IP呢?跑你妈电脑上去了可不就是一顿暴揍嘛,所以再发挥脚趾头的智慧就会猜测中间肯定有谁把访问记录了下来。
  3. Iptables防火墙

    iptables防火墙大家应该有耳闻,不知道 iptables 还没听过防火墙嘛是不,iptables 其实不是真正的防火墙,内核空间会有一个 netfilter,它是防火墙真正的安全框架。
    Netfilter具有NAT,数据包修改,数据包过滤的功能。其中他会做连接跟踪,将如下映射:
    <内部地址+内部端口>与<外部地址+外部端口>
    放在到一张表里面,其实就是地址伪装,将内部IP和端口伪装成公网IP和端口,百度返回数据的时候查一下表就有了。
    私有IP地址找机器,端口就是找到机器上面的应用程序,google 浏览器和火狐浏览器都是跑在机器上的一个应用程序,要找出是谁发问就看端口号了。

访问

知道了MAC头和IP头,以及NAT,别人发送一个网络包通过公网IP找到你所处的局域网之后,机器会怎么做呢,这里大家可以停顿先自行思考一下。

机器的思路是:

  1. 先看是不是找我这台机器,拿下它的MAC头看看,如果不是我的那么只是路过,拜拜
  2. 如果是我的MAC,收进来,再拿下他的IP头,判断他的IP
  3. IP如果不是我的,转发出去
  4. IP如果是我的,妥妥的是找我了,转发到三层传输层,上面再该干嘛干嘛
  5. 上面处理完之后,返回一个结果,将这结果发出去,别的机器重复这个判断过程


能力有限,如果有误欢迎私我指正。

发布了30 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_40898368/article/details/103104912
今日推荐