最精简的C语言HTTP开源库 -- tinyhttpd

这个库的实现,其最大的作用是告诉我们:HTTP协议本质上是一个文本协议,解析对方发来的内容的过程,其实是在做字符串匹配。

关键词:HTTP、多线程、多进程、CGI、

0.这个库写于1999年,那一年QQ才刚出现,可以说是祖师爷级别的网络库了。

1.这个库没有解析HTTP Header和Body,仅仅根据Request Method和Request URL来判断是调用CGI程序,还是返回文件内容。

2.这个库没有使用传输层的多路复用机制,而是每accept一个新连接就起一个新线程,这是Apache和MySQL早期的做法。

3.主进程与CGI子进程之间的通信使用了匿名管道,正好说明了“匿名管道”这种进程间通信机制存在的好处和历史原因。

4.那个时代的Web服务端编程范式就是CGI,收到一个HTTP请求就起一个CGI进程来响应。

5.CGI进程的输入是靠Shell环境变量,并包括:REQUEST_METHOD, QUERY_STRING, CONTENT_LENGTH等。

6.这个库非常简陋,很多HTTP功能都没有实现(包括keepalive、cookie、session、token等),但是它依然是一个可用的HTTP服务端。说白了,上述的那些HTTP功能,都可以通过解析HTTP Header、HTTP Body来实现。还是那句话,HTTP协议本质上是一个文本协议,怎么解析收到的内容,完全靠字符串匹配。并不像IP、TCP那样有固定的头部字段。
 

你可能感兴趣的:(WEB框架)