计算机网络网络层之网络地址转换(NAT)

200 阅读2分钟

计算机网络网络层之网络地址转换(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 天,     点击查看活动详情