NAPT原理

本文介绍了NAT网关上的映射表及其工作原理。当内网主机向公网发起请求时,NAT网关会修改数据包的源IP和端口,并记录在映射表中。返回的响应包会根据映射表转发给正确的内网主机。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在NAT网关上会有一张映射表,表上记录了内网向公网哪个IP和端口发起了请求,然后如果内网有主机向公网设备发起了请求,内网主机的请求数据包传输到了NAT网关上,那么NAT网关会修改该数据包的源IP地址和源端口为NAT网关自身的IP地址和任意一个不冲突的自身未使用的端口,并且把这个修改记录到那张映射表上。最后把修改之后的数据包发送到请求的目标主机,等目标主机发回了响应包之后,再根据响应包里面的目的IP地址和目的端口去映射表里面找到该转发给哪个内网主机。这样就实现了内网主机在没有公网IP的情况下,通过NAPT技术借助路由器唯一的一个公网IP来访问公网设备。

### lwIP NAPT工作机制解释 #### NAT概念及其作用 网络地址转换(NAT, Network Address Translation)是一种用于修改网络封包中的IP头部信息的技术,主要用于解决IPv4地址不足的问题。通过NAT技术可以使得多个内部私有地址共享一个公共外部地址访问互联网,从而有效地节省大量的公网IP资源[^1]。 #### 基本配置需求 为了使设备能够执行NAT功能,特别是对于轻量级TCP/IP协议栈lwIP而言,该设备至少应具有以下基本配置: - **CPU性能**:足以快速完成必要的计算和查找操作以维持较高的吞吐率; #### 端口转换的原因 当涉及到端口转换时,在多台主机共用同一个公网IP的情况下,仅靠改变源IP不足以区分不同的会话。因此引入了端口转换机制,即PAT (Port Address Translation),它不仅改变了数据包的源IP地址还更改了其源端口号。这样做是为了确保即使两台机器使用相同的本地服务端口发出请求也能被正确地返回给各自的发起者而不会混淆。如果只保留原始端口号,则可能导致冲突或错误响应分配。 #### 内部工作流程概述 针对lwIP实现的具体情况来说,NAPT主要由以下几个部分组成: - **创建映射条目**: 当一个新的外出连接建立时,会在NAT表中新增一条记录关联内外两侧的信息。 - **匹配现有规则**: 对于后续进出的数据报文则依据已有的映射关系做相应的替换动作。 - **超时管理**: 设置合理的老化时间防止长期闲置占用过多资源影响效率。 ```c // 创建新的NAT/PAT条目的伪代码表示形式 struct nat_entry *create_nat_mapping(struct ip_addr *src_ip, u16_t src_port, struct ip_addr *dst_ip, u16_t dst_port){ ... } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值