目录

问题现象:

问题分析:

代理原理:

总结:

拓展:


问题现象:

最近在复习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请求内容,然后将具体内容(请求行、请求头、空行、请求数据)转发到相应的服务器,转发的过程是:建立和目标机器的连接,然后转发请求,收到响应数据再转发给请求客户端。

​​​​​​​

总结:

  1. 理论上4层要比7层快,因为7层代理需要解析数据包的具体内容,需要消耗额外的cpu。但nginx具体强大的网络并发处理能力, 对于一些慢连接,nginx可以先将网络请求数据缓冲完,再一次性转发给上游server(目标服务器),这样对于上游网络并发处理能力弱的服务器(比如tomcat)来说,就是将慢连接变成快连接(nginx到tomcat基本上都是可靠内网),从而节省网络数据缓冲时间,提供并发性能。
  2. 由于4层代理用的是NAT(“网络地址转换”),所以nginx不知道请求的具体内容,所以nginx啥也干不了。用7层代理,可以根据请求内容(请求行、请求头、空行、请求数据)做很多事情,如动态转发代理、网关拦截、记录请求日志等。
  3. 由于现在机器cpu性能都很好,4层代理并没有明显的性能优势,而7层代理在业务方面优势明显,所以一般都是使用7层代理

拓展:

OSI网络模型(共7层):

网络模型/七层模型,也称为OSI(Open System Interconnection)参考模型,从上往下的,越往下越接近硬件,越往上越接近软件

  1. 应用层HTTPFTP、DNS、Telnet
  2. 表示层url加密、序列化加解码
  3. 会话层session
  4. 传输层TCP、UDP、端口socket
  5. 网络层低层IP、路由器、防火墙
  6. 链路层/数据链路层低层网卡、网桥
  7. 物理层低层物理硬件

老规矩,上个图方便理解和记忆:

nginx的4层和7层代理的区别(附OSI网络模型)相关推荐

  1. 【网站架构】Nginx 4层、7层代理配置,正向代理、反向代理详解

    大家好,欢迎来到停止重构的频道. 本期我们讨论网络代理. 在往期<大型网站 安全性>介绍过,出于网络安全的考虑,一般大型网站都需要做网络区域隔离,以防止攻击者直接操控服务器. 网站系统的应 ...

  2. Nginx 七层及四层反向代理配置

    文章目录 部署测试 http服务 nginx反向代理 http服务 nginx 通过 https反向代理 http服务 Nginx Stream模块负载均衡测试 准备测试用 https服务 nginx ...

  3. Nginx 4层和7层

    小编在面试的时候 被问到了,Nginx4层和Nginx7层,心里一阵慌张 不就是OSI 4层和7层嘛.难道是问我底层的原理吗? 4层代理和7层代理什么意思? 这里的层是OSI 7层网络模型,OSI 模 ...

  4. Service 层和 Dao 层有必要为每个类都加上接口吗?

    以下文章来源方志朋的博客,回复"666"获面试宝典  作者:架构思维 toutiao.com/i6882356844245975563 前几天刷头条又刷到了「Service层和Da ...

  5. 安卓逆向_24( 一 ) --- Hook 框架 frida( Hook Java层 和 so层) )

    From:Hook 神器家族的 Frida 工具使用详解:https://blog.csdn.net/FlyPigYe/article/details/90258758 详解 Hook 框架 frid ...

  6. 【详细七层】OSI 网络模型,七层网络模型

    OSI 网络模型 在讲到Nginx负载均衡的时候,其实Nginx是七层负载均衡,后续我们还会涉及到LVS,是四层负载均衡,七层和四层是什么概念呢?这就必须提到网络模型.网络模型是计算机网络基础的一部分 ...

  7. 为什么dao层和service层要用接口?

    DAO接口 为每个DAO声明接口的好处在于: 可以在尚未实现具体DAO的时候编写上层代码,如Service里对DAO的调用 可以为DAO进行多实现,例如有JDBCDAO实现,MyBatisDAO实现, ...

  8. QQ/微信背后的即时通讯技术细节,方案选择丨接入层丨逻辑层丨web方案

    QQ/微信背后的即时通讯技术细节,方案选择 接入层:协程,异步io,tcp/udp 逻辑层:协议选择protobuf,mqtt web方案:websocket,comet [技术分享篇]qq微信背后的 ...

  9. SSH、SSM三种框架及表示层、业务层和持久层的理解

    Struts(表示层)+Spring(业务层)+Hibernate(持久层) SSH:Struts(表示层)+Spring(业务层)+Hibernate(持久层) Struts:Struts是一个表示 ...

最新文章

  1. 取代java_如何评价 Kotlin?未来是否会取代 Java?
  2. MAML-Tracker:用目标检测思路做目标跟踪?小样本即可得高准确率丨CVPR 2020
  3. python使用imbalanced-learn的BorderlineSMOTE方法进行上采样处理数据不平衡问题
  4. 【转载】Python常用模块之sys
  5. linux系统编程:线程原语
  6. IP核引发的关于定,浮点数的认识
  7. 线性代数与MATLAB2
  8. Mentor Graphics QuestaSim 2021 出现“正在运行后安装脚本...脚本:1/1”的问题
  9. stc15w404as引脚图_STC15W408AS系列
  10. 基于Python深度学习的DGA域名检测
  11. 微pe不识别nvme固态硬盘_WinPE无法识别NVMe SSD硬盘,如何重装系统
  12. Java将文件转换成二维码
  13. 寒冰老师 计算机 山西,计算机科学与技术口号, 计算机培训小组口号
  14. zblog php mip,ZBlogPhp模版-极简百度MIP自适应主题
  15. CTF基础知识与web信息泄露下的目录遍历、PHPINFO、备份文件下载
  16. 教你一招轻松搞定mp3格式转换
  17. win10 远程桌面卡顿_win10远程桌面连接卡如何解决_windows10远程连接桌面很卡怎么处理...
  18. 和菜头_《写给应届毕业生的99条箴言》读书笔记
  19. 《股票魔法师》第6-7章读书分享
  20. 百度地图的植入流程介绍

热门文章

  1. C语言单元测试框架详解:第一篇
  2. OSM地图本地发布(四)-----Geoserver发布自定义地图
  3. BRVAH(BaseRecyclerViewAdapterHelper)多样式的使用
  4. 公众号开发: 给用户发红包
  5. LaxTex上的算法表格如何在word中完美的表示出来-Aurora Equation
  6. 35岁中年危机如何应对
  7. 中国汽车服务行业投资发展策略及运营商机研究报告2021-2027年
  8. oracle 49152,使用 snoop 命令监视包传送 - Oracle Solaris 管理:IP 服务
  9. Dell戴尔笔记本电脑Vostro 5502原装出厂系统恢复原厂系统2004
  10. 我们老得太快,聪明却来得太迟