web服务器的建立(二)-根据请求构建响应,状态码描述

通过服务器建立(一),请求已经读完且分析完毕
下面来分析响应
在这里插入图片描述
响应分四部分:
第一行:协议版本+“ ”+状态码+“ ”+状态描述
第二行~空行:对正文的属性说明
空行;
正文:请求的资源内容;

对于请求,响应简单分为三个分支:
1,请求正确,资源为不可执行文件
2,请求正确,资源为可执行文件
3,请求错误,服务器没有请求的资源(404)

对于情况一和二有必要进行说明,若是客户端上传一个可执行文件,然后再发送一个请求,则可能造成不安全隐患,毕竟可执行文件是在服务器上执行;

情况一:将资源发送,结束;

情况二:需要用到cgi机制,cgi是服务器和应用程序的接口。
站在服务器的角度:需要创建子进程,对子程序进行程序替换,但是如何父子进程之间进行数据交换呢?进程间通信常见的有:管道、共享内存、信号量、消息队列。在管道中有命名管道和匿名管道,匿名管道用于父子进程间通信,命名管道可见于文件系统,因此用于同一机器上任意进程间通信。在这里我用的是匿名管道,由于管道是单向的,因此使用两根管道,一根输入,一根输出。对子进程程序替换可能会使子进程不知道从哪里获取数据,因此构建环境变量,重定向到标准输出,标准输入。
在应用程序的角度:从标准输入读数据,写入标准输出。
将结果响应给客户端,结束

情况三:请求错误(404),服务器没有你想要的资源,是客户端的错误,返回一个404的响应页面即可

对于状态码的描述:由于状态码标准不统一,所以在某些浏览器上出现与本文状态码与描述不符的情况。
在这里插入图片描述
该图来自《图解HTTP》
200 ok
在这里插入图片描述
204 No Content
在这里插入图片描述
206 Partial Content
在这里插入图片描述
301 Moved Permanently
在这里插入图片描述
302 Found
在这里插入图片描述
400 Bad Request
在这里插入图片描述
404 Not Found
在这里插入图片描述
500 Internal Server Error

在这里插入图片描述
然后架构结束,制作程序流程图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值