码迷,mamicode.com
首页 > Web开发 > 详细

web服务以及http协议

时间:2015-10-14 21:57:43      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:web服务   http协议   

在使用计算机的过程中,最容易让人想起的就是浏览网页的经历,只需要用户输入网址,搜索及可以获得想要的资源,那么这个过程计算机是如何完成的?

    web服务是C/S架构:用户使用的浏览器成为客户端代理,用户访问的资源其实是存储在服务器端。client通过网址(经过dns解析)能够定位自己想要访问的资源位于互联网的哪台服务器,server如何知道客户端请求的是什么内容,那就是http协议

    URI:统一资源标识符,用于在全球范围唯一的标识某资源

    URL:统一资源定位符,是URI的一个子集,用户唯一标识互联网上的某一资源

所以用户输入的网址就是一个URL,唯一的标识了自己想要访问的资源

   web资源,也可以成为web对象,例如一个html文件,一张图片等等,但是我们访问的一个网页一般都是有若干个资源组成的。

   client要获取server上的资源,那么首先就必须要和server建立连接,http协议简单的理解就是client告诉server自己要访问什么资源,并没有承担建立连接的任务,所以client在发送http请求报文之前,必须要和server端建立tcp/ip连接,通过tcp协议中的port来决定自己的请求报文到达server端的tcp/ip协议栈的时候,内核应该将其交给哪个进程处理。

  在http协议的报文格式中,首先应该注意的就是

           http-method:

                      GET 从服务器向客户端发送命名资源

                      PUT 将来自客户端的数据存储到一个命名的服务器资源中去

                      DELETE 从服务器中删除命名资源

                      POST 将客户端数据发送到一个服务器网关应用程序

                      HEAD 仅发送命名资源响应中的 HTTP 首部

           在server响应报文首部的状态码,大致分类是:

                     1xx:纯信息

                     2xx:成功类的信息

                     3xx:重定向类的信息

                     4xx:客户端错误类的信息

                     5xx:服务器端错误类的信息

那么一个web服务器应该完成哪些基本工作:

      1.建立连接

      2.接受请求

      3.处理请求

      4,访问客户端请求的资源

      5,构建响应报文

      6.向客户端发送响应报文

      7.记录日志

在互联网上,一台web服务器可能面临若干个请求,那么web服务器处理请求的方式有哪些:

     1.使用单进程,一个进程响应一个请求(在此种工作模式下,服务器只能处理一个请求,那么后续的请求就需要排队等待响应)

     2,使用多进程,一个进程响应一个请求(首先有一个主导进程,该进程不负责响应用户请求,而是在把用户请求接进来之后,生成一个子进程去处理请求,那么服务器就达到了并发连接的目的,但是由于每一个进程都需要加载需要的配置信息且是相互独立的,所以相当消耗内存资源,但是每一个进程独立,那么进程间的影响也就很小,一个进程的崩溃不会影响到其他进程。在这种情况下,进程在向内核发起IO请求之后,由于内核可能要处理多个IO请求,所以进程需要以轮训的方式不断的查看自己提交的IO操作是否完成)

     3.使用一个进程响应多个请求(一个进程响应多个请求,由于只有一个进程,那么对系统资源的消耗是比较小的,那么在向内核发起多个IO请求后,进程如何获悉哪个HTTP请求的IO请求已经准备完毕?此处使用的是事件触发的机制,哪个HTTP请求的IO准备好之后,内核会通过相当于能够标识HTTP请求的机制去通知进程,哪个请求已经准备完毕)

     4.使用多个进程,一个进程处理多个请求(此种方式就是方式2和方式3的结合)

                            

本文出自 “zxcvbnm玄烨” 博客,请务必保留此出处http://10764546.blog.51cto.com/10754546/1702877

web服务以及http协议

标签:web服务   http协议   

原文地址:http://10764546.blog.51cto.com/10754546/1702877

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!