【计算机网络】NAT及Bridge介绍

OSI七层模型

  • 七层模型介绍及举例
    为通过网络将人类可读信息通过网络从一台设备传输到另一台设备,必须在发送设备沿 OSI 模型的七层结构向下传输数据,然后在接收端沿七层结构向上传输数据。

数据在 OSI 模型中如何流动

库珀先生想给帕尔梅女士发一封电子邮件。库珀先生在笔记本电脑的电子邮件应用程序中编写邮件,然后点击"发送"。电子邮件应用程序将电子邮件传递到应用程序层,应用程序层选取协议(SMTP),再将数据传递到表示层。接着,表示层压缩数据,再将数据传递到会话层,由会话层初始化通信会话。

而后,数据将到达发送方的传输层,在传输层进行分段,再在网络层将这些数据段分解为数据包,然后在数据链路层进一步分解为帧。随后,数据链路层将这些帧传输到物理层,物理层将数据转换为位流 1 和 0,最后通过物理介质(如电缆)发送数据。

帕尔梅女士的计算机通过物理介质(如她的 WiFi)接收位流后,数据将沿其设备的同一系列层级流动,但顺序刚好相反。首先,物理层将位流从 1 和 0 转换为帧,传递到数据链路层。然后,数据链路层将帧重组为数据包,供网络层使用。接着,网络层将数据包重组为数据段供传输层使用,传输层再将数据段重组为数据片段。

随后,数据将流入收件方的会话层,会话层将数据传递到表示层并结束通信会话。表示层解压数据并将原始数据传递到应用程序层。应用程序层将人类可读数据传递到帕尔梅女士的电子邮件软件,这样她就能在笔记本电脑屏幕上阅读库珀先生的电子邮件了。

1 虚拟机NAT

如果你的网络ip资源紧缺,但是你又希望你的虚拟机能够联网,这时候NAT模式是最好的选择。NAT模式借助虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网。


其中virbr0是由宿主机虚拟机支持模块安装时产生的虚拟网络接口,也是一个switch和bridge,负责把内容分发到各虚拟机。

从图上可以看出,虚拟接口和物理接口之间没有连接关系,所以虚拟机只能在通过虚拟的网络访问外部世界,无法从网络上定位和访问虚拟主机

virbr0是一个桥接器,接收所有到网络192.168.122.*的内容。

NAT方式并没有使用物理网卡。

2 Bridge模式

Bridge方式即虚拟网桥的网络连接方式,是客户机和子网里面的机器能够互相通信。可以使虚拟机成为网络中具有独立IP的主机

如上图,网桥的基本原理就是创建一个桥接接口br0,在物理网卡和虚拟网络接口之间传递数据。

3 虚拟机通信原理

虚拟机通过tun/tap或者其它类似的虚拟网络设备,将虚拟机内的网卡同br0连接起来,这样就达到和真实交换机一样的效果,虚拟机发出去的数据包先到达br0,然后由br0交给eth0发送出去,数据包都不需要经过host机器的协议栈,效率高。

docker通信原理

由于容器运行在自己单独的network namespace里面,所以都有自己单独的协议栈,情况和上面的虚拟机差不多,但它采用了另一种方式来和外界通信:

容器中配置网关为.9.1,发出去的数据包先到达br0,然后交给host机器的协议栈,由于目的IP是外网IP,且host机器开启了IP forward功能,于是数据包会通过eth0发送出去,由于.9.1是内网IP,所以一般发出去之前会先做NAT转换(NAT转换和IP forward功能都需要自己配置)。由于要经过host机器的协议栈,并且还要做NAT转换,所以性能没有上面虚拟机那种方案好,优点是容器处于内网中,安全性相对要高点。(由于数据包统一由IP层从eth0转发出去,所以不存在mac地址的问题,在无线网络环境下也工作良好)

参考链接

  1. Linux虚拟网络设备bridge你真搞懂了吗?
  2. # VMware虚拟机三种网络模式详解 --------- NAT(地址转换模式)
  3. # KVM虚拟机网络配置 Bridge方式,NAT方式
相关推荐
落羽的落羽1 天前
【网络】计算机网络世界的基础概念
linux·服务器·网络·c++·人工智能·计算机网络·机器学习
时空自由民.1 天前
蓝牙GAP/GATT协议和计算机网络TCP/UDP通信对比
tcp/ip·计算机网络·udp
广州服务器托管1 天前
[2026.4.27]WIN10.1809.17763.8647[PIIS]中简优化版LTSC2019 丝滑流畅 老爷机续命系统
运维·人工智能·windows·计算机网络·可信计算技术
艾莉丝努力练剑2 天前
【Linux网络】Linux 网络编程入门:UDP Socket 编程(下)
linux·运维·服务器·网络·计算机网络·安全·udp
Ether IC Verifier2 天前
OSI网络七层协议详细介绍
服务器·网络·网络协议·计算机网络·php·dpu
ん贤2 天前
计算机网络
计算机网络
liann1192 天前
3.3_tasklist和netstat命令详解
运维·windows·计算机网络·安全·信息与通信
如君愿2 天前
考研复习 Day 27 | 习题--计算机网络第四章(网络层 上)、数据结构(树与二叉树 上)
数据结构·计算机网络·考研·记录考研
@encryption3 天前
计算机网络 --- NAT
运维·服务器·计算机网络
如君愿3 天前
考研复习 Day 26 | 习题--计算机网络第三章(数据链路层 下)、数据结构 多维数组与广义表
数据结构·计算机网络·考研·记录考研