web服务器的建立(一)

对于服务器,我在网上看了很多的例子,做的都很完善,但是学习价值并不是很高。 所以我做一个具有学习意义的服务器 如上图,网络通信以冯诺依曼体系为基础,通过在应用层运行进程,进而间接性操作操作系统,达到网络通信的目的。

对于这个项目的基础架构,分三步: 1,选择http协议作为本项目通信协议(http具有代表性); 2,对请求接收,分析; 3,构建响应,对请求的资源提供相应响应,以及请求错误时的响应404页面;

对于http请求报文的分析: 将请求报文分为四部分: 1,第一行(请求行):请求方法+“ ”+URL+" "+HTTP协议及版本; 2,第二行~空行前(报头):正文数据的属性; 3,空行; 4,请求正文;

先对请求行进行分析: 请求方法:GET、POST、PUT、HEAD、DELETE… 在我这个项目仅对GET和POST进行分析处理,因为浏览器常用的两个方法,其次,这两个方法具有代表性。 GET:有三部分或四部分,正文可有可无,视情况而定,该方法一般用于获取资源 GET / HTTP/1.1 若是带参数则直接跟在url里且以“?”开头(以明文直接出现在网址中,不安全),如:GET /?a=100 HTTP/1.1 POST:有四部分,如果有参数,则随正文中发送(相对安全)

什么是URL呢? URI,uniform resource identifier,统一资源标识符,标识一个资源; URL,uniform resource locator统一资源定位符,一种具体的URI,URL指明如何locate这个资源; 在这里可以直接跟随资源,如:GET /a.html HTTP/1.1

讲到这里就需要认识DNS 在http图解中形象的解释了DNS的作用,你告诉我网址,我告诉你ip地址,为了偷懒所以有了DNS,相对而言,192.168.1.1和www.baidu.com明显后者好记(仅为说明情况,百度网址不是192.168.1.1);项目中跳过DNS直接输入ip地址,但是我们需要知道网络是会经过域名转换的;

接着我会根据请求构建相应响应

经验分享 程序员 微信小程序 职场和发展