计算机网络网络层之网络地址转换(NAT)
TIPS:大部分知识出自哈尔滨工业大学李全龙老师的课程讲解。
动机
- 只需/能从ISP申请一个IP地址
- IPv4地址耗尽
- 本地网络设备IP地址的变更,无需通告外界网络
- 变更ISP时,无需修改内部网络设备IP地址
- 内部网络设备对外界网络不可见,即不可直接寻址(安全)
实现
- 替换
- 利用(NAT IP地址,新端口号)替换每个外出IP数据报的(源IP地址,源端口号)
- 记录
- 将每对(NAT IP地址,新端口号)与(源IP地址,源端口号)的替换信息存储到NAT转发表中
- 替换
- 根据NAT转发表,利用(源IP地址,源端口号)替换每个进入内网IP数据报的(目的IP地址,目的端口号),即(NAT IP地址,新端口号)
- 16-bit端口号字段
- 可以同时支持60.000多并行连接!
- NAT主要争议:
- 路由器应该只处理第三层功能
- 违背端到端通信原则
- 应用开发者必须考虑到NAT的存在,如P2P应用
- 地址短缺问题应该由IPv6来解决
NAT穿透问题
- 客户期望连接内网地址为10.0.0.1的服务器
- 客户不能直接利用地址10.0.0.1直接访问服务器
- 对外唯一可见的地址是NAT地址:138.76.29.7
- 解决方案1:静态配置NAT,将特定端口的连接请求转发给服务器
- 如:(138.76.29.7,2500)总是转发给(10.0.0.1,25000)
- 解决方案2:利用UPnP(universal plug and play)互联网网关设备协议(IGD-internet gateway device)自动配置:
- 学习到NAT公共IP地址(138.76.29.7)
- 在NAT转发表中,增删端口映射
- 解决方案3:中继(如Skype)
- NAT内部的客户端与中继服务器建立连接
- 外部客户也与中继服务器建立连接
- 中继服务器桥接两个连接的分组
计算机网络网络层之网络地址转换(NAT)_ufgnix0802的博客-CSDN博客
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 17 天, 点击查看活动详情