这里不讨论繁琐的概念,主要讨论一下,一个局域网怎样利用一个IP地址和公网互联。

涉及两个难点问题:

1.局域网中的一台主机 A(192.168.1.110)如何与外网服务器(20.173.12.22)通信?

2.服务器的返回数据包,是如何找到内网的客户端电脑A,并将数据传给电脑A上运行的程序p呢?

1.第一个问题:局域网中的主机A,如何与外网服务器(20.173.12.22)通信?

局域网中的主机A,想要访问外网服务器时,是通过NAT,将地址转换成外网地址。然后与服务器通信的。也即是说,外网的服务器,只知道与他通信的,也是一个拥有公网IP的地址。

这样问题自然就来了

2.第二个问题:那么服务器返回的消息之后,是如何知道是内网中那一台电脑发送的请求呢?

答案:通过端口来区分。

端口号是从0~65535的一个数字,每个局域网内的电脑在通过网关发出请求时,要分配一个端口号,IP虽然都给转换成了公网IP,但是端口却不同,这样就可以区分了。带上端口,就是为了服务器在返回消息时,知道要给谁。

问题又来了:

3.第三个问题:但是,局域网内的电脑发的请求,端口号会重复吗?允许重复吗?

答案:会重复。允许重复。

4.第四个问题:怎么办?

答案:局域网内的电脑发的请求,带的是局域网内部的"IP+端口号",IP是客户端电脑的IP,端口也是这台电脑的端口,在向外发请求时,NAT会重新给一个IP和端口号。这个IP就是整个局域网共用的公网IP,而端口则是临时生成一个,给这个请求。NAT设备内部,记录这个转换的映射表。到时候,可以根据这张表,来倒推原来的请求的内网IP和端口。虽然局域网内部的请求的源端口可能是一样,但是IP不一样,是可以区分清楚的。

5.第五个问题:那么同一台电脑上,不同的软件访问相同的网站,是否"IP+端口"会出现重复?

比如用谷歌浏览器,和IE浏览器访问同一个网站?

答案:不会。

首先有个概念要澄清。"IP+端口",有两对:一个是客户端,一般是我们自己局域网内的电脑;一个是服务端,一般是网站。我们客户端的“IP+端口”称为“源IP和源端口”,服务端的称为“目的IP和目的端口”。我们自己电脑上的软件占用的端口是“源”端口。“源”端口用于在服务器返回响应时,寻找目标程序所使用的端口。

不同的程序,在运行时,如果要访问网络,电脑会分配不同的端口。当两个软件同时使用相同的端口时,后打开的的那个软件会被电脑提示:“端口已被占”用而出错。

因此,不同的软件,软件自身始终是不同的端口。这个和访问的网站是否一样没有关系。

一般所说的 80端口,指的是服务端的Web服务运行在这个端口,不是我们的浏览器运行在这个端口。

以上总结一下:

局域网内的主机发请求时,会带上自己的【IP0+端口0】,走到NAT时,会将IP替换成公网IP1,并重新分配一个端口1给这个请求。当有了这个新的【IP1+端口1】之后,就可以访问外网服务器。服务器返回消息时,返回到NAT,NAT根据【IP1+端口1】找到当时局域网内的【IP0+端口0】,并发送到局域网内的目标机器(IP0)上,并发给对应的程序(端口0)。

6.那么问题又来了:局域网内电脑太多时,是否NAT的端口不够分配?

比如,局域网内有70000台电脑,大于65535了。

答:不错。这个时候,端口就不够了。一般情况下,是需要另一个公网IP的。不过,如果可以实现时分复用的话,应该还是可以的。

