Nginx理论篇与相关网络协议

news2024/11/15 9:12:14

Nginx是什么?

Nginx是一款由C语言编写的高性能、轻量级的web服务器,一个线程能处理多个请求,支持万级并发。

优势:I/O多路复用。

I/O是什么?

I指的是输入(Input),O是指输出(Output)。

这里还涉及到一个I/O流的概念。I/O流可以抽象地理解为数据的序列以流的形式进行传输,主要处理设备之间的数据传输。传输数据就是一个读取和写入的过程。

I/O多路复用的原理是什么?

单个线程通过限制每个I/O流,以类似拨开关的方式去管理多个会话。

理解起来就是当第一个请求等待数据库处理时,线程又去处理其他请求;当之前的请求返回时,线程又继续处理之前的请求。

这样的处理请求有个优点就是能增加服务器的吞吐量,也就是在单位时间内处理了更多的请求,还减少了系统消耗。

多路复用的实现方式:epoll

特点:异步、非阻塞。

异步与非阻塞:指的是线程在将请求发送给数据库处理时,它不会一直等待请求返回,这就是异步。而它不等待请求返回就去休息或者做别的事情,这就是非阻塞。

这里还涉及到一个叫异步回调:指的是服务端中每进来一个请求,会有一个线程去处理。但当它将请求发送给数据库时,数据库无法立即将请求返回,这就发生了阻塞。这时线程不会一直等着,而是先去注册一个事件。一旦请求返回,就会触发之前注册的事件,系统会通知这个线程回来接着处理之前的请求。


HTTP协议

HTTP是一种面向连接的、建立在TCP上的无状态连接,服务于web通信。

HTTP工作流程:

HTTP先建立客户端与服务端的连接,再将客户端的请求发送给服务端,其中包含网址客户端等信息。服务端接收到请求后,按照请求给客户端调用对应的文件,同时给客户端发送一个相应信息。当客户端接收到服务端所返回的信息后,将请求到的资源通过浏览器显示出来并断开连接。

常见的状态码:

HTTP的不同版本类型

HTTP/0.9:只能执行简单的GET请求方式,并且只能访问HTML格式的资源。

HTTP/1.0:在0.9版本的基础上增加了POST和HEAD请求方式,可以访问很多不同格式的资源,支持多种数据方式,也支持高速缓存,但只能支持短连接,每一次请求都会经历三次握手与四次挥手,发送速度较慢。

HTTP/1.1:在结束一个完整的HTTP请求之后,,TCP默认不关闭,可以在下一次HTTP请求的时候使用这个TCP连接,完美的支持长连接。但是到了服务端又会发生阻塞。

HTTP/2.0:解决了1.1版本的问题,支持服务端多个进程同时处理,从请求到响应形成了一个顺畅的闭环。

HTTP系统组成:

一个完整的HTTP请求,就要有必要的组件:客户端、代理、服务器端。

请求报文:

由四部分组成,分别是请求行、请求头部、空行、请求数据。

请求行:请求方式、URL、协议版本。

请求头部:客户端发送给服务器端的信息,如客户端所支持的语言、字符集、MIME等。

空行:表示报文头部到此为止,用来分隔请求头部与请求数据。

请求数据:与请求报文一起发送的数据,也属于报文中的一部分,与请求方式有关。

响应报文

由状态行、响应头部、响应正文三部分组成。

状态行又分为三部分:协议版本、状态码、状态码描述。

响应头部的内容就是响应正文的相关信息,响应正文就是服务端返回给客户端的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1909848.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

poi-tl、aspose实现word中表在每页携带表头表尾

实现word中表在每页携带表头表尾(第一版) word中的表格如果只有一页时表头表尾都很好处理,当中间内容足够多时,表尾只会出现在最后一页,表头也只会出现在第一页,之前想过用word自带的页眉页尾来处理但是&a…

【中项第三版】系统集成项目管理工程师 | 第 4 章 信息系统架构③ | 4.6

前言 第4章对应的内容选择题和案例分析都会进行考查,这一章节属于技术相关的内容,学习要以教材为准。本章分值预计在4-5分。 目录 4.6 网络架构 4.6.1 基本原则 4.6.2 局域网架构 4.6.3 广域网架构 4.6.4 移动通信网架构 4.6.5 软件定义网络 4.6…

云动态摘要 2024-07-09

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 数据库上云优选 阿里云 2024-07-04 RDS、PolarDB、Redis、MongoDB 全系产品新用户低至首年6折起! [免费体验]智能助手ChatBI上线 腾讯云 2024-07-02 基于混元大模型打造&…

【面试】高频面试点:从源码角度一篇文章带你搞懂128陷阱!

