简述http服务

简述http协议

  1. 协议版本
    (1)http/0.9:原型版本,功能简陋,只有一个命令GET。GET /index.html,服务器只能回应HTML格式字符串,不能回应别的格式
    (2)http/1.0:支持cache,MIME,method,每个TCP连接只能发送一个请求,发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接;引入了POST命令和HEAD命令;头信息是ACII码,后面数据可为任何格式
    (3)http/1.1:引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用,不用声明Connection:keep-alive;引入了管道机制,即在同一个TCP连接里,客户端可以同时发送多个请求,进一步改进HTTP协议的效率;新增方法:PUT,PATCH,OPTIONS,DELETE
    (4)http/2.0:头信息和数据体都是二进制,称为头信息帧和数据帧,复用TCP连接,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,且不用按顺序一一对应,避免了"队头堵塞",此双向的实时通信称为多工。引入头信息压缩机制,头信息使用gzip或compress压缩后再发送;客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,不发送同样字段,只发送索引号,提高速度。允许服务器未经请求,主动向客户端发送资源,即服务器推送。
  2. HTTP工作机制
    (1)工作机制:
    http请求:http request
    http响应:http response
    一次http事务:请求<-->响应
    (2)web资源:web resource
    一个网页由多个资源构成,打开一个页面,会有多个资源展示出来,但是每个资源都要单独请求。因此,一个"web页面"通常并不是单个资源,而是一组资源集合
    静态文件:无需服务端做出额外处理
    文件后缀:.html,.txt,.jpg,.js,.css,.mps,.avi
    动态文件:服务端执行程序,返回执行的结果
    文件后缀:.php,.jsp,.asp
    (3)提高HTTP连接性能
    并行连接:通过多条TCP连接并发的HTTP请求
    持久连接:keep-alive,长连接,重用TCP连接,以消除连接和关闭的时延,以事务的个数和时间来决定是否关闭连接
    管道换连接:通过共享TCP连接发起并发的HTTP请求
    复用的连接:交替传送请求和响应报文(实验阶段)
  3. URL组成
    URL:shceme://username:password@host:port/path;params?query#frag
     shceme:方案,访问服务器以获取资源时要使用哪种协议
     user:用户,某些方案访问资源时需要的用户名
     password:密码,用户对应的密码,中间用:分隔
     host:主机,资源宿主服务器的主机名或IP地址
     port:端口,资源宿主服务器正在监听的端口号,很多方案有默认端口号
     path:路径,服务器资源的本机名,由一个/将其与前面的URL组件分隔
     params:参数,指定输入的参数,参数为名/值对,多个参数,用;分隔
     query:查询,传递参数给程序,如数据库,用?分隔,多个查询用&分隔
     frag:片段,一个片或一部分资源的名字,此组件在客户端使用,用#分隔
  4. 一次完整的http请求处理过程
    (1)建立连接:接收或拒绝连接请求
    (2)接收请求:接收客户端请求报文中对某资源的一次请求过程
    web访问响应模型(web I/O)
    单进程I/O模型:启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应
    多进程I/O模型:并行启动多个进程,每个进程响应一个连接请求
    复用I/O结构:启动一个进程,同时响应N个连接请求
    实现方法:多线程模型和事件驱动
    多线程模型:一个进程生成N个线程,每线程响应一个连接请求
    事件驱动:一个进程处理N个请求
    复用的多进程I/O模型:启动M个进程,每个进程响应N个连接请求,同时接收M*N个请求
    (3)处理请求:服务器对请求报文进行解析,并获取请求的资源及请求方法等相关信息,根据方法,资源,首部和可选的主体部分对请求进行处理
    HTTP常用的请求方式.Method:
    GET,POST,HEAD,PUT,DELETE,TRACE,OPTIONS
    (4)访问资源:
    服务器获取请求报文中请求的资源web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源,或动态运行后生成的资源
    web服务器资源路径映射方式:
    (a)docroot
    (b)alias
    (c)虚拟主机docroot
    (d)用户家目录docroot
    5.构建响应报文:
    一旦web服务器识别除了资源,就执行请求方法中描述的动作,并返回响应报文。
    响应报文中包含有响应状态码,响应首部,如果生成了响应主体的话,还包含响应主体
    (1)http协议常用的状态码
    200:成功,请求数据通过响应报文的entity-body部分;OK
    301:请求的URL指向的资源已经被删除;但在响应报文文中通过首部Location指明了资源现在所处的新位置;Moved Permanently
    302:响应报文Location指明资源临时新位置 Moved Temporarily
    304:客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态码通过客户端;Not Modified
    401:需要输入账号和密码认证能访问资源;Unauthorized
    403:请求被禁止;Foibidden
    404:服务器无法找到客户端请求的资源;Not Found
    500:服务器内部错误;Internal Server Error
    502:代理服务器从后端服务器收到一条伪响应,如无法连接到网关;Bad Gateway
    503:服务不可用,临时服务器维护或过载,服务器无法处理请求
    504:网关超时
    (2)响应主体:如果事务处理产生了响应主体,就将内容放在响应报文中回送过期。响应报文中通常包括:
    描述了响应主体MIME类型的Content-Type首部
    描述了响应主体长度的Content-Length
    实际报文的主体内容
    (3)URL重定向:
    web服务构建的响应并非客户端请求的资源,而是资源另外一个访问路径
    (4)MIME类型:
    Web服务器要负责确定响应主体的MIME类型。多种配置服务器的方法可将MIME类型与资源管理起来
    6.发送响应报文
    7.记录日志
    最后,当事务结束时,web服务器会在日志文件中添加一个条目,来描述已经执行的事务
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章