从零开始:编写一个Web服务器---HTTP部分详细讲解以及代码实现(一)

本文介绍了如何从零开始编写一个Web服务器,重点讲解了HTTP部分,包括HTTP请求过程、请求分类和状态码。文章提到了实现HTTP功能的关键步骤,如字符串解析,并给出了HTTP类的设计和HTTP_CODE的含义。通过分析和代码实现,帮助读者理解Web服务器的工作原理。
摘要由CSDN通过智能技术生成

本文是从零开始Web服务器的第二篇,本篇将正式从代码入手讲解整个网络编程
给出笔者学习期间接触到的Web服务器代码(C/C++)连接
https://github.com/EZLippi/Tinyhttpd
https://github.com/qinguoyi/TinyWebServer
https://github.com/oatpp/oatpp
本文中的部分代码来自以上项目,感谢他们的开源

HTTP—Hyper Text Transfer Protocol(超文本传输协议)

HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP 是万维网的数据通信的基础。

HTTP请求过程

这里给出一篇参考博客:Http请求过程

HTTP请求分类

请求方法 意义
OPTIONS 请求一些选项信息,允许客户端查看服务器的性能
GET 请求指定的页面信息,并返回实体主体
HEAD 类似于 get 请求,只不过返回的响应中没有具体的内容,用于获取报头
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改
PUT 从客户端向服务器传送的数据取代指定的文档的内容
DELETE 请求服务器删除指定的页面
TRACE 回显服务器收到的请求,主要用于测试或诊断

下面给出这些请求,在代码层面的表现,如果你想查看自己当前浏览器所发出的HTTP报文,按F12,找到Network,然后F5刷新界面,随便点击Name中的一项,找到Request Headers即可显示出当前的请求头情况。

GET / HTTP/1.1
Host: 192.168.0.23:47310
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*; q = 0.8
Accept - Encoding: gzip, deflate, sdch
Accept - Language : zh - CN, zh; q = 0.8
Cookie: __guid = 179317988.1576506943281708800.1510107225903.8862; monitor_count = 5

状态码(Status-Code)

  • 1xx:表示通知信息,如请求收到了或正在进行处理
    • 100 Continue:继续,客户端应继续其请求
    • 101 Switching Protocols 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到 HTTP 的新版本协议
  • 2xx:表示成功,如接收或知道了
    • 200 OK: 请求成功
  • 3xx:表示重定向,如要完成请求还必须采取进一步的行动
    • 301 Moved Permanently: 永久移动。请求的资源已被永久的移动到新 UR
  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值