要理解什么是“128陷阱”,首先来看一段代码: public static void main(String... strings) {Integer integer1 3;Integer integer2 3;if (integer1 integer2)System.out.println("integer1 integer2");elseSystem.out.println("inte…

07-7.3.2 平衡二叉树(AVL)

👋 Hi, I’m Beast Cheng 👀 I’m interested in photography, hiking, landscape… 🌱 I’m currently learning python, javascript, kotlin… 📫 How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以…

【Linux】:服务器用户的登陆、删除、密码修改

用Xshell登录云服务器。 1.登录云服务器 先打开Xshell。弹出的界面点。 在终端上输入命令ssh usernameip_address,其中username为要登录的用户名,ip_address为Linux系统的IP地址或主机名。 然后输入密码进行登录。 具体如下: 找到新建会话…

提高项目效率必备:探索2024年10大最佳需求管理系统

本文将分享2024年10款高效需求管理工具:PingCode、Worktile、Tapd、禅道、Teambition、ClickUp、Tower、Asana、Jira 和 monday.com。 在快速变化的软件开发环境中,选择合适的需求管理工具变得至关重要。项目失败往往源于需求不明确或管理不善&#xff0…

linux权限深度解析——探索原理

前言:本节内容主要讲述的是linux权限相关的内容, linux的权限如果使用root账号是感受不到的, 所以我们要使用普通账号对本节相关内容进行学习,以及一些实验的测试。 然后, 通过linux权限的学习我们可以知道为什么有时候…

记一次 .NET某酒业业务系统 崩溃分析

一:背景 1. 讲故事 前些天有位朋友找到我,说他的程序每次关闭时就会自动崩溃,一直找不到原因让我帮忙看一下怎么回事,这位朋友应该是第二次找我了,分析了下 dump 还是挺经典的,拿出来给大家分享一下吧。 …

成都欣丰洪泰文化传媒有限公司电商服务领航者

在当今数字化浪潮中,电商行业正以前所未有的速度蓬勃发展。作为这片蓝海中的佼佼者,成都欣丰洪泰文化传媒有限公司凭借其专业的电商服务能力和对市场的敏锐洞察力,成为众多品牌信赖的合作伙伴。今天,就让我们一起走进成都欣丰洪泰…

大屏自适应容器组件 v-scale-screen

在vue中,v-scale-screen可用于大屏项目开发,实现屏幕自适应,可根据宽度自适应,高度自适应,和宽高等比例自适应,全屏自适应。 仓库地址:github国内地址:gitee 一、安装 npm instal…

Mysql中存储引擎简介、修改、查询、选择

场景 数据库存储引擎 数据库存储引擎是数据库底层软件组件,数据库管理系统(DBMS )使用数据引擎进行创建、查询、更新和删除数据的操作。 不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以…

【C++ 】-vector:新时代动态数组的革新与未来

目录 1. vector的介绍及使用 1.1 vector的介绍 1.1.1 vector是什么 1.1.2 vector的存储机制 1.2 vector的使用 1.2.1 定义和构造函数 1.2.2 迭代器 1.2.3 容量相关操作 1.2.4 元素访问和修改 1.3 迭代器失效问题 2. vector深度剖析及模拟实现 2.1 std::vector的模拟…

【笔记】finalshell中使用nano编辑器GNU

ctrl O 保存 enter 确定 ctrl X 退出 nano编辑 能不用就不用吧 因为我真用不习惯 nano编辑的文件也可以用vim编辑的

网页提示“非私密连接”怎么办?

当网页提示“非私密连接”或“您与该网站的连接不是私密连接”,这通常意味着浏览器无法建立一个安全的HTTPS连接。HTTPS协议是HTTP协议的安全版本,通过SSL协议加密数据传输,以保护用户的数据免受中间人攻击或监听。主要有下面几个原因&#x…

In Search of Lost Online Test-time Adaptation: A Survey--论文笔记

论文笔记 资料 1.代码地址 https://github.com/jo-wang/otta_vit_survey 2.论文地址 https://arxiv.org/abs/2310.20199 3.数据集地址 1论文摘要的翻译 本文介绍了在线测试时间适应(online test-time adaptation,OTTA)的全面调查,OTTA是一种专注于使机器学习…

Apache配置与应用(优化apache)

Apache配置解析(配置优化) Apache链接保持 KeepAlive:决定是否打开连接保持功能,后面接 OFF 表示关闭,接 ON 表示打开 KeepAliveTimeout:表示一次连接多次请求之间的最大间隔时间,即两次请求之间…

一.5 高速缓存至关重要

这个简单的示例揭示了一个重要的问题,即系统花费了大量的时间把信息从一个地方挪到另一个地方。hello程序的机器指令最初是存放在硬盘上,当程序加载时,它们被复制到主存;当处理器运行程序时,指令又从主存复制到处理器。…

C++报警:warning: zero as null pointer constantstddef.h

源码和警告内容 解决办法: select(0,nullptr,nullptr,nullptr,&delay); 关于NULL和nullptr的区别: 在C中,nullptr和null(通常指的是NULL宏,因为C标准中并没有直接定义null关键字)都用于表示空指针&am…

基于eBPF的procstat软件追踪等待锁和持有锁的时间

在并发编程中,锁的使用是保证线程安全的重要手段。然而,过度使用锁或者锁竞争可能导致性能瓶颈。为了分析程序中锁的使用情况,我们可以借助procstat软件来追踪程序加锁时间和等待锁的时间。procstat是一个基于eBPF(extended Berke…