网络地址转换(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. 给我半首歌的时间,给你说明白Immutable List

    先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. ...

  2. bootstrap-treeview 研究一下

    一直以来都是拿来主义,现在正好有空,也正好用到,准备好好研究下bootstrap-treeview. 实现目标:可搜索,可复选选中的权限控制菜单项. 研究失败 转 jstree

  3. LQB2013A01高斯日记

    诶,今天发生了点不是很开心的事.说实话挺影响心情的啊(谁遇见这种事不生气呢啊啊啊啊) 但是不能水更,还是得好好更新呀. 这个题居然直接用excel哈哈哈哈 那,,就这样吧!

  4. layer弹窗插件留言提交

    function msgShow(getname,getuserid){ layer.open({ type: 1 //此处以iframe举例 ,title: '收件人:'+getname+'(ID: ...

  5. AI大有可为:NAIE平台助力垃圾分类

    摘要:生活垃圾的分类和处理是目前整个社会都在关注的热点,如何对生活垃圾进行简洁高效的分类与检测对垃圾的运输处理至关重要.AI技术在垃圾分类中的应用成为了关注焦点. 如今AI已经是这个时代智能的代名词了 ...

  6. Day01_虚拟化架构与系统部署

    学于千峰教育开源课程 感恩 千峰教育官网 b站在线视频 前言:本人所使用的操作系统是MacOS 使用的虚拟机软件为parallels desktop 本章结构 构建桌面端虚拟环境 虚拟机的概述 VMa ...

  7. Python字符串更新

    Python字符串更新:截取字符串的某一部分 和 其他字符串进行拼接. 注:可以修改字符串的值,但修改的不是内存中的值,而是创建新的字符串. 1.使用字符串常量进行更新: # 使用字符串常量 strs ...

  8. C/C++编程笔记:《C语言》—— 数组知识详解,学编程建议收藏!

    作者:龙跃十二链接:https://www.imooc.com/article/300814 ,微信公众号:龙跃十二 数组的基本概念 我们把一组数据的集合称为数组(Array),它所包含的每一个数据叫 ...

  9. HDU 1756 Cupid's Arrow 计算几何 判断一个点是否在多边形内

    LINK:Cupid's Arrow 前置函数 atan2 返回一个向量的幅角.范围为[Pi,-Pi) 值得注意的是 返回的是 相对于x轴正半轴的辐角. 而判断一个点是否在一个多边形内 通常有三种方法 ...

  10. MySQL的undo/redo日志和binlog日志,以及2PC

    发现自己的知识点有点散,今天就把它们连接起来,好好总结一下. 一.undo log.redo log.binlog的定义和对比   定义和作用                       所在架构层级 ...