【Linux】网络层IP

目录

🐼网络层的定位

🐼路由器的转发过程

🐼IP报头格式

🐼IP的分装与组装

🐼如何快速找到全网内的那台主机?

🐼网段划分

[🐼私有 IP 地址和公网 IP 地址](#🐼私有 IP 地址和公网 IP 地址)

[🐼NAT技术(重点)](#🐼NAT技术(重点))


为什么要有网络层?什么是网络层?网络层如何做的?网络层的定位这些问题需要我们一一来解决

我们学习网络的本质是什么嘞?就是一个报文完整的生命周期!

🐼网络层的定位

网络层,提供了一种能力!把数据包从A跨网络运输到主机B的能力。那么网络层这种能力,是100%可靠的吗??有非常大的可能性做不到!比如数据包丢失了。网络拥塞导致数据包丢失了。

而我们刚刚学过的传输层TCP,它提供了可靠性!换句话说,如果IP网络层把数据报丢了,到达传输层,传输层就开始触发被动!好啊,你网络层丢包了是吧,那么我就触发我的被动了:比如超时重传,确认应答,拥塞控制,连接管理...

所以,如果单单是网络层,那么它只具备从A跨网络传输数据到B的能力。但是有了TCP,那么它就具备从A跨网络传输数据到B100%成功的能力


🐼路由器的转发过程

正如下图所示,一个数据包从主机B->主机C是如何做到的?为什么B->C?

还记得我们之前讲的唐僧去西天取经的故事吗,起始地方为东土大唐,目的地是西天。唐僧去取经难道是直接到西天?不是吧,因为西天离自已最远了,目前。正确做法是:当唐僧每经过一个地方,就会问路,说: "你好啊,如果我要去西天的话,你帮我看看我下一站走哪里更好 啊",问路的就算不知道,也会告诉他说你应该去问谁,所以就把总路程划分为了一节节路程。

路由器的路由过程也是如此,这个报文的起始IP是多少,要去往哪里,目的Ip也知道。于是每到一个路由器,路由器总是会告诉这个报文自已要去的下一站是哪里!那么自已如何到达离自已最近的路由器的呢?相邻路由器之间不就是一个子网吗?是的!

而相邻节点之间是如何通信的呢?不就是局域网通信吗!在局域网内通信我们已经知道了,是能做到的!所以路由的本质:就是在不同的"子网"之间进行信息传递的过程!

下面再补充一下上图的几个概念:

主机: 配有 IP 地址, 但是不进行路由控制的设备;

路由器: 即配有 IP 地址, 又能进行路由控制
我们把主机和路由器都叫做节点,在全网视角看来,没区别。


🐼IP报头格式

我们已经说过了,拿到任何协议,一定要考虑两个问题,报头和有效载荷是如何分开的?数据如何进行向上交付的?

先解决第一个问题:看到首部长度了吗?它的含义和TCP完全一致,要将对应的首部长度*4才是真正的报头的总长度,4bit 表示最大的数字是 15, 因此 IP 头部最大长度是 60 字节。因此,只要我们取出4为首部长度,就能进行报头和有效载荷的分开

再来解决第二个问题:我们看到了16位总长度,通过2^16 - 首部长度 = 数据的长度,因此,我们轻松获得了数据的长度,这种字段是自描述字段,我们也说过。然后我们已经有了数据长度,怎么交付?还不着急。继续看8位服务类型:其中3位已经弃用,1位保留。四位分别表示最小延时, 最大吞吐量, 最高可靠性,最小成本. 这四者相互冲突, 只能选择一个。比如你交给的上层是TCP还是UDP,这里就会知道了,因此我们就知道叫向上交付给谁了!

下面一一来看其他字段,第二行的3个字段是IP分段的问题,请移步至IP分片。

✅4位版本

4位版本号(version): 指定 IP 协议的版本, 对于 IPv4 来说, 就是 4,或者IPV6

✅8位生存时间,这个怎么理解?

我们知道,网络的拓扑结构是什么复杂的,那么有没有一种可能性,就是数据包在发送过程中有环路问题,导致这个数据报一直在网络中游离?是的!所以如果这个报文一直在游离,可能还会有很多这样的报文,他们一起吃着网络资源,确一直在网络中,始终到不了目的地址。可是有人会说,没经过一个路由器,信号不是会减弱吗?其实不是这样的,在链路层,存在一种设备为集线器,这种设备,保证了信号的稳定性,如果信号减弱了,那么就会给它增强,不会随着距离的增加而减弱信号,因此,报文的生命周期就可能是永久的,在给IP报文设计时,也考虑到了这个问题:

数据报到达目的地的最大报文跳数. 一般是64. 每次经过一个路由, TTL -= 1, 一直减到 0 还没到达, 那么就丢弃了. 这个字段主要是用来防止出现路由循环

✅32位源IP地址和32为目的IP地址就解决了报文从哪里发,要发给谁的问题。我们知道,真正不是主机间在通信,而是进程。通过传输层的端口号,根据【源IP,源端口】【目的IP,目的端口】就定位了全网中的唯一两个主机。


🐼IP的分装与组装

设计协议的人规定了:当一个 IP 数据报的大小超过了网络的 MTU(最大传输单元)一般是1500字节 限制时, 就需要进行分片。 MTU 是数据链路层对 IP 层数据包进行封装时所能接受的最大数据长度。所以链路层就要求了IP层交给自已的报文不能超过1500字节!如图:

我们先来看IP第二行的三个字段标识的含义,再来回答几个问题。

16 位标识(id): 唯一的标识主机发送的报文. 如果 IP 报文在数据链路层被分片了, 那么每一个片里面的这个 id 都是相同的

3 位标志字段: 第一位保留(保留的意思是现在不用, 但是还没想好说不定以后要用到).第二位DF标志位置为 1 ,表示禁止分片, 这时候如果报文长度超过 MTU, IP 模块就会丢弃报文. 第三位MF标志位表示"更多分片", 如果分片了的话, 最后一个分片置为 0, 其他是 1. 类似于一个结束标记

13 位分片偏移(framegament offset): 是分片相对于原始 IP 报文开始处的偏移.其实就是在表示当前分片在原报文中处在哪个位置

✅问题一:分片与组装的过程传输层要知道吗?传输层不知道,它也没道理知道!传输层就好像IP的上层领导,传输层就是超过了MTU向上交付,你IP层又有啥办法,IP层就是个跑腿的,传输层也不关心IP怎么把报文发给对端IP的,解耦合嘛,分层的意义。所以IP分装与组装,传输层不需要知道,对于传输层是透明的!如图:

✅问题二:如何分片的?

假设现在传输层就交给一个3000字节的报文向下交付,此时网络层没办法啊,只好分片~

由于网络层自身报头有20字节,固定大小。并且每一片分片都要带有IP报头,会设置相应的标识(Identification) 、 偏移量(Fragment Offset) 和标志位(Flags) 等字段,每一片MF和片偏移会不相同,目的就是为了组装,能够在对端恢复出来~ 所以3000就被分为了3个IP片:1480+20, 1480+20, 40+20

✅问题三:如何组装的?

到达对端时:

先回答一个问题:有的IP报文压根没有分片,你怎么挑出分片的和没有分片的?首先分片的,那么标志位的第三个bit应该为1,那如果是最后一片分片呢?那么它的片偏移也一定是>0的。所以,如果标志位的第三个bit为1或者是最后一片也就是片偏移>0的那么就是分片的报文!

我们已经知道了一个报文是不是分片报文,可是,如何把一个报文挑完整呢?是不是有16位标识,就代表这些分片报文是同一个传输层的,于是我是不是可以对片偏移排序,保证了分片的顺序,于是我用我的片偏移+我的报文大小 = 下一片片偏移的起始位置~只要16位IPID一样,并且标志位为1,还有报文,直到挑到最后一位也属于我要交付的传输层报文的且标志位为0,并且我收到的报文是连续的,这样就完成了一次组装!

分片在传输过程中独立传输, 每个分片都有自己的 IP 头部, 并且各自独立地选择路由,到达对端就能完成组装。

✅问题四?我IP报文的最大长度是2^16次方,为啥你片偏移只能表示2^13次个?

**其实片偏移是以8字节为单位的!**实际偏移的字节数是这个值除以 8 得到的. 因此, 除了最后一个报文之外(之前如果都是 8 的整数倍, 最后一片的偏移量也一定是 8 的整数倍), 其他报文的长度必须是 8 的整数倍(否则报文就不连续了,就可以直接丢弃了)

这里引申一个小问题:如何快速检查是不是8的整数倍?就只需要看后3个比特位,如果是全0那么就是8的整数倍。

✅问题五,既然IP能实现分片和组装,那传输层就可以交付很大的报文?

这很好理解,如果这个报文不用分片,就是一个完整报文,丢包的概率大吗?还是把一个报文拆分为很多片,这些片同属于一个报文,要保证同时到达对端,要求每一片都不能丢失,这个丢包的概率大?一定是第二种丢包概率大,如果将一个大报文分片交给对端,就变相的增加了丢包效率! 因为任意分片丢失,都会导致整个报文进行重传!就算TCP有可靠机制,但是一旦丢包,浪费了很多资源!如图:

所以IP通信的过程中,分片不能作为主流!可是IP层说了算吗?这就要求,传输层不要一次性交付太多报文给网络层。

所以现在能理解了,之前有一个问题,就是为什么TCP滑动窗口,不一次性把自已窗口内的所有报文都交付?就是因为IP层要分片,增加了丢包概率!

那传输层交付给自已的报文最多是多大?由于TCP和IP都要报头。那么就要保证传输层最多一次向下交付1460个字节了,我们把传输层最多一次性传送的数据称为MSS,如图所示:

这里吐槽一下,其实IP也挺惨的,下面链路层要求最多接受1500字节,上面自已的上司又不考虑自已的感受,一次性交付给自已很多报文要发(很多活...),导致自已要忙很多,加很多班,别人还不知道,我们现实生活中有何尝不是如此~


🐼如何快速找到全网内的那台主机?

我们来思考一个问题,就是网络中的主机多了去了,怎么快速定位到你要发送的主机呢?你说根据源IP和目的IP啊!可是,我难道要拿着源IP和目的IP向网络中的主机一个个询问吗?明显不可能。

下面来讲一个小故事,来理解这个过程。

以我们学校的学号系统为例:学号由"学院代码 + 学生序号"组成,前三位代表学院,后三位是学生编号。比如计算机学院是101,理学院是102,材料学院是103,电气学院是201,经管学院是202。每个学院都有自己的学生群,而各学院的学生会主席之间也有一个共同的群。

假设我是计算机学院的101028号学生,有一天捡到了一个写有"201015"学号的钱包。虽然我知道计算机学院的代码是101,但201开头的是哪个学院我并不清楚。如果仅靠在学校门口一个个问,这种线性查找的效率实在太低了------本质上,查找就是一个不断排除的过程。

于是我想到了一个更高效的办法:虽然我不清楚201属于哪个学院,但我们学院的学生会主席和各院主席都在同一个群里,他一定知道201代表哪个学院!于是我在学院群里@了计算机学院主席,他一看201是电气学院的代码,随即在主席群里@了电气学院主席。电气主席收到后,立刻在他们学院的群里联系了201015号同学------就这样,钱包很快物归原主。

为什么这次归还效率大幅提升?因为我们排除无关信息的速度变快了!一旦确定201属于电气学院,我们就同时排除了其他所有学院的可能。

同理,在计算机网络中,"学院"就像目标网络,"学生"则如同网络中的主机。如果我们能先定位到目标网络,就能迅速排除大量无关网络,从而大幅提高寻址效率。再从目标网络找对应的主机,不就简单多了。

来说几个细节:

✅为什么我们归还钱包能这么快?

因为查找本身是一个淘汰的过程,如果我们线性遍历,那么每次只能淘汰一个人,可是如果交给学院主席,他把消息发到院群,一下就知道所在同学在哪个院,一下就淘汰了其他所有院!

因此我们归还钱包时,可以以群的方式,进行淘汰大量的主机,淘汰效率高! 可是,我们淘汰效率这么快,得益于什么?得益于学号被静心设计过!

IP地址也是如此,上述我们的一个个院不就是一个个子网吗,每一个子网都有自已的网络号,在发送给主机之前,最关心的就是网络号!如果能通过网络号淘汰掉其他子网,锁定到这个子网,再根据主机号,就可以淘汰掉其他所有主机了!

所以我们的IP地址也被运营商精心设计过,通过网络号+主机号的方式。就能加快淘汰效率!而网络号被这样精心设计过,这个过程,就叫做网段划分


🐼网段划分

基于上面的理解,我们知道了为什么要有网段划分?就是加速查找效率!就像学号一样。谁来做的?运营商!因此运营商也对了IP地址进行了静心的设计!

一般IP 地址分为两个部分, 网络号和主机号

网络号: 保证相互连接的两个网段具有不同的标识;

主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号。如图:

每一个子网中的网络号都是相同的,类比于学院号,同一子网中的主机号是不同,类比于我们自已的后3位学号。而路由器就是那个大群!它管着不同的子网的网络标识(院号)!换句话说,如果这个路由器管着几个子网(群),自已就会有几个对应子网的网络号(院号),也就是IP。所以,路由器,具有局域网中IP地址管理的功能!不同的子网其实就是把网络号相同的主机放到一起,所以如果我们在当前子网中新增一台主机, 则这台主机的网络号和这个子网的网络号一致, 但 是主机号必须不能和子网中的其他主机重复,就像新增一个同学一样~

这样,通过合理设置主机号和网络号, 就可以保证在相互连接的网络中, 每台主机的 IP 地址都不相同,你说的好,可是谁来给这些主机来分配IP?有一种技术叫做DHCP,能够自动的给子网内新增主机节点分配 IP 地址, 避免了手动管理 IP 的不便

下面我们来看看网段划分的历史发展和可行性:

✅把所有 IP 地址分为五类

• A 类 0.0.0.0 到 127.255.255.255

• B 类 128.0.0.0 到 191.255.255.255

• C 类 192.0.0.0 到 223.255.255.255

• D 类 224.0.0.0 到 239.255.255.255

• E 类 240.0.0.0 到 247.255.255.255

随着 Internet 的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请 B 类网络地址, 导致 B 类地址很快就分配完了, 而 A 类却浪费了大量地址;所以不可行!这种划分方式的粒度太粗了


✅CIDR划分方式

具体如下:引入一个额外的子网掩码(subnet mask)来区分网络号和主机号,将 IP 地址和子网掩码进行 "按位与" 操作, 得到的结果就是网络号;这样,我们就可以充分利用IP地址,如果IP地址要的多,子网掩码就扩展的少,反之! 比如:如果你需要的主机多(比如一个大部门),就把子网掩码设得"短"(如 /25),这样分到的IP地址块就大;如果你需要的主机少(比如一个小部门),就把子网掩码设得"长"(如 /27),这样就能把一个大网络切成许多小块,分给更多部门,从而高效利用IP地址。这样,通过灵活控制子网掩码,就能灵活控制这个区域的IP数量,我们就保证了IP地址不会浪费!所以子网掩码就是提高了分类划分IP地址的利用率!并且这样的划分方式,引入子网掩码并不影响之前的划分方案,可以平滑过渡

☑️这里注意一下几个特殊的IP地址在子网中:在我们划分IP时,将 IP 地址中的主机地址全部设为 0, 就成为了网络号, 代表这个局域网;

将 IP 地址中的主机地址全部设为 1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包

127.*的 IP 地址用于本机环回(loop back)测试,通常是 127.0.0.1

✅IP 地址的数量限制

我们再来分析一下,IP 地址(IPv4)是一个 4 字节 32 位的正整数. 那么一共只有 2 的 32 次方 个 IP地址, 大概是 43 亿左右. **而 TCP/IP 协议规定, 每个主机都需要有一个 IP 地址,就算你子网掩码分配的再好,也没用啊!数量上限就那么多!**另外 IP 地址并非是按照主机台数来配置的, 而是每一个网卡都需要配置一个或多个 IP 地址.

好,我们现在已经知道问题在哪了,这个我们后面会说一种NAT技术,就能解决IP地址不够用的问题,这里暂时先不分享。

通过NAT技术,完美解决了IP地址的数量限制问题,这也就是为什么我国IPV6推广慢的原因,已经有了替代方案!


🐼私有 IP 地址和公网 IP 地址

其实我们平头老百姓使用的都是私有IP!而我们家的每台主机,其实就是全网内拓扑结构的最末端

别人规定了:如果一个组织内部组建局域网,IP 地址只用于局域网内的通信,而不直接连到 Internet 上,并且人家还给咱们规定了咱们局域网私有IP的范围:

• 10.*,前 8 位是网络号,共 16,777,216 个地址

• 172.16.*到 172.31.*,前 12 位是网络号,共 1,048,576 个地址

• 192.168.*,前 16 位是网络号,共 65,536 个地址

不信你用ipconfig来看看你的IP地址,我猜大概率是192.168...,如果你用的学校wife,那么大概率是172.16...。

可是我也没有手动设置过我的IP啊,我一看果真如你所说,是谁来帮我做的?其实是咱的家用路由器,路由器其实不仅仅有路由功能,还有组建局域网的功能,所以咱的私有IP其实都是路由器给的!

上面三个网络地址都是只能在局域网中使用的,也就是公网其实不认咱这些私有IP,那公网哪些IP,除了我们私有Ip它都认,都是公网IP了。

可是既然你说咱得私有IP在公网上不认,那么我是怎么把消息发给对方的?或者,别人是怎么给我发消息的,你不是说我的IP不管用嘛??

如图:

一个路由器可以配置两个 IP 地址, 一个是 WAN 口 IP, 一个是 LAN 口 IP(子网IP),LAN口所管理的就是咱的家用路由器!而WAN口IP连接的就是公网!(假设这有一层,WAN口直接连公网了,其实可以搭积木,WAN上面继续是个运营商路由器,最后才连公网~)

哦,所以我们就懂了,咱家的路由器只不过是运营商子网中的一个节点罢了,你邻居家也是运营商子网中的一个节点,你邻居的邻居家也是运营商子网中的一个节点,只要你们都归这个运营商管!所以路由器 LAN 口连接的路由器, 都从属于当前这个子网中

并且我们还发现:不同的路由器, 路由器内的局域网网, IP 其实都是一样的(通常都是 192.168.1.1). 局域网内的主机IP 地址不能重复. 但是局域网之间的 IP 地址就可以重复了 .哎,这可好玩了,我家的主机IP地址都是我家路由器分的,保证了我家所有连接这个路由器的主机IP地址都不一样,可是,我家和我邻居家IP地址用的一定是不同的吗??可能是相同的,因为我和我邻居家属于两个局域网,每一个局域网内分配的IP地址都用的是私有IP啊,私有IP人家大佬已经规定了,所以,如果巧,我们不同局域网间的IP地址可能会"重复"!!!

这意味着什么?既然IP地址可以"重复",那么我们的IP地址不就够用了吗?我们IP地址的上限就高了,是的!

可是有一个问题,就是我和我邻居家IP可能用的"同一个",外面消息到来了到底转发给谁?这就涉及到NAT转换技术,私有IP和公网IP的转换,我们后面再说~

不过我们现在已经知道了一个方向,就是我的消息是如何发给别人的~假设我要访问谷歌,当我要发这个报文,我家的路由器发现IP地址不是这个局域网的,就像张三知道这个钱包一定不是我们学院的,就交给默认的路由器(我们把这种行为叫做默认路由,交给的路由器就是默认网关),这里就是交给运营商了,运营商一看,如果你访问的IP地址合法,就把我们的消息通过WAN口扔到公网了,如果非法,直接把我们这个报文给丢弃了。所以可以理解了为啥我们不能访问外网了吗,有q~

具体是如何做的?

局域网内的主机需要和外网进行通信时, 路由器将 IP 首部中的 IP 地址进行替换(替换成 WAN 口 IP), 这样逐级替换, 最终数据包中的 源IP 地址替换成为一个公网 IP. 这种技术称为 NAT(Network Address Translation, 网络地址转换。如图:

总结一下:我们私有IP发送的任何数据都是要经过运营商的,因为运营商才有权利接触公网,运营商的WAN口连接公网,LAN口实我们每一个私有IP的局域网网,我们每一个路由器都是运营商的一个子网。内网是没有权利直接访问公网的,或者说公网和公网间才能相互访问,公网不认我们私有IP!!当人家公网要给应答返回时,必须保证我们的IP也是公网,不能是私有IP,所以才要运营商

并且内网->公网,路由器会自动进行内网IP地址替换,自动使用路由器的WAN将IP替换掉!将私有IP替换为公网IP

所以现在能理解了,为什么通过IP地址,路由器就能知道要转发给谁?至少说,我不知道直接转发给谁?但是我知道我要把这个报文交给哪个路由器,他能帮我处理!

而在路由器路由这个过程,就三种情况:如果目的 IP 命中了路由表, 就直接转发即可;
当目的地址与路由表中其它行都不匹配时,就按缺省路由条目规定的接口发送到下一跳地址。到达了入口路由器,进行内网转发,

第三种公网->内网,如何做?能行吗?下面谈~


🐼NAT技术(重点)

我们上面一直在说,内网如何访问外网的?通过运营商!我们才能打开公网的世界,但这个过程我们并没有说的特别清楚,比如:在将内网IP逐层替换时,要做什么事情?我们也没有解决为什么NAT技术就能复用IP?我们也没有解释为啥我们访问了公网,公网就能给我们应答??

什么是NAT技术,就是网络地址转换技术! 能够将私有 IP 对外通信时转为全局 IP. 也就是就是一种将私有 IP 和全局IP 相互转化的技术方法

下面我们以请求和应答的视角来看看这个NAT转换过程:

当我们发起一个请求request, 此时我们私有IP也就是内网在访问公网时,会替换掉我们内网的源IP地址,逐层替换,直到公网。将我们内网IP10.0.0.10替换为了202.244.174.37,在 NAT 路由器内部, 有一张自动生成的, 用于地址转换的表,当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系 如图:

为什么要这么做?因为只有公网才能访问公网!我们私有IP没权利访问公网!当对方收到请求,返回一个应答,此时人家填写的目的IP就是202.244.174.37,也就是公网IP。

🐛所以还记得,我们在写套接字时,其实哪些客户端的请求,并不是私有IP,都是经过转换过的公网IP来访问我们的服务器!

NAT 路由器收到外部的数据时, 又会把目标 IP 从 202.244.174.37 替换回10.0.0.10;

可是这有个问题,就是如果客户端A和客户端B都发请求访问外网,NAT记录私有IP和WAN口IP的映射,可是此时由于WAN口IP是一样的,如何回来?如何知道这个应答要交给哪个局域网主机???显然,这样的NAT表记录方式还不行

如何做?使用 IP+port 来建立这个关联关系,假设现在主机A和主机B都访问服务器的同一个进程,如图:

路由器不仅仅对IP进行替换,就连如果你的原始报文中的端口号重复了,连端口号也进行了替换,这样就保证了你的Socket全网内唯一!!!,每一个私有IP和NAT路由器IP之间不仅建立了IP间的映射关系,NAT路由器还专门分了一个端口号来保证你的唯一性,保证你私有IP能发的出去报文,也能接受报文,出得去,也回得来~

✅几个问题:

🐛如果是第一次,外网可以访问内网主机吗???

不可以!!因为此时还没有建立NAT表,当报文到达路由器,发现我内网都没有访问你外网的,没有建立关系,就把你当成一个恶意报文,直接丢弃了!所以,现在能理解为啥你要使用一款app,必须先登录,在你登录的时候,路由器就建立了私有IP->公有IP的映射关系,此时,服务器就可以给你提供服务,给你发应答了!

🐛内网可以访问公网吗?

当然可以,不是直接的,而是通过运营商,通过NAT逐层建立表关系,保证了我们最后出去的是公网IP

因此,有了NAT技术,就实现了私有IP<->公有IP的转换,保证了网络"出得去,也回得来"。这也就保证了全局 IP 要求唯一, 但是私有 IP 不需要; 在不同的局域网中出现相同的私有 IP是完全不影响的;通过这种技术,IP的上限就更高了~ 很多学校, 家庭, 公司内部采用每个终端设置私有 IP, 只有在路由器或必要的服务器上才设置全局 IP~

🐛如果在我们虚拟机上直接部署服务,或者windows上部署服务,别人能访问吗?

不能访问!!因为我们本身是私有IP,不能直接被别人访问,别人只能通过公网IP来访问我们的服务器,如何做呢?后面我们会学习一种基于frp的内网穿透工具,来完成这个效果。当然,如果我们想让别人访问我们私有IP的服务器,还有很多做法:使用内网穿透工具(ngork),使用路由器端口映射,或者直接部署到云服务器上...

🐛谁会帮助我们完成NAT?

路由器往往都具备 NAT 设备的功能, 通过 NAT 设备进行中转, 完成子网设备和其他子网设备的通信过程

NAT 技术的缺陷:

由于 NAT 依赖这个转换表, 所以有诸多限制

无法从 NAT 外部向内部服务器建立连接;

转换表的生成和销毁都需要额外开销;

通信过程中一旦 NAT 设备异常, 即使存在热备, 所有的 TCP 连接也都会断开;

相关推荐
YANshangqian4 小时前
网页Http远程启动应用工具
网络·网络协议·http
合才科技4 小时前
【要闻周报】网络安全与数据合规 12-13
网络·安全
范小多4 小时前
24小时学会Python Visual code +Python Playwright通过谷歌浏览器取控件元素(连载、十一)
服务器·前端·python
盼哥PyAI实验室4 小时前
Python验证码处理实战:从12306项目看验证码识别的技术演进
开发语言·网络·python
DevangLic4 小时前
【怎么在手机上访问部署在电脑上的网页,不在一个局域网】
服务器·学习
itas1095 小时前
windows单网卡配置多网段IP
windows·网络协议·tcp/ip·多网段ip
christine-rr5 小时前
【网络安全实验】IPSec的配置与实现
网络·计算机网络·安全·web安全·网络安全
TiDB 社区干货传送门5 小时前
【附操作指南】从 Oceanbase 增量数据同步到 TiDB
linux·服务器·数据库·tidb·oceanbase
老蒋新思维5 小时前
创客匠人峰会新解:高势能 IP 打造 ——AI 时代知识变现的十倍增长密码
大数据·网络·人工智能·tcp/ip·创始人ip·创客匠人·知识变现