nginx的4层和7层代理的区别(附OSI网络模型)
目录
问题现象:
问题分析:
代理原理:
总结:
拓展:
问题现象:
最近在复习nginx的时候看到一个面试题:
nginx的4层和7层代理的区别?
问题分析:
4层和7层指的是什么呢?其实是涉及到了我们可能都知道但是记不太清楚的OSI网络模型了。
(tips:这个OSI网络模型的简介,我会在文末的拓展节点里面贴出)
下面我就结合个人理解,简单地总结一下nginx的4层和7层代理的区别:
4层是指传输层的 TCP/UDP 协议。
7层是指应用层的 HTTP 协议。
代理原理:
4层代理:使用NAT(Network Address Translation)技术,即网络地址转换。即请求进来的时候,nginx只修改数据包里面的目标IP、源IP、端口,然后就直接把数据包发给目标服务器(即nginx不知道请求的具体内容),目标服务器处理完成后,发给nginx,nginx数据包再做一次类似的修改,就返回给请求的客户端了。
7层代理:nginx读取并解析Http请求内容,然后将具体内容(请求行、请求头、空行、请求数据)转发到相应的服务器,转发的过程是:建立和目标机器的连接,然后转发请求,收到响应数据再转发给请求客户端。
总结:
- 理论上4层要比7层快,因为7层代理需要解析数据包的具体内容,需要消耗额外的cpu。但nginx具体强大的网络并发处理能力, 对于一些慢连接,nginx可以先将网络请求数据缓冲完,再一次性转发给上游server(目标服务器),这样对于上游网络并发处理能力弱的服务器(比如tomcat)来说,就是将慢连接变成快连接(nginx到tomcat基本上都是可靠内网),从而节省网络数据缓冲时间,提供并发性能。
- 由于4层代理用的是NAT(“网络地址转换”),所以nginx不知道请求的具体内容,所以nginx啥也干不了。用7层代理,可以根据请求内容(请求行、请求头、空行、请求数据)做很多事情,如动态转发代理、网关拦截、记录请求日志等。
- 由于现在机器cpu性能都很好,4层代理并没有明显的性能优势,而7层代理在业务方面优势明显,所以一般都是使用7层代理。
拓展:
OSI网络模型(共7层):
网络模型/七层模型,也称为OSI(Open System Interconnection)参考模型,从上往下的,越往下越接近硬件,越往上越接近软件:
- 应用层(HTTP、FTP、DNS、Telnet)
- 表示层(url加密、序列化加解码)
- 会话层(session)
- 传输层(TCP、UDP、端口socket)
- 网络层(低层:IP、路由器、防火墙)
- 链路层/数据链路层(低层:网卡、网桥)
- 物理层(低层:物理硬件)
老规矩,上个图方便理解和记忆:
nginx的4层和7层代理的区别(附OSI网络模型)相关推荐
- 【网站架构】Nginx 4层、7层代理配置,正向代理、反向代理详解
大家好,欢迎来到停止重构的频道. 本期我们讨论网络代理. 在往期<大型网站 安全性>介绍过,出于网络安全的考虑,一般大型网站都需要做网络区域隔离,以防止攻击者直接操控服务器. 网站系统的应 ...
- Nginx 七层及四层反向代理配置
文章目录 部署测试 http服务 nginx反向代理 http服务 nginx 通过 https反向代理 http服务 Nginx Stream模块负载均衡测试 准备测试用 https服务 nginx ...
- Nginx 4层和7层
小编在面试的时候 被问到了,Nginx4层和Nginx7层,心里一阵慌张 不就是OSI 4层和7层嘛.难道是问我底层的原理吗? 4层代理和7层代理什么意思? 这里的层是OSI 7层网络模型,OSI 模 ...
- Service 层和 Dao 层有必要为每个类都加上接口吗?
以下文章来源方志朋的博客,回复"666"获面试宝典 作者:架构思维 toutiao.com/i6882356844245975563 前几天刷头条又刷到了「Service层和Da ...
- 安卓逆向_24( 一 ) --- Hook 框架 frida( Hook Java层 和 so层) )
From:Hook 神器家族的 Frida 工具使用详解:https://blog.csdn.net/FlyPigYe/article/details/90258758 详解 Hook 框架 frid ...
- 【详细七层】OSI 网络模型,七层网络模型
OSI 网络模型 在讲到Nginx负载均衡的时候,其实Nginx是七层负载均衡,后续我们还会涉及到LVS,是四层负载均衡,七层和四层是什么概念呢?这就必须提到网络模型.网络模型是计算机网络基础的一部分 ...
- 为什么dao层和service层要用接口?
DAO接口 为每个DAO声明接口的好处在于: 可以在尚未实现具体DAO的时候编写上层代码,如Service里对DAO的调用 可以为DAO进行多实现,例如有JDBCDAO实现,MyBatisDAO实现, ...
- QQ/微信背后的即时通讯技术细节,方案选择丨接入层丨逻辑层丨web方案
QQ/微信背后的即时通讯技术细节,方案选择 接入层:协程,异步io,tcp/udp 逻辑层:协议选择protobuf,mqtt web方案:websocket,comet [技术分享篇]qq微信背后的 ...
- SSH、SSM三种框架及表示层、业务层和持久层的理解
Struts(表示层)+Spring(业务层)+Hibernate(持久层) SSH:Struts(表示层)+Spring(业务层)+Hibernate(持久层) Struts:Struts是一个表示 ...
最新文章
- 取代java_如何评价 Kotlin?未来是否会取代 Java?
- MAML-Tracker:用目标检测思路做目标跟踪?小样本即可得高准确率丨CVPR 2020
- python使用imbalanced-learn的BorderlineSMOTE方法进行上采样处理数据不平衡问题
- 【转载】Python常用模块之sys
- linux系统编程:线程原语
- IP核引发的关于定,浮点数的认识
- 线性代数与MATLAB2
- Mentor Graphics QuestaSim 2021 出现“正在运行后安装脚本...脚本:1/1”的问题
- stc15w404as引脚图_STC15W408AS系列
- 基于Python深度学习的DGA域名检测
- 微pe不识别nvme固态硬盘_WinPE无法识别NVMe SSD硬盘,如何重装系统
- Java将文件转换成二维码
- 寒冰老师 计算机 山西,计算机科学与技术口号, 计算机培训小组口号
- zblog php mip,ZBlogPhp模版-极简百度MIP自适应主题
- CTF基础知识与web信息泄露下的目录遍历、PHPINFO、备份文件下载
- 教你一招轻松搞定mp3格式转换
- win10 远程桌面卡顿_win10远程桌面连接卡如何解决_windows10远程连接桌面很卡怎么处理...
- 和菜头_《写给应届毕业生的99条箴言》读书笔记
- 《股票魔法师》第6-7章读书分享
- 百度地图的植入流程介绍
热门文章
- C语言单元测试框架详解:第一篇
- OSM地图本地发布(四)-----Geoserver发布自定义地图
- BRVAH(BaseRecyclerViewAdapterHelper)多样式的使用
- 公众号开发: 给用户发红包
- LaxTex上的算法表格如何在word中完美的表示出来-Aurora Equation
- 35岁中年危机如何应对
- 中国汽车服务行业投资发展策略及运营商机研究报告2021-2027年
- oracle 49152,使用 snoop 命令监视包传送 - Oracle Solaris 管理:IP 服务
- Dell戴尔笔记本电脑Vostro 5502原装出厂系统恢复原厂系统2004
- 我们老得太快,聪明却来得太迟