| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 认识NAT技术 -> 正文阅读 |
|
[系统运维]认识NAT技术 |
目录 NAT是解决当前IP地址不足的主要手段,是路由器的一个重要功能。核心思路就是在传递报文的时候,每到达下一跳设备,就更换一次IP地址。NAT一般集成在防火墙、路由器等硬件设备上。 一、什么是NAT技术局域网中的主机访问公网IP时,路上的路由器会将源IP地址 替换为 WAN口IP,这样的话,不同局域网的主机可以有相同的网络号和主机号。(其实也有可能替换端口号,我们暂时不考虑端口号的变化) 主机A发送的报文,源IP地址填的肯定是 192.168.0.3,传递给路由器A以后,源IP地址会被替换为WAN口IP(10.1.1.4);主机B发送的报文,源IP地址肯定也是 192.168.0.3,传递给路由器B以后,源IP地址同样会被替换为 WAN口IP(10.1.1.5) 此时,站在局域网之外的角度,路由器A传递报文的源IP地址是10.1.1.4 ,路由器B传递报文的源IP地址是10.1.1.5,因此不同局域网的主机可以有完全一样的IP地址,大大提升了IP地址的利用率。 ?二、NAT技术的作用过程以下面这个图为例 第一步,主机A封装自己的报文,源IP是192.168.1.113,目标IP是39.156.66.10,随后转发给路由器X。 第二步,路由器X收到报文,源IP替换为?WAN口IP(10.1.1.2),目标IP是39.156.66.10。现在相当于IP地址为 10.1.1.2的局域网要发送一个报文,随后转发给路由器Y。 第三步,路由器Y也是做同样的操作,源IP替换为?WAN口IP(39.156.66.25),目标IP是39.156.66.10,此时报文终于来到了服务器所处的网段。 第四步,路由器Y将报文传递给百度服务器,百度服务器收到请求,然后构建响应。 ==》这个过程中变化的只有源IP,目标IP是不变的! 三、报文如何返回??(NAPT的作用机制)1、实现方式这其实还是基于上述的NAT技术,路由器在替换IP地址的时候,并不是简单的替换,会建立起源IP和替换以后的IP的映射关系。以上述第一步为例。 路由器X收到报文以后,源IP地址是 192.168.1.113,随后会替换成路由器X 的WAN口IP(10.1.1.2),此时路由器X会建立起?192.168.1.113 与?10.1.1.2的映射关系。 假设路由器X的 映射关系(转换表)大致如下,左半部分的IP肯定都属于同一个局域网,同一个局域网里的IP是具有唯一性的,这样就保证了从右边到左边的转换不会出现歧义。在TCP的情况下, 建立连接时, 就会生成这个表项; 在断开连接后, 就 会删除这个表项
?2、结合案例分析仍然以下面这个图为例,报文到达百度服务器的时候,源IP地址变成了?39.156.66.25,目的IP是39.156.66.10。假设现在百度服务器要返回一个响应给我们的主机。 早在路由器Y替换IP的时候,路由器Y就保存了 从局域网到广域网的映射关系,假设映射关系如下:
百度服务器将响应报文发送给路由器Y,路由器Y收到的报文:源IP地址是39.156.66.10,目的IP是39.156.66.25。响应报文和前面请求报文对应,现在的源IP —— 请求报文的目的IP、现在的目的IP —— 请求报文的源IP 查询映射表的右半部分,发现报文的源IP与映射表的目的IP是一致的,报文的目的IP与映射表的源IP是一致的,说明来的时候走的就是这条路,此时就会将目的IP替换为 10.1.1.2。 后面查询路由器X的转换表也是这种方式。 三、虚拟机NAT模式我们有的时候会在自己的电脑上安装虚拟机,其中有NAT模式和桥接模式。NAT模式就是把主系统当作一个大路由器,每次虚拟机发送请求都要经过主系统,同时主系统需要帮你维护转换表。 四、公网无法主动访问局域网的原因现在就可以理解 一些公网IP为什么无法访问我们的主机?我们的局域网IP并不是全球唯一的,如果我们没有访问过那些IP,也就没有转换表,他们在传递报文的时候,无法根据转换表替换报文的目的IP。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 9:56:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |