一篇文章搞懂,内网和外网到底怎么通信?

一篇文章搞懂,内网和外网到底怎么通信?,第1张

对于我们网络开发的人员来说,经常会用到TCP,UDP协议,但是通常情况下,是在局域网内的协议交互通信。可你们有想过吗?如果是涉及到内网和外网的交互呢?也就是说局域网和公网是怎么 交互呢?

假设有两台主机A和B,他们分别处于不同的局域网下,他们的局域网IP都是192.168.1.2。在同一个时刻,他们都访问百度服务器,那作为百度服务器是怎么分别回复这两台主机的呢?或者是服务器怎么区分A和B呢?

我们先来了解一下公网IP和私有IP的概念。

公有地址(Public address) :由 Inter NIC(因特网信息中心)负责。这些 IP 地址分配给注册并向Inter NIC提出申请的组织机构,公有 IP 全球唯一,通过它直接访问因特网(直接能上网)。主要有A、B、C、D、E五类地址:

私有地址(Private address) :属于非注册地址,专门为组织机构内部使用,说白了,私有 IP 不能直接上网。主要有A、B、C三类,A类地址范围是10.0.0.0-10.255.255.255 ,B类地址范围是172.16.0.0-172.31.255.255,C类地址范围是192.168.0.0-192.168.255.255。

127.0.0.0 到127.255.255.255 为系统环回地址。

而我们平时通过运营商(主要是电信、移动、联通宽带等)上网,通过家用路由器之后,就会变成私有IP,大家可能会疑问,我们可以上网啊,怎么会是私有 IP 呢?

其实我们不是通过私有IP上网的,是通过公有IP。通俗的讲,运营商有公有IP,但是IPV4下IP资源有限,所以这些IP不能每个人分配单独分配一个IP,所以需要动态给上网的用户。 这个过程有点类似于,我们买了一些笔,然后将这些笔分给全班学生使用,当然运行商动态分配公有IP的过程比这个复杂多了。

所以A和B的IP相同是很正常的一件事情,但是对于百度服务器来说,它并不关心对方的私有IP是什么,它也不知道,它只知道访问它的肯定是公有IP。

那问题来了,还是老问题,既然最终访问百度服务器是公有IP,那A和B私有IP到公有IP的转换怎么完成的呢?当他们同时访问百度服务器的时候,百度服务器如何区分哪个是 A,哪个是 B 呢?

在讲原理之前我们先了解一个概念,端口映射?

思路: 既然端口映射可以将一台外网 IP 地址机器多个端口映射到内网中不同机器上的不同端口。那当用户访问外网 IP 的这个端口时,服务器自动将请求映射到对应局域网内部的机器上。

比如,我们在内网中有一台主机,但是外网中的用户是没有办法直接访问该服务器的。于是我们可以在路由器上设置一个端口映射,只要外网用户访问路由器ip的80端口,那么路由器会把自动把流量转到内网主机的80端口上。并且,在路由器上还存在一个Session,当内网服务器返回数据给路由器时,路由器能准确的将消息发送给外网请求用户的主机。在这过程中,路由器充当了一个反向代理的作用,他保护了内网中主机的安全。

我们平时上网的过程就是先经过路由器,然后通过宽带,最终扮友逗通过运营商的厅卖转换最终到web服务器的,返回的数据先告念到运营商那边,然后再把数据发送到用户的主机上。

我们都知道路由器有两个端口: LAN 口,WAN 口。

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

LAN:接内部 IP 地址用,LAN 内部是交换机。我们可以不连接 WAN 口,把路由器当做普通交换机来使用。

下面我们来看看到底怎么通信的。为了便于理解,我们把运营商当做一个 NAT 设备。

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

A 主机IP 是私有 IP(192.168.1.2),该IP是从路由器的 LAN口分配的。暂不讨论是如何获取的,这涉及到自动获取还是手动分配的。

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

通过 10.221.0.24:8080 能访问外网吗 显然不行,因为还是私有IP。还需要一个步骤:转换为公网IP。

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

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

TOP 1 imo内网通

Imo内网通是一款完全免费局域网办公沟通软件。也是融合了社交元素的协同办公平台。它的内容传输都是基于局域网, 快捷方便是软件的最大特点,自动扫描在线飞鸽用户,无需安装和配置各类打印机驱动程序,即刻实现客户端文件互传、远程播放和打印功能,成为企业、政府办公和家庭多媒体共享的有力工具。

而且基于衡悔好内网,安全、可控。它将聊天信息全部留在用户本机,不经过互联网和服务器,不受监控,并对聊天信息通过AES技术进行加密,从源头上保证了用户的信息安全。完全兼容网上广为流传的飞鸽传书并比原来飞鸽功能更加强大.

很多朋友钟爱imo内网通,不仅是因为内网通避免了私人信息对工作干扰,更因为内网通的即时通讯、话题讨论、时间管理等功能,使企业内部的沟通能有效传达,让有限的时间更加专注于工作。大幅提高工作效率。

功能性:★★★★☆

性价比:★★★(完全免费)

推荐指数:★★★★★

2

TOP 2 飞秋

飞秋(FeiQ)是一款局域网管理软件/局域网聊天软件咐铅的绿色软件,它参考了飞鸽传书(IPMSG)和QQ, 完全兼容飞鸽传书(IPMSG)协议,具有局域网传送方便,速度快, *** 作简单的优点,同时具有QQ中的一些功能,是飞鸽的完善代替者。

但是很遗憾的是,由于互联网的快速发展,人们的眼光早已从局域网转向了更加广阔的全球化互联网领域。大量的软件开发人员都投身到了互联网浪潮之中,而局域网这样的“小池塘”,渐渐被一些开发人员所忽略。飞秋宣布停止更新后、市场上仅仅剩下imo内网通等为数不多几家仍然坚持提供局域网沟通服务。

功能性:★★★★★

性价比:★★☆

推荐指数:★★★★

3

TOP 3 飞鸽传书

飞鸽传书是一款局域网内部聊天、文件传输工具, 在程序结构方面采用了Windows SDK处理结构,通信方面采用了TCP/UDP通信方式,在文件传输处理方面采用文件映射技术,等等。通过分析IP Messenger的运行、工作原理,可以提高并加深对Windows处理流程的理解,提高SOCKET编程技术等,因此特对其源码进行分析,以抛砖引玉,共同提高大家的编程技术。

功能性:★★★★

性价比:★★

推荐指数:★★★

4

Top4 布谷鸟

布谷鸟2013具有通讯聊天、群聊、传送文件、离线文件、远程协助、录音留言、消息签收、语音、视频、共享文档、目录共享、网络硬盘、公告、MSN通讯、视频会议、手机短信、Web登录、二次开发接口等功能。 可实现局域网络间跨网段、专用虚拟网、INTERNET(外网)连接的通讯。 可支持上万级用户并发。安全、稳定、高效、维护方便、永久免费

功能性:★★★

性价比:前培★★

推荐指数:★★


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12344060.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存