zoukankan      html  css  js  c++  java
  • 计算机网络-网络层(2)NAT协议

    网络地址转换(NAT,Network Address Translation)协议
    本地网络内通信的IP数据报的源与目的IP地址均在子网10.0.0.0/24内;所有离开本地网络去往Internet的数据报的源IP地址需替换为相同的NAT IP地址以及不同的端口号(16bit端口号可以支持六万多个并行连接)。
     
    使用NAT技术的原因:
    (1)IPv4地址耗尽,只能从ISP申请一个IP地址
    (2)本地网络设备IP地址的变更,无需通告外界网络
    (3)变更ISP时,无需修改内部网络设备IP地址
    (4)内部网络设备对外界网络不可见,即不可直接寻址(安全)
     
    NAT的实现:
    (1)替换
    利用NAT IP地址—新端口号替换每个外出IP数据报的源IP地址—源端口号
    (2)记录
    将每对NAT IP地址—新端口号与源IP地址—源端口号的替换信息存储到NAT转换表中
    (3)替换
    根据NAT转换表中的记录,替换每个进入内网的IP数据报的目的IP地址—目的端口号
    NAT主要争议:
    (1)路由器应该只处理第3层功能
    (2)违背端到端通信原则
    应用开发者必须考虑到NAT的存在,e.g., P2P应用
    (3)地址短缺问题应该由IPv6来解决
     
    NAT穿透问题:
    客户期望连接内网地址为10.0.0.1的服务器,却不能直接利用该地址直接访问服务器;对外唯一可见的地址是NAT地址138.76.29.7
    解决方案:
    (1)静态配置NAT,将特定端口的连接请求转发给服务器
    (2)利用通用即插即用(UPnP,Universal Plug and Play)互联网网关设备协议(IGD Internet Gateway Device)自动配置
    UPnP是一种允许主机发现并配置邻近NAT的协议(前提是主机和NAT兼容UPnP),其允许外部主机使用TCP或UDP向NAT化的主机发起通信会话。
    使用UPnP,在主机上运行的应用程序能够请求一个与公共端口号的NAT映射,该映射位于其专用IP地址—专用端口号和公共IP地址—公共端口号之间。如果某NAT接受该请求并生成映射,则来自外部的结点能够发起到公共IP地址—公共端口号的TCP 连接。
    此外, UPnP让该应用程序知道公共IP 地址—公共端口号,因此该应用程序能够向外部世界通告它。
    (3)中继(如Skype)
    NAT内部的客户与中继服务器建立连接、外部客户也与中继服务器建立连接。中继服务器桥接两个连接的分组。
  • 相关阅读:
    Java程序员进阶:Java异常知识点梳理
    JVM内存模型(运行时数据区)
    史前最详细的:Java线程池核心流程解析
    10年大牛给Java 初学者的学习路线建议,如何学习 Java?
    异常处理(面试题)
    115道Java经典面试题(面中率高、全)
    Java异常处理(捕获异常)
    Java异常处理(观察常见异常)
    Java异常处理(异常基本概念)
    学习笔记:Java数组
  • 原文地址:https://www.cnblogs.com/yangyuliufeng/p/9285710.html
Copyright © 2011-2022 走看看