网络地址转换(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内部的客户与中继服务器建立连接、外部客户也与中继服务器建立连接。中继服务器桥接两个连接的分组。

计算机网络-网络层(2)NAT协议的更多相关文章

  1. 计算机网络参考模型与5G协议

    计算机网络参考模型与5G协议 目录 一.分层思想 1.1·2:分层思想概念 1.2.优点 二.OSI七层参考模型 三.TCP/IP协议族 3.1.TCP/IP协议族的组成 3.2.OSI模型与TCP/ ...

  2. 计算机网络之tcp/ip协议族

    TCP/IP协议族是一个四层协议系统: 1. 数据链路层   1.1 作用  (1) 实现网卡接口的网络驱动,以处理数据在以太网线等物理媒介上的传输  (2) 网络驱动程序隐藏了不同物理网络的不同电气 ...

  3. 计算机网络-3-2-点对点协议PPP

    点对点协议PPP 在通信链路较差的年代,在数据链路层使用可靠传输协议曾经是一种好方法,比较简单的点对点PPP协议则是目前使用最广泛的数据链路层协议. PPP协议的特点 互联网用户通过都要连接到某个IS ...

  4. 图文并茂详解 NAT 协议!

    什么是 NAT 协议 我们的计算机要想访问互联网上的信息,就需要一个地址,而且这个地址是大家(其他主机)所认可的,是公共的,这个地址也叫做公有 IP 地址. 与之相对的,除了公有 IP 地址外,还有私 ...

  5. 计算机网络 4.网络层与IP协议

    网络中的每一台主机和路由器都有一个网络层部分.而路由器中也没有网络层以上的层次.网络层是协议栈中最复杂的层次. 转发forwarding:当一个分组到达某路由器的输入链路时.该路由器将分组移动到适当的 ...

  6. 计算机网络-网络层(6)ICMP协议

    互联网控制报文协议(ICMP,Internet Control Message Protocol),被主机和路由器用来彼此沟通网络层的信息 ICMP报文是承载在IP分组中的,即lCMP报文是作为IP有 ...

  7. 计算机网络-网络层(3)DHCP协议

    主机获得IP地址,除了可以通过静态配置,还可以通过动态主机配置协议DHCP: Dynamic Host Configuration Protocol从服务器动态获取IP地址.子网掩码.默认网关地址.D ...

  8. 重读 谢希仁《计算机网络》3 - 网络层和IP协议

  9. 计算机网络——网络层

    一.虚拟线路与数据报线路 1. 在网络层提供有连接的计算机网络为虚电路网络: 如因特网:它需要VC(虚拟电路)号,用于建立虚拟电路的报文称为信令报文,相关的协议称为信令协议: 无连接的网络为数据报网络 ...

随机推荐

  1. C# 13位时间戳(unix时间戳)

    1.转义字符用在中间. "\"' 2.C#获取13位时间戳(unix时间戳) /// <summary>   /// 将c# DateTime时间格式转换为Unix时间 ...

  2. Python while 中简单的语句组

    Python while 中简单的语句组: 只使用 while: # 简单的语句组 a = 4 b = 8 num = 0 while a < b: print("a 比 b 小&qu ...

  3. centos7安装单机环境redis3.2

    本次安装的系统版本如下: [root@zhangqinglei ~]# cat /etc/redhat-releaseCentOS Linux release 7.5.1804 (Core) [roo ...

  4. PHP gregoriantojd() 函数

    ------------恢复内容开始------------ 实例 把格利高里历法的日期转换为儒略日计数,然后再转换回格利高里历法的日期: <?php$jd=gregoriantojd(6,20 ...

  5. PHP filectime() 函数

    定义和用法 filectime() 函数返回指定文件的上次修改时间. 该函数将检查文件的日常修改情况和 inode 修改情况.inode 修改情况是指:权限的修改.所有者的修改.用户组的修改或其他元数 ...

  6. JDBC(1)-数据库连接和CRUD操作

    关于jdbc的全部jar包 链接:https://pan.baidu.com/s/1peofgu89SpepTTYuZuphNw 提取码:vd5v 一.获取数据库连接 1. Driver接口介绍 ja ...

  7. 用好这几个技巧,解决Maven Jar包冲突易如反掌

    前言 大家在项目中肯定有碰到过Maven的Jar包冲突问题,经常出现的场景为: 本地运行报NoSuchMethodError,ClassNotFoundException.明明在依赖里有这个Jar包啊 ...

  8. [转]Spring Security架构

    作者:before31原文:https://my.oschina.net/xuezi/blog/3126351 本指南是Spring Security的入门,它提供了对该框架的设计和基本构建的见解.我 ...

  9. 原来写个Vue 首页就这么简单

    全栈的自我修养: 为我们的项目添加首页 You can never replace anyone. What is lost is lost. 每个人都是无可替代的,失去了便是失去了. 前言 上篇文章 ...

  10. OAuth2.0-2jwt令牌

    JWT令牌 解决了之前普通令牌每次都要远程校验令牌带来得网络消耗:(有网友说可以将令牌验证从认证服务器上放到各个资源服务器上,不知是否可行?) JWT令牌的优点: 1.jwt基于json,非常方便解析 ...