Linux网络编程-HTTP编程

零、参考

Linux网络编程(HTTP协议)
-HTTP服务器端和客户端的作用

  • Linux下用c创建HTTP客户端和服务器
  • 代码解析

Linux网络编程----http
-HTTP连接的基础知识

  • HTTP协议介绍
  • HTTPS协议介绍
  • 服务器代码
  • 运行情况

网络编程之http服务器(C/C++)(基于libevent实现)

  • 安装libevent库
  • http服务器代码示例

使用c++手把手实现一个简单的http服务器

  • http相关知识
  • 日志类设计
  • 套接字代码
  • http服务器类
  • 连接处理回调类
  • 请求类、响应类
  • 线程池设计
  • 项目测试

一、服务器和客户端

HTTP服务器和客户端之间通过TCP/IP协议建立连接,并使用HTTP协议进行数据交换。服务器监听特定的端口(通常是80),客户端通过连接到服务器上的特定端口发送HTTP请求。

1.1 HTTP服务器

HTTP服务器是指能够接收、处理和响应HTTP请求的软件或硬件设备。它在服务器端运行,并等待客户端的HTTP请求。

主要功能包括:

  • 监听网络端口,接收来自客户端的HTTP请求。
  • 解析并处理接收到的HTTP请求,包括验证请求、提取请求的目标资源等。
  • 执行相应的处理逻辑,如查询数据库、生成动态内容等。
  • 生成HTTP响应,包括构建响应头和响应体。
  • 发送响应给客户端,将处理结果返回给客户端。
  • 常见的HTTP服务器软件包括Apache HTTP Server、Nginx、Microsoft IIS等。

1.2 HTTP客户端

HTTP客户端是发送HTTP请求给服务器并接收响应的软件或应用程序。它位于客户端(如Web浏览器、移动应用程序等)。

主要功能包括:

  • 构建HTTP请求,包括请求行、请求头和请求体。
  • 将请求发送给指定的HTTP服务器。
  • 接收并解析来自服务器的HTTP响应。
  • 提取响应头和响应体中的数据。
  • 根据需要处理响应数据,如渲染网页、显示图像等。

二、协议格式

2.1 HTTP的协议格式

请求协议格式如下:
在这里插入图片描述

  • 请求行:[请求方法] + [URI] + [HTTP版本]。
  • 请求报头:请求的属性,这些属性都是以key: value的形式按行陈列的。
  • 空行:遇到空行表示请求报头结束。
  • 请求正文:请求正文允许为空字符串,如果请求正文存在,则在请求报头中会有一个Content-Length属性来标识请求正文的长度。

响应协议格式如下:
在这里插入图片描述

  • 状态行:[HTTP版本] + [状态码] + [状态码描述]。
  • 响应报头:响应的属性,这些属性都是以key: value的形式按行陈列的。
  • 空行:遇到空行表示响应报头结束。
  • 响应正文:响应正文允许为空字符串,如果响应正文存在,则在响应报头中会有一个Content-Length属性来标识响应正文的长度。

2.2 请求方法

HTTP请求方式中8种请求方法(简单介绍

HTTP/1.1协议中共定义了八种方法

  • HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
  • HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法

在这里插入图片描述

  • GET:向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在Web Application中,其中一个原因是GET可能会被网络蜘蛛等随意访问。Loadrunner中对应get请求函数:web_link和web_url
  • HEAD:向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
  • POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form
  • PUT:向指定资源位置上传其最新内容
  • DELETE:请求服务器删除Request-URL所标识的资源
  • CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
  • OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
  • TRACE:回显服务器收到的请求,主要用于测试或诊断

2.3 状态码

http状态码大全(100 - 599状态码 全面讲解)
状态码分类:
在这里插入图片描述

常见状态码:

状态码状态信息说明
200OK当您的操作将在响应正文中返回数据时,出现此结果。
204No Content当您的操作成功,但不在响应正文中返回数据时,出现此结果。
304Not Modified(重定向)当测试实体自上次检索以来是否被修改时,出现此结果。
403Forbidden客户端错误
401Unauthorized客户端错误
413Payload Too Large(客户端错误)当请求长度过长时,出现此结果。
400BadRequest(客户端错误)当参数无效时,出现此结果。
404Not Found(客户端错误)当资源不存在时,出现此结果。
405Method Not Allowed(客户端错误)由于方法和资源组合不正确而出现此错误。 例如,您不能对一个实体集合使用 DELETE 或 PATCH。
412Precondition Failed客户端错误
501Not Implemented(服务器错误)当未实施某个请求的操作时,出现此结果。
503Service Unavailable(服务器错误)当 Web API 服务不可用时,出现此结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值