NAT局域网映射公网原理简述相关推荐

  1. P2P技术详解(一):NAT详解——详细原理、P2P简介(转)

    这是一篇介绍NAT技术要点的精华文章,来自华3通信官方资料库,文中对NAT技术原理的介绍很全面也很权威,对网络应用的应用层开发人员而言有很高的参考价值. <P2P技术详解>系列文章 ➊ 本 ...

  2. 015. P2P技术详解(一):NAT详解——详细原理、P2P简介

    http://www.52im.net/thread-50-1-1.html 这是一篇介绍NAT技术要点的精华文章,来自华3通信官方资料库,文中对NAT技术原理的介绍很全面也很权威,对网络应用的应用层 ...

  3. P2P通信原理与实现(C++),NAT,网络穿透原理

    1.简介 当今互联网到处存在着一些中间件(MIddleBoxes),如NAT和防火墙,导致两个(不在同一内网)中的客户端无法直接通信.这些问题即便是到了IPV6时代也会存在,因为即使不需要NAT,但还 ...

  4. 网络技术:NAT 网络地址转换及原理

    NAT 网络地址转换(NAT)技术的理论部分可以看博客--网络层--NAT.NAT 的功能大致为:在局域网中组织会为内部主机分配私有地址,当内部主机发送数据包到外部网络时私有地址就会自动转换为公有 I ...

  5. P2P技术详解(一):NAT详解——详细原理、P2P简介

    目录 1. IPv4协议和NAT的由来 2. NAT的工作模型和特点 2.1.NAT的概念模型 2.2.一对一的NAT 2.3.一对多的NAT 2.4.按照NAT端口映射方式分类 2.4.1全锥形NA ...

  6. NAT端口映射全攻略

    网外(Internet)访问代理服务器内部的实现方法 由于公网IP地址有限,不少ISP都采用多个内网用户通过代理和网关路由共用一个公网IP上INTERNET的方法,这样就限制了这些用户在自己计算机上架 ...

  7. HTTPS为什么可以穿越NAT端口映射设备?

    以下斜体部分是来自读者的问题 HTTPS为什么可以穿越NAT端口映射设备? 我的理解是:当一个TCP连接到达端口映射设备(比如防火墙)时,该设备从实现原理上可以看作是作为后端服务器和前端客户端之间的中 ...

  8. NAT和PAT的原理及配置

    文章目录 一.NAT 1.NAT概述 2.私有地址 3.NAT工作原理 4.NAT功能 5.NAT包含4类地址 6.NAT的实现方式 二.静态转换(Static Translation) 三.动态转换 ...

  9. NAT、PAT的原理及配置

    目录 一.NAT 1.私有地址 2.NAT工作原理 3.NAT功能 4.NAT配置命令 5.ACL访问控制表 二.PAT 1.PAT的作用: 2.PAT的类型: 3.NAPT的配置 4.Easy IP ...

最新文章

  1. 千万QPS毫秒响应:快手数据中台建设实践
  2. 1.08亿条在线赌场信息泄露,来源指向 ElasticSearch
  3. BCH半月热点事件回顾
  4. 训练AI来检测人类意图,扩大制造领域的人机协作
  5. oracle 存储过程(分析理解)
  6. (github标星9200+)《南瓜书》:周志华《机器学习》的代码实现
  7. android string 转成json对象_Android开发:生成桌面快捷方式是这样做的
  8. 运用扩展管理器完成flash图层的合并
  9. 部分排序算法c语言实现
  10. php file get contents 空,file_get_contents()函数为空
  11. ===,!==,==,!=的使用
  12. 文件操作--设置文件属性、获取文件属性
  13. sql怎么注销当前登录状态_4种方法教你获取Oracle数据库当前会话/进程的session id...
  14. 图片剪裁在线html,前端图片裁剪实战
  15. MATLAB颜色的使用
  16. 选择RAKsmart服务器要考虑什么因素
  17. DVE C++ 中批量注释快捷键 Ctrl + /
  18. 基于TPS(Thin Plate Spines)的STN网络的PyTorch实现
  19. 写代码赚钱的一些门路
  20. ssh海思3531a开发板的交叉编译

热门文章

  1. adams样条驱动_[转载]Adams之样条函数的应用
  2. FastReport.NET单行多标签打印
  3. 这个七夕节,Python技术six了!
  4. word embedding怎么处理未登录词
  5. vue中echarts书写拓扑图
  6. As Easy as CAB(2016 ICPC Mid-Central USA Region)
  7. 今天第一天在b站学c语言
  8. matlab设置启动画面,为Matlab的GUI添加启动画面
  9. Five God(五子棋)
  10. 解决:413错误码 Payload Too Large