史上最全最详细的适合新手的从零搭建一个Linux的HTTP服务器

史上最全最详细的适合新手的从零搭建一个Linux的HTTP服务器

一.概念梳理

http(hyper-text-transmission-protocol)超文本传输协议,顾名思义就是传输超文本(html)的协议,具体地来说,我们不需要知道html怎么写,我们只需要梳理服务器的数据接收和响应.具体业务具体分析,你们可以自行丰富内容,这里只做最简单的功能演示.http协议是应用层的协议,我们这里只需要知道http规定的数据包格式,对其进行封装和解析就行了.

二.HTTP数据包分析

数据包分为请求报文和响应报文.请求报文是浏览器给服务器发送的报文,响应报文是服务器回给浏览器的报文.这很好理解.下面分别解析两种报文.

HTTP请求报文:

两种报文有相似之处,都是分行进行包装,每一行结尾都有回车+换行符,我们只需要理解当web浏览器发送过来的报文我们如何去解析,怎么去获取每一行的信息.

第一行: 请求方法---浏览器想要服务器做什么动作 列举几个常用的方法,不过本文只使用了GET

GET

向服务器请求指定的HTML,并返回实体主体。

POST:

向服务器发送数据,并让服务器对数据进行处理并返回.

DELETE:

请求服务器删除指定的页面。

URL:资源定位符,也就是你想要取得的html文件名

第一行主要就是分析这两个关键点

其次请求头部会有若干个 头部字段 这些不重要 , 浏览器自己根据自己的情况发送,只需要知道最后到请求正文时,有两个连续的回车换行符(因为请求头部的最后一行也有回车换行符),这代表着头部的结束.也是界定头部结束的标志.我们解析到这就行了

一般最重要的就是请求方法还有URL

HTTP请求报文:

HTTP响应报文:

对于响应报文,注意状态码!!!有些对应的头部域名称是必须的!对此我踩了巨大的坑,耗费了我几天时间卡在这......读者们一定注意 在此我总结了所有必要的状态码和头部域名称,一定对应着编写响应报文,不然出错都不知道该从哪找错误!!!

1. 200 OK

Content-Length: 必须包含,告知客户端响应主体的长度。

Content-Type: 必须包含,告知客户端响应主体的类型。

Last-Modified: 通常包含,表示资源的最后修改时间。

2. 301 Moved Permanently 和 302 Found

Location: 必须包含,告知客户端资源已移动的新地址。

3. 401 Unauthorized

WWW-Authenticate: 必须包含,告知客户端需要进行的身份验证信息。

4. 403 Forbidden

通常不需要特定的头部字段,但可以包含Retry-After,告知客户端在多久后可以重试(尽管这不常见)。

5. 404 Not Found

不需要特定的头部字段,但可以包含Conte

相关推荐

AIDA64中文官方网站
365bet亚洲平台

AIDA64中文官方网站

📅 07-09 👍 186
[世界杯]2014年巴西世界杯闭幕式 完整版
365bet下载手机版

[世界杯]2014年巴西世界杯闭幕式 完整版

📅 06-27 👍 516
最终王冠英雄大全(探究所有人物的技能特点,打造最强阵容!)