【C++项目】Tiny Linux WebServer---开篇介绍

文章目录

  • 前言
  • Webserver 介绍
    • 1:什么是webserver服务器
    • 2:webserver服务器通信过程
  • Webserver基础架构
  • Webserver详细技术
  • 总结


前言

【C++后端开发项目入门:TinywebServer】:一个简易轻型的webserver服务器,对于C++后台开发方向作为起始项目是一个不错的选择。关于webserver的c++实现网络上存在许许多多的资料,github也有许多开源的项目。
本系列文章将参考社长大大的TinyWebServer以及牛客网公布的开放课程Linux 高并发服务器开发对webserver实现所需要的技术以及架构进行介绍与分析。相关内容仅作为自身学习记录复习使用。

通过本项目你可以实现:
1:一个简易webserver服务器,能够处理浏览器提出的get、post请求
2:一个简易webserver日志系统

通过本项目可以学习的知识点:
1:Linux网络编程相关知识
2:线程池、IO多路复用
3:数据库(POST方法)


(备注:上述功能以及知识点用到就补充)


Webserver 介绍

1:什么是webserver服务器

webserver服务器,顾名思义,用于处理http请求协议服务的server软件,常部署于linux操作系统上。http请求协议主要包括get、post等。如http get请求,则webserver服务器会根据请求所需要访问的url,将服务器的资源返回给请求用户。
常见的http请求方法具体包括如下

序号 方法 描述
1 GET 获取服务器上的页面信息,要求返回响应体
2 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改
3 HEAD 向服务器索与GET请求相一致的响应,只不过响应体将不会被返回
4 PUT 向指定资源位置上传其最新内容
5 DELETE 请求服务器删除Request-URL所标识的资源
6 TRACE 回显服务器收到的请求,主要用于测试或诊断
7 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
8 OPTIONS 返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性

webserver服务器常用的请求方法为:GET、POST,因此本TinyWebServer也将实现该常见请求方法。

2:webserver服务器通信过程

当浏览器键入网址到服务器相应需要很多步骤。在浏览器中键入“域名”或“IP地址:端口号”,浏览器则先将你的域名解析成相应的IP地址或者直接根据你的IP地址向对应的Web服务器发送一个HTTP请求。这一过程首先要通过TCP协议的三次握手建立与目标Web服务器的连接,然后HTTP协议生成针对目标Web服务器的HTTP请求报文,通过TCP、IP等协议发送到目标Web服务器上。
【C++项目】Tiny Linux WebServer---开篇介绍_第1张图片

Webserver基础架构

主要由I/O单元,逻辑单元和网络存储单元组成,其中每个单元之间通过请求队列进行通信,从而协同完成任务。
其中

  • I/O单元用于处理客户端连接,读写网络数据;
  • 逻辑单元用于处理业务逻辑的线程;
  • 网络存储单元指本地数据库和文件等
    【C++项目】Tiny Linux WebServer---开篇介绍_第2张图片

Webserver详细技术

1:线程同步
2:Socket通信
3:I/O多路复用
4: 线程池
5:有限状态自动机转换
6:数据库链接
7:http协议报文
8:同步异步、阻塞非阻塞
9:事务处理模型 Proactor和 Reactor

总结

【参考文献】
TinyWebServer:
https://github.com/qinguoyi/TinyWebServer
小白视角:一文读懂社长的TinyWebServer:
huixxi.github.io/2020/06/02/小白视角:一文读懂社长的TinyWebServer
Linux 高并发服务器开发:
https://www.nowcoder.com/courses/cover/live/504

你可能感兴趣的:(WebServer,网络,后端)