内网和外网之间的通信

article/2025/11/4 9:37:30

对于初学者而已,我们学习的网络编程(如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(局域网 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 呢?


端口映射

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


端口映射是 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,因为这两者已经建立好映射,如上图,这样,我们的服务器就能收到数据。



http://chatgpt.dhexx.cn/article/1q5hjwfY.shtml

相关文章

探秘 | 如何分辨内网和外网?

目录 💡 什么是外网IP、内网IP? 💡 对于自有路由器上网的用户,可以这样理解外网IP、内网IP 💡 几个大家经常会问的问题 什么是外网IP、内网IP?很多用户都有一个疑惑,如果不使用路由器拨号上网…

实现电脑同时上内网和外网(或通过外网访问到该电脑通过该电脑访问内网)

一、需求描述 目前使用的公司网络只能够上内网,但是又有上外网查资料的需求: ①想要实现电脑既能上内网的同时也可以上外网; ②想要使用其他外网电脑使用外网连接到该电脑,通过该电脑访问内部的网络内容。 二、准备内容 电脑必须具备两个网卡,即:可以同时连接内网和外…

如何理解内网和外网

如何理解内网和外网 写这篇博文的动力来自于,大狗问我什么是内网和外网(没错,我就是站在程序猿顶端的有女票的程序猿:p),一个惊讶,为什么她会问这样的问题,在现实生活中,不管你是不…

内网和外网的区别是什么?

内网和外网的区别重要依据主要是判断它是不是与广阔的外界相连。 内网和外网最大的区别 内网IP局域网,网线都是连接在同一个 交换机上面的,也就是说它们的IP地址是由交换机或者路由器进行分配的。而且每一个IP也是有所不同的,并且这些连接在…

外网与内网

一、外网和内网  其实外网和内网的概念很模糊。  简单的说,自己的单位或者家庭、小区内部有局域网;单位、家庭之外有覆盖范围极大的网络,比如internet,这个大网络延伸到了我们的单位、家庭(通过光纤、网线、电话线等…

内网和外网的区别?

网络按地域范围分类:局域网、城域网、广域网 网络按使用者分类为:公共网 和 专用网 内网 内网又称局域网(Local Area Network,LAN),是指在某一区域内由多台计算机以及网络设备构成的网络。 外网 外网又称广…

内网和外网的区别

参考文章:https://blog.csdn.net/Alexwym/article/details/81772446 https://blog.csdn.net/weixin_42724467/article/details/89147214 一、现象 外网,即广域网、WAN、公网;内网,即局域网、LAN、私网。 要搞清楚内网和外网的区…

什么是内网、外网?内网、外网有啥区别?

之前有朋友问我,电脑如何上外网?他们有些是在学校的机房里,有些是在企业办公室里上网的,这个问题问的,我也是很头痛啊! 原因是:学校为了让学生上课的时候,不会上外网做其他事&#…

C++ ZeroMemory和memset

为什么80%的码农都做不了架构师?>>> 一、memset void *memset(void *s,int ch,size_t n); 由C Run-time Library提供的提供的函数,作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。…

ZeroMemory

ZeroMemory() ZeroMemory宏用0来填充一块内存区域。 为了避免优化编译器的意外的影响,请使用SecureZeroMemory函数。 void ZeroMemory( PVOID Destination, SIZE_T Length ); 参数: Destination :指向一块准备用0来填充的内存区域的开始地址。 Length :…

长文件名和短文件名

2019独角兽企业重金招聘Python工程师标准>>> 文件命名时有一个8.3规则 8是指文件名,就是******.XXX里的***意思是这个部分不能超过8个字符,在DOS里,如果超过8个字符了是不会被识别的.后面的XXX是扩展名,也不一定非得是…

关于Windows10 文件名最大长度260

直接上官方文档: Maximum Path Length Limitation - Win32 apps | Microsoft DocsMaximum path length limitation.https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabspowershell但是文档中关于文件全路径最长260的设定&a…

自定义文件名长度,随机重命名文件名称

一些文件名称可能太长,很多人问如何自定义长度,随机重命名出每个文件名称呢?如何用第三方的工具来批量操作呢?在众多的文件批量重命名软件中【文件批量改名高手】算是操作简单。易懂的软件了,下面一起来操作步骤吧。 …

windows文件名太长(超255字符)无法重新命名

问题描述: 最近下载了一个mp4课件,文件名称太长,试过网上注册表与组策略方法来重命名,均无效 [尝试的方法链接] 解决措施: 用vscode编译器打开文件的上一级目录在vscode的资源编译器中修改对应文件的文件名退出vscod…

linux 查看文件名和路径最大长度限制

文件查看方式 cat /usr/include/linux/limits.h命令查看方式 文件名最大长度限制 getconf NAME_MAX /usr路径最大长度限制 getconf PATH_MAX /usr

[WinError 206] 文件名或扩展名太长(组策略值修改 解除windows文件名 字符长度限制)

Windows 历来将路径长度限制为 260 个字符。这意味着比这更长的路径将导致编程语言相关路径函数无法解析并且会导致错误。 在最新版本的 Windows 中,此限制可以扩展到大约 32,000 个字符。 解决办法: windows键R键打开运行窗口,再输入regedi…

【python量化】统计套利之配对交易策略实现(基于python)

关于做统计套利所需要的基本知识在前面也整理过了: 时间序列分析之ADF检验 时间序列分析之协整检验 时间序列分析之相关性 下面用python实现一个简单的配对交易策略: 目录 一、交易对象选取 相关性检验 ADF检验 协整检验 二、主体策略 投资组合…

使用数据驱动进行配对交易:简单交易策略

作者:chen_h 微信号 & QQ:862251340 微信公众号:coderpai 使用数据驱动进行配对交易:简单交易策略 配对交易是一个纯基于数学分析的一个非常好的例子。接下里的文章,我们将演示如何去利用数据来创建一个自动化…

【Python】使用tushare完成配对交易策略

tushare ID:495023 分析对象:茅台&五粮液,获取上述股票2020/1/1到2021/12/31的股票数据, 1.可视化价差spread、z-score 2.产生并可视化交易信号:上升交易信号、下降交易信号 3.计算策略的累计效益,可视…

量化投资实战(二)之配对交易策略---最短距离法

点赞、关注再看,养成良好习惯 Life is short, U need Python 初学量化投资实战,[快来点我吧] 配对交易策略实战—最短距离法 基本流程 配对组合 --> 计算价差 --> 决策标准 --> 确定头寸 --> 平仓获利 一、股票对的选取 读取数据 import p…