深入理解LVS篇:网络通信原理(一)局域网间通讯之路由转发

写这篇博客的目的

LVS涉及的网络知识较多,所以一篇文章无法完全将其解释明白。本系列文章将从以下几个模块讲起:

  • 网络通讯原理
  • LVS的三种工作模式NAT DR TUN
  • 搭建自己的LVS服务器
  • Keepalived+LVS实现HA
    其中,网络通讯原理将会从OSI7层模型开始,介绍数据包从客户端发送给服务器的整个流程,中途会包括但不限于TCP\UDPARP协议交换机路由器等知识。好了,我们开始吧。

什么是LVS

LVS(Linux Virtual Server)是国内大神章文嵩发明的一款基于网络4层协议的负载均衡器,起初只是一款Linux上的开源软件,但由于性能优越,后被Linux加入到了内核当中,成为了Linux上自带的一款负载均衡神器。

网络7层模型/4层模型

我们常见的网络模型是7层模型,从应用层到物理层依次是:应用层表示层会话层传输控制层网络层数据链路层物理层。也有更精简版的4层模型,将应用层、表示层和会话层统一为应用层,把数据链路层和物理层统一为数据链路层,其结构和每层对应的协议如下所示:

OSI七层模型
TCP/IP四层模型
对应网络协议
应用层(Application)
应用层
HTTP、TFTP, FTP, NFS, WAIS、SMTP
表示层(Presentation)
Telnet, Rlogin, SNMP, Gopher
会话层(Session)
SMTP, DNS
传输层(Transport)
传输层
TCP, UDP
网络层(Network)
网络层
IP, ICMP, ARP, RARP, AKP, UUCP
数据链路层(Data Link)
数据链路层
FDDI, Ethernet, Arpanet, PDN, SLIP, PPP
物理层(Physical)
IEEE 802.1A, IEEE 802.2到IEEE 802.11

我们知道,网络通讯是以数据包的形式进行传输,数据包从应用层->物理层实际上是一层一层装包的过程,比如在应用层中装入请求头请求体等信息,在网络层中封装源IP目标IP等信息,在数据链路层中封装路由下一跳的MAC地址信息。
数据包格式

当我们访问网站的时候,底层究竟做了什么?

我们先来认识一样东西:路由表
在Linux中查看路由表命令:route
在这里插入图片描述
这里有几个名词:

  • Destination 目标网段
  • Gateway 网关
  • Genmask 子网掩码,*代表在本地局域网中,无需跳转。
    比如如果我想访问IP为192.168.174.11的这台机器,路由器收到这个请求后会拿192.168.174.11与子网掩码做逻辑与运算,得出的结果与Destination进行比对,如果匹配得上,就会根据Gateway中的ip地址进行转发。

我们以最简单的一个网络拓扑模型来展示计算机与计算机之间如何进行通讯,假设你家的拓扑模型如下,网络中共有2台计算机1个路由器
网络拓扑模型
我们现在来模拟橙色主机绿色主机的通讯流程,首先,由橙色主机发起一个数据包A,数据包到达路由器后会拿目标IP与自己的路由表做逻辑与运算:

192.168.174.11
255.255.255.0
--------------
192.168.174.0

我们会发现一个很特殊的路由条目,它的子网掩码是0.0.0.0,他就是我们的默认路由,也就说,如果在路由表中找不到目标IP,我们的数据包会转而发送给IP为192.168.174.2的机器进行处理。
运算过后,发现目标IP在局域网中,路由器就会将数据包丢给交换机,交换机会维护一张IP地址与MAC地址对应的表,由这层对应关系来将数据包进行转发。具体过程如下:
在这里插入图片描述
如此一来,就完成了最简单的局域网通讯。

交换机是处于二层模型的设备,所以交换机并不会去拆开数据包的IP地址来做转发。
它内部维护一张映射表,映射了局域网段内的IP地址和其对应端口,这将会涉及到ARP协议,我打算下一篇文章再详细讲述它。

发布了5 篇原创文章 · 获赞 0 · 访问量 492

猜你喜欢

转载自blog.csdn.net/TheRainManFSA/article/details/105347252
今日推荐