【网络原理 7】NAT 机制的工作流程

🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇

NAT 技术

🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇

今日推荐歌曲: That's Us -- Anson Seabra 🎵🎵


系列文章目录

【 网络原理 1】 网络编程原理基础知识-CSDN博客

【网络原理 2】UDP 协议的报文结构和注意事项-CSDN博客

【网络原理 3】TCP协议的相关特性(三次握手,四次挥手)(万字详解)看完必懂 !-CSDN博客

【网络原理 4 】应用层中 服务器和客户端的传输-CSDN博客

【网络原理 5 】网络层中的 " 主宰 " IP 协议-CSDN博客

【网络原理 6 】数据链路层-CSDN博客


目录

NATIP转换过程

NAPT

NAT技术的优缺点

总结


前言

之前我们讨论了,IPv4协议中,IP地址数量不充⾜的问题

NAT技术当前解决IP地址不够⽤的主要⼿段,是路由器的⼀个重要功能;

• NAT能够将私有IP对外通信时转为全局IP.也就是就是⼀种将私有IP和全局IP相互转化的技术⽅法

• 很多学校,家庭,公司内部采⽤每个终端设置私有IP,⽽在路由器或必要的服务器上设置全局IP;

• 全局IP要求唯⼀,但是私有IP不需要;在不同的局域⽹中出现相同的私有IP是完全不影响的;


NATIP转换过程

  • NAT路由器将源地址从10.0.0.10替换成全局的IP202.244.174.37;
  • NAT路由器收到外部的数据时,⼜会把⽬标IP从202.244.174.37替换回10.0.0.10;
  • 在NAT路由器内部,有⼀张⾃动⽣成的,⽤于地址转换的表;
  • 当10.0.0.10第⼀次向163.221.120.9发送数据时就会⽣成表中的映射关系;

NAPT

那么问题来了,如果局域⽹内,有多个主机都访问同⼀个外⽹服务器,那么对于服务器返回的数据中,⽬ 的IP都是相同的.那么NAT路由器如何判定将这个数据包转发给哪个局域⽹的主机?

这时候NAPT来解决这个问题了.使⽤IP+port来建⽴这个关联关系

​​​​​​​​​​​​​​

这种关联关系也是由NAT路由器⾃动维护的.例如在TCP的情况下,建⽴连接时,就会⽣成这个表项;在断 开连接后,就会删除这个表项


NAT技术的优缺点

由于NAT依赖这个转换表,所以有诸多限制:

• ⽆法从NAT外部向内部服务器建⽴连接;

• 装换表的⽣成和销毁都需要额外开销;

• 通信过程中⼀旦NAT设备异常,即使存在热备,所有的TCP连接也都会断开;

但是NAT有⼀个最⼤的优点:不需要更新硬件设备,只更新软件,就可以解决IP地址不够⽤的问题 !

总结

NAT(Network Address Translation,网络地址转换)是一种网络协议,用于将私有网络中的IP地址转换为公共网络中的IP地址,从而实现内部网络与外部网络的通信。其工作流程如下:

  1. 内部主机发送数据包: 当内部主机(例如家庭或企业网络中的计算机或设备)要发送数据包到外部网络时,它首先创建一个数据包,其中包含目标主机的IP地址和端口号。

  2. NAT路由器接收数据包: 数据包进入连接到内部网络的NAT路由器。

  3. 源地址转换: NAT路由器检查数据包的源IP地址。如果这是一台位于内部网络上的主机发送的数据包,则NAT路由器会将源IP地址从内部私有IP地址(例如192.168.x.x或10.x.x.x)转换为路由器在公共网络接口上配置的公共IP地址。

  4. 端口转换: NAT路由器为数据包分配一个唯一的端口号。这是为了确保来自不同内部主机的数据包能够在公共网络上正确识别和路由。

  5. 转发到外部网络: 经过地址和端口转换后,数据包被发送到外部网络,以便与目标主机通信。

  6. 接收响应: 外部网络中的目标主机收到数据包后,将响应数据包发送回NAT路由器。

  7. 目标地址转换: NAT路由器检查响应数据包的目标IP地址。如果这是一台内部主机请求的响应,则NAT路由器会将目标IP地址从公共IP地址转换为内部私有IP地址。

  8. 端口转换恢复: NAT路由器根据之前的端口映射将响应数据包发送到正确的内部主机。

  9. 数据包传递给内部主机: 最终,经过地址和端口转换的响应数据包被传递给正确的内部主机,完成了通信。

通过NAT,内部网络可以使用私有IP地址进行通信,并通过单个公共IP地址访问外部网络,从而增加了网络的安全性和灵活性。

博客不易,希望可以帮助到大伙,动动小手点个赞我会开心很久,感谢阅览。

相关推荐
4647的码农历程19 分钟前
Linux网络编程 -- 网络基础
linux·运维·网络
向李神看齐23 分钟前
RTSP协议讲解
网络
Death20028 分钟前
使用Qt进行TCP和UDP网络编程
网络·c++·qt·tcp/ip
魏大橙41 分钟前
linux RCE本地/公网测试
网络·网络协议·udp
陈逸轩*^_^*1 小时前
Java 网络编程基础
java·网络·计算机网络
l1x1n02 小时前
网络安全概述:从认知到实践
网络
鄃鳕2 小时前
HTTP【网络】
网络·网络协议·http
蜡笔小新星2 小时前
Python Kivy库学习路线
开发语言·网络·经验分享·python·学习
小白爱电脑4 小时前
WIFI网速不够是不是光猫的“路由模式”和“桥接模式”配置错了?
网络·智能路由器·桥接模式
qxqxa5 小时前
cfg80211是怎么配置无线设备的AP的?
网络·驱动开发