我的编程空间,编程开发者的网络收藏夹
学习永远不晚

nginx七层代理和四层转发的理解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

nginx七层代理和四层转发的理解

先来理解一下osi七层模型

应用层             应用层是ISO七层模型的最高层,它直接与用户和应用程序交互,提供用户与网络的接口。它包括各种应用协议,如HTTP、FTP、SMTP等,用于实现特定应用的功能和通信表示层             表示层负责数据的格式转换、加密和压缩,以确保不同系统之间的数据格式兼容性,并提供数据安全和加密功能会话层             会话层负责建立、管理和终止会话(Session)或连接。它提供了会话的同步、管理和恢复功能,以确保不同应用程序之间的通信顺利进行传输层             传输层负责端到端的数据传输和可靠性。它提供了传输控制协议(TCP)和用户数据报协议(UDP)等传输协议,用于实现可靠的数据传输、流量控制和错误恢复网络层             网络层负责在不同的网络之间进行路由和转发,以确保数据能够正确地从源节点传输到目标节点。它处理逻辑地址(如IP地址),选择最佳路径,并进行分组和路由选择数据链路层      数据链路层位于物理层之上,负责在直接相连的节点之间传输数据。它将比特流划分为帧(Frame),并提供了错误检测、流控制和访问控制等功能,以确保可靠的数据传输物理层             物理层是ISO七层模型的最底层,负责在物理媒介上传输原始比特流。它定义了电压、电缆规范、物理连接和传输速率等物理特性

在了解一下接收数据包的工作流程

在防火墙接收到数据包后,因为用的是DNAT端口映射功能,所以用的是四层转发,按照osi七层模型从下往上拆包到四层,根据DNAT规则转发到后端的nginx上,nginx用的是HTTP七层代理,所以需要继续从四层拆包到七层,在根据nginx的规则转发到后端的服务

封包从上往下封装,且只有外网传输是需要封装安装包的,内网传输是不需要封装安装包的

数据包的拆包和封装主要发生在网络通信的边界处,尤其是在数据包从一个网络设备到另一个网络设备的过程中。当数据包跨越网络边界时,它们需要按照相应的协议规范进行拆包和封装,以适应不同的网络环境

在同一个内网环境中,如果数据包只是在内网中传输,没有经过网络边界,那么通常不需要进行显式的拆包和封装操作。例如,在内网中的数据包在经过网络交换机或路由器时,会根据目标设备的MAC地址或IP地址进行直接转发,而无需进行拆包和封装

nginx七层代理

nginx的七层代理作用于应用层,Nginx可以通过解析HTTP协议头部信息来处理和转发请求。它能够检查和修改HTTP请求和响应的头部,进行URL重写、反向代理、负载均衡、缓存、SSL终端等功能。通过这些功能,Nginx可以实现灵活的HTTP请求处理和流量分发

nginx使用七层代理,在接收到数据包后,需要将数据包按照osi七层模型从下往上拆包到七层,解析请求头和请求体,提取请求方法、URL、头部信息、有效负载数据等内容,nginx根据配置的策略,通过七层协议直接转发到后端的服务中,nginx的七层代理功能需要处理数据包中的数据,效率远远比不上四层转发的效率

nginx四层转发

nginx的四层转发作用于传输层,Nginx可以基于传输层协议(如TCP和UDP)进行流量转发。它可以接收客户端的传输层请求,并将其转发给后端服务器。这种四层转发通常用于负载均衡和高可用性方案,将传入的请求分发到多个后端服务器,以提高系统的性能和容错能力

nginx使用四层转发,在接收到数据包后,需要将数据包按照osi七层模型从下往上拆包到四层,提取出源IP地址、目标IP地址、源端口号和目标端口号等传输层信息,再根据配置的负载均衡算法和策略,转发给相应的目标服务器,在此过程中nginx不需要处理数据包中的数据,这使得Nginx在进行高性能的负载均衡和代理转发时能够快速、有效地处理大量的请求

关于高并发架构的讲解

在一个数据量特别大的高并发架构中,单纯使用nginx的七层代理是不够的,因为nginx的七层代理需要处理数据,在数据量大的时候,nginx的资源消耗就会特别高,很容易就会出现资源不足的情况,在此情况下,我们需要使用nginx的高可用架构,keepalived+lvs+nginx的架构,就能很好的应对高并发流量的情况,使用lvs的四层转发到后面的多个nginx中实现负载均衡,主要是四层转发不需要处理数据包中的数据,只做单纯的转发,不会出现主机资源不足的情况,所以可以处理大量的请求,通过四层转发到多个nginx后,nginx再通过七层代理功能去将数据转发到后端的服务中,具体的工作过程可以参考以上的解释,而keepalived的作用是实现lvs的高可用,lvs也可以使用haproxy代替,主要还是看数据量的大小

来源地址:https://blog.csdn.net/ApexPredator/article/details/131576693

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

nginx七层代理和四层转发的理解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

haproxy 7层负载均衡代理转发实战讲解

HAProxy是一个开源的、高性能的负载均衡软件,可以用于将传入的请求分发到不同的后端服务器上,以实现高可用性和性能优化。在7层负载均衡中,HAProxy可以通过检查传入请求的内容,如HTTP头部、URL、Cookie等信息,将请求分发到不
2023-09-22

JavaScript 代理模式的深层解析:从理论到实践

JavaScript 代理模式是一种强大的设计模式,允许您在现有对象的基础上创建其加强或扩展版本。本文深入探讨代理模式的原理、类型,并通过代码示例展示其应用。
JavaScript 代理模式的深层解析:从理论到实践
2024-03-09

怎么实现Nginx路由转发和反向代理location配置

这篇文章主要讲解了“怎么实现Nginx路由转发和反向代理location配置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么实现Nginx路由转发和反向代理location配置”吧!Ngi
2023-06-25

Java中Set集合的使用和底层原理解析

这篇文章主要介绍了Java中Set集合的使用和底层原理,Set集合的功能上基本上与Collection的API一致,Set集合没有扩展额外的API,本文通过示例代码给大家详细讲解,需要的朋友可以参考下
2022-12-10

深入了解Java中finalize方法的作用和底层原理

这篇文章主要为大家详细介绍了Java中finalize方法的作用和底层原理,文中的示例代码讲解详细,具有一定的学习价值,需要的可以参考一下
2022-12-29

Nginx重写功能和反向代理的用法详解

本文介绍了Nginx重写功能和反向代理的详细用法。重写功能:允许使用正则表达式修改请求路径或属性。可用于重定向旧URL、清除参数、隐藏内部路径等。反向代理:作为代理服务器转发请求到后端。可用于负载均衡、缓存、安全性、故障转移。组合使用:重写可将请求路径部分转发到反向代理。最佳实践:使用明确的正则表达式。使用last标志避免不必要的重写。仔细测试重写规则。监控反向代理性能。采取安全措施。
Nginx重写功能和反向代理的用法详解
2024-04-02

了解CSS选择器通配符的权重和优先级的深层次理解

深入理解CSS选择器通配符的权重和优先级在CSS样式表中,选择器是用来指定样式应用于哪些HTML元素的重要工具。选择器的优先级和权重决定了当多个规则同时作用于一个HTML元素时,应用哪个样式。通配符选择器是CSS中一种常见的选择器。它使用“
了解CSS选择器通配符的权重和优先级的深层次理解
2023-12-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录