开发者社区> xumaojun> 正文

micro_httpd服务器实现机制分析

简介: micro_httpd是一个轻量级的http服务器 (http://www.acme.com/software/micro_httpd/),micro_httpd从xinetd运行,性能较差,但对于负载较小的网站,micro_httpd是能胜任的,其实现了http服务器的一些基本特征功能: 1.  .
+关注继续查看

micro_httpd一个轻量级的http服务器 http://www.acme.com/software/micro_httpd/),micro_httpdxinetd运行,性能较差,但对于负载较小的网站,micro_httpd是能胜任的,其实现了http服务器的一些基本特征功能:

1.  ..文件名探测以保证安全;

2.  常用MIME类型识别;

3.  Trailing-slash重定向;

4.  index.html首页的处理;

5.  目录列表;

micro_httpd借助于xinetd(inetd)运行,xinetd的原理与机制参考:

http://blog.chinaunix.net/space.php?uid=20196318&do=blog&id=172787

 

借助xinetdmicrohttpd在处理请求时,可从标准输入读取客户端的请求,向标准输出写入对客户端的响应。所以micro_httpd的核心在于分析http请求参数,并发送响应数据。

 

micro_httpd的部署与使用

1.  下载micro_httpd的源代码包(http://www.acme.com/software/micro_httpd/)并安装;

2.  设置micro_httpd的服务端口号,编辑/etc/services文件,为其分配一个未用的端口号,本例中使用48888,在/etc/services文件末尾添加两行:

micro_httpd        48888/tcp

micro_httpd     48888/udp

3.  添加micro_httpdxinetd配置文件:

    vi /etc/xinetd.d/micro_httpd

    service micro_httpd  

{  

        socket_type             = stream  

        protocol                = tcp  

        wait                    = no  

        user                    = root  

        server                  = /usr/local/sbin/micro_httpd  

        server_args             = /var/www/html  

        disable                 = no  

        flags                   = IPv4  

}

# 其中server_args为配置micro_httpd运行时的根目录

4.  重启xinetd服务以加载新的配置。/etc/init.d/xinetd restart

5 测试,拷贝测试文件到micro_httpd的根目录,并通过浏览器访问:

    http://192.168.0.65:48888,通过点击目录中文件列表的超链接,可以查看到各个文件的内容。

         

  img_ac34d770fb204f1d94af638c95d390be.png

 

http协议相关

1.  请求与响应报文格式

http://apps.hi.baidu.com/share/detail/24694860

http://blog.csdn.net/yang3290325/archive/2009/01/05/3710976.aspx

2.  查看http请求与响应内容头

http://www.51testing.com/?167686/viewspace-106751.html

http://blog.sina.com.cn/s/blog_5f1fe33f0100d9zp.html

3.  URL Encoding:

http://www.ruanyifeng.com/blog/2010/02/url_encoding.html

http://www.blooberry.com/indexdot/html/topics/urlencoding.htm

 

micro_httpd源代码分析

rar.gif micro_httpd.rar   

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
面试项目说实现了一个后端多线程网络服务器框架应该怎样写
面试项目说实现了一个后端多线程网络服务器框架应该怎样写
52 0
树莓派公网服务器实现frp内网穿透
树莓派公网服务器实现frp内网穿透
116 0
自建内网穿透服务器替换TeamViewer和向日葵,实现远程控制
自建内网穿透服务器替换TeamViewer和向日葵,实现远程控制
152 0
分布式服务器框架之Servers.Core库实现 DES对称加密算法;SHA1信息摘要算法;MD5信息摘要算法
通信双方(通信主体)同时掌握一个钥匙,加解密都由这一个钥匙完成。通信双方通信前共同拟定一个密钥,不向第三方公开,发送前加密和接受后解密都由此密钥完成。即钥匙如果泄露,将暴露自己的全部信息。
81 0
分布式服务器框架之Server.Core库中实现 XXTEA分组加密算法
在密码学中,微型加密算法(Tiny Encryption Algorithm,TEA)是一种易于描述和执行的块密码,通常只需要很少的代码就可实现。其设计者是剑桥大学计算机实验室的大卫·惠勒与罗杰·尼达姆。这项技术最初于1994年提交给鲁汶的快速软件加密的研讨会上,并在该研讨会上演讲中首次发表。
32 0
分布式服务器框架之Servers.Core中 实现Log模块设计 写入MongoDB数据库
游戏服务器中都需要用到Log模块,log模块存在的意义第一个是将log输出到控制台又或者是写入到log文件中,出了BUG方便定位;第二是常用于将用户的数据(例如玩家登录、道具购买量)将这种log统计到数据库中,方便统计用户留存信息、数据分析等。
38 0
分布式服务器框架之Server.Common库中实现 秒级定时器
定时器模块是服务器中的常用组件,本文带你实现一个具有基本功能的定时器模块要想设计一个定时器模块,一般包含两部分,一个是定时器对象(ServerTimer),另一个管理定时器对象的管理者(TimerManager)也叫定时器容器;定时器使用了C#内System库里面的Timer定时器作为定时器的主驱动
29 0
分布式服务器框架之Server.Core库中实现YFUniqueEntity、YFUniqueIDBase 管理MongoDB 自定义Id的自增
YFUniqueEntity是数据库中的结构,GetUniqueID函数中会根据Type和自增步长去数据库中寻找该类型的当前ID是多少,然后会用当前的Id去加上步长,把更新后的新ID插入到MongoDB中记录着ID的那张表里。
29 0
分布式服务器框架之Servers.Core库中实现 MongoEntityBase 实现阻塞 异步对MongoDB的增删改查
YFMongoDBModelBase类是个模板类,对模板参数进行了约束YFMongoEntityBase,必须要继承YFMongoEntityBase
42 0
分布式服务器框架之Servers.Core库中实现MongoDB的ObjectId和Json转换
分布式服务器框架之Servers.Core库中实现MongoDB的ObjectId和Json转换
29 0
+关注
xumaojun
乐于学习与分析
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
函数计算事件驱动的无服务器计算服务
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多