一、前置知识
1. 网络基础
(1)数据链路层对应的是mac地址,mac地址是用来解决数据包从一个节点传递到相同链路另一个节点的寻址问题
(2)网络层对应的是ip地址,ip地址是用来解决数据包从一个网络传递到另一个网络的寻址问题
2. 七层负载均衡和四层负载均衡
(1)典型的7层负载均衡软件:Nginx,典型的4层负载均衡软件;LVS
(2)7层对应的是应用层,4层对应的是传输层,所以基于7层的负载均衡可以根据url等应用层信息进行负载,基于4层的负载均衡可以根据ip+port等信息进行负载
简单来说,7层负载更加灵活,4层负载效率更高
3. NAT技术
NAT是一种网络地址转换技术,最初是用来解决ipv4地址不足的问题。
一个经典的场景是家庭上网,一般有个路由器作为NAT设备,家庭所有成员共享同一个公网ip,如下图
路由器出产设置的默认ip是192.168.1.1,假设ISP(网络服务提供商)分配的公网ip是88.88.88.88,家里两台电脑都连上了路由器,然后同时访问百度,从网络层面看就会如下图这样
源ip地址会被替换,这就是SNAT。
但是如果仅仅只是替换ip,就会有个问题,baidu的响应数据包到达路由器上时,路由器将不知道应该发给内网的哪台机器,路由器对此有自己的解决办法,如下图
<