我的公共IP地址是10.2.10.172。
当我向google.com发出http请求时,我的计算机会发送一个包含源IP地址的数据包192.168.1.101到路由器,NAT将其更改为10.2.10.172。
我的问题是,当google.com收到请求并将答复发送回10.2.10.172时,路由器如何知道要路由到哪台计算机? (192.168.1.101或192.168.1.102)。
我最初是在考虑端口号,但我认为我们可以同时在同一网站上浏览,因此我不知道它在这里如何工作。
#1 楼
NAT如果您使用的是静态(一对一)NAT,则路由器会将
11.2.10.172
公用IP分配给尝试访问google.com的第一台PC(例如192.168.1.101
)。在这种情况下,两台PC将无法立即与google.com通信,因为已经分配了唯一可用的公共IP。路由器中的NAT表:
11.2.10.172 -> 192.168.1.101
PAT
您可以使用PAT(NAT重载)。
使用PAT可以将多个地址映射到一个私有IP。当设备启动TCP / IP会话时,它将生成一个TCP或UDP源端口号以唯一地标识该会话。路由器收到此数据包时,会使用该源端口号唯一地标识转换。端口号(1444)。 PC1将发送带有
192.168.1.101
的数据包。路由器收到此数据包后,会将64.233.161.1
插入NAT表,然后将数据包的L3地址更改为DA: 64.233.161.1:80 | SA: 192.168.1.101:1444
并将其转发至google.com。路由器接收到此数据包并将其转换为11.2.10.172:1444 -> 192.168.1.101:1444
,然后将其转发给PC1。如果PC2(
DA: 64.233.161.1:80 | SA: 11.2.10.172:1444
)发送的数据包具有与PC1相同的源端口号,则路由器会将端口号简单地增加1。 NAT表看起来像这样的情况DA: 11.2.10.172:1444 | SA: 64.233.161.1:80
DA: 192.168.1.101:1444 | SA: 64.233.161.1:80
我希望它会有所帮助。 ,
192.168.1.102
仍在专用地址空间中,因此我将其更改为11.2.10.172:1444 -> 192.168.1.101:1444
。评论
所以您的意思是我们在数据包中将有2个端口号?一个用于NAT,另一个用于终端(http端口80)?
–凯文·麦克
2015年3月23日下午6:51
是。 PC发送的数据包的<目的地:64.233.161.1:80,源192.168.1.101>。路由器将其转换为<目的地:64.233.161.1:80,源:10.2.10.172:1317>并将其发送给Google。 Google回应<目标:10.2.10.172:1317,来源:64.233.161.1:80>。路由器收到数据包,在NAT表中搜索10.2.10.172:1317映射。查找正确的行,进行翻译,然后使用<目的地:192.168.1.101,源:64.233.161.1:80>将数据包发送到PC
–亚当·霍尼亚克(Adam Hornyak)
2015年3月23日7:00
数据包中只有一个。路由器在转换时会重写目标地址和端口号。
–罗恩·托恩(Ron Trunk)
2015年3月23日在10:28
如果我们想获得所有技术知识(谁不愿意),PC确实会分配一个源端口,然后由NAT设备进行转换。因此,在亚当的评论中,第一个来源实际上更像是192.168.1.101:33123,同样,他的评论结尾处相应的最终目的地将是192.168.1.101:33123。
– Todd Wilcox
15年3月23日在12:25
@ToddWilcox你是对的。我忘了我将更新我的答案。
–亚当·霍尼亚克(Adam Hornyak)
15年3月23日在13:28
#2 楼
您的路由器知道路由路由的位置,因为它维护有状态连接表,这些表是源IP地址:端口和目标IP地址:端口关系。这些是根据您的防火墙规则,NAT策略和其他一些设置(例如TCP和UDP超时)建立的。有4种可能的状态:“新建”,“相关”,“已建立”和“无效”。根据防火墙规则,防火墙确定连接应处于的状态。因此,通常,默认情况下可以使新连接出站,但是如果您创建NAT或PAT规则并匹配防火墙策略,则仅允许RELATED或ESTABLISHED连接入站允许。然后,基于您配置的规则(对于NEW连接)或现有连接表(对于ESTABLISHED连接),将允许一个数据包
此外,还维护着一个[ARP]表,该表可帮助防火墙知道IP地址对应的物理MAC地址。
评论
UDP打孔NAT端口的可能重复10网络也是“内部不可路由的”-我今晚正在队列中快速工作,所以也许我是傻瓜……必须发生另一层NAT,才能将10网络号转换为可路由的公共。无论如何... McKevin,欢迎来到Net Eng!这是这里的垒球问,但我想这已经足够话题了...
@CraigConstantine我只是CCNA的学生,我想这是垒球上的解释Q :)