http协议学习

http:hypertext transfer protocol:超文本传输协议
超文本:带有超级连接的连接
超级连接:可以实如今不一样的文档中跳转
http/0.9版本:只支持纯文本的传输(带有超级链接)ASCII码
  HTML:hypertext mark
  language:超文本标记语言
  支持get方法,且不支持请求头html

Browser:浏览器
URI:uniform resource
indentifier:统一资源标识符
URL:uniform resource locator:统一资源定位符
  统一:路径格式的统一
  protocal://address/to/resouce_path
web资源:用URL标识,而且让用户客户端代理(浏览器)可以访问的文件
HTML:把多种web资源整合成一个HTML文档,并可以让浏览器访问显示的一种语言
http/1.0版本:
   1.引入MIME机制(为了实现可以传输分文本信息)
   MIME:multi Internet mail extension:多用途互联网邮件交换协议,将非文本数据在传输以前从新编码为文本格式,接收方可以利用相反的方式将其从新还原为原来的格式,还能调用相应的应程序显示此文件
  扩展:SMTP:simple mail transfer protocol:简单邮件传输协议
  2.请求与响应头域
  3.响应对象以一个响应状态行开始
  4.响应对象不止限于文本
  5.开始支持客户端经过POST方法向web服务器提交数据,支持GET、HEAD、POST方法
  6.支持长链接(但默认仍是使用短链接),
  7.缓存机制(加快速度),以及身份验证 web

动态网页:web服务器存储的文档是非HTML文档,而是动态语言,动态语言生成的脚本可以接受用户的参数后造成HTML文档,把生成的文档返回给客户端浏览器

http/1.1是目前使用最普遍的协议版本,在http1.0中使用长链接须要添加请求头Connection:Keep-Alive,而在http1.1默认支持长链接,除非特殊声明不支持(HTTP请求首部加上Connection:Close),http1.1引入了许多关键优化:keepalive链接。chunked编码传输,字节范围请求,请求流水线等
HTTP1.1协议中共定义了八种方法来代表Request-URI指定的资源的不一样的操做方式:
  1. OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法,也能够利用向web发送'*'的请求来测试服务器的功能性
  2. HEAD:向服务器索要与GET请求相一致的响应,只不过想硬体将不会被返回,这一方法能够在没必要传输整个响应内容的状况下,就能够获取包含在响应消息头中的元信息
  3. GET:向特定的资源发出请求。注意:GET方法不该被用于产生“反作用”的操做中,例如在web app中,其中一个缘由是GET可能会被网络爬虫等随意访问
  4. POST:向指定资源提交数据进行数据请求(例如提交表单或者上传文件).数据被包含在请求体中,POST请求可能会致使新的资源的创建或已有资源的修改
  5. PUT:向指定资源位置上传其最新内容
  6. DELETE:请求服务器删除Request-URI所标识的资源
  7. TRACE:回显服务器收到的请求,主要用于测试和诊断
  8. CONNECT:http/1.1协议中预留给可以将链接改成管道方式的代理服务器 缓存

http/2.0是下一代http协议,目前应用还很是少,主要特色有:
  多路复用(二进制分帧):在二进制分帧层上,http2.0将全部传输的信息分割为更小的消息和帧,并对他们采用二进制格式的编码
  头部压缩:当一个客户端向相同服务器请求许多资源时,向来自同一个网页的图像,将会有大量的请求看上去几乎一样的,这就须要压缩技术对付这种几乎相同的信息
  随时复位:http1.1一个缺点是当http信息有必定长度大小数据传输时,你不能方便地随时中止他,中断TCP链接的代价是昂贵的,使用http2的RST_STREAM将可以方便中止一个信息传输,启动新的信息,在不中断链接的状况下提升带宽利用效率 服务器

服务器端推流:server Push:客户端请求一个资源X,服务器端判断也许客户端还须要资源Z,在无需事先询问客户端状况下将资源Z推送到客户端,客户端接受到后,能够缓存起来以备后用.
优先权和依赖:每一个流都有本身的优先级别,会代表哪一个流是最重要的,客户端会指定哪一个流是最重要的,有一些依赖参数,这样一个流能够依赖另外一个流,优先级别能够在运行时动态改变,当用户滚动页面时,能够告诉浏览器哪一个图像是最重要的,你也能够在一组流中进行优先筛选,可以突出抓住重点流

http报文:请求报文(http request)和响应报文(http response) 网络

  请求报文语法: 多线程

<method><request-URI><version>
        <headers>
        <entity-body>

  响应报文语法: 架构

<version><status><reason-phrase>
        <headrers>
        <entity-body>

响应报文的状态代码:

  1xx:纯信息,已经弃用
  2xx:“成功“类的信息
  3xx:重定向类的信息
  4xx:客户端错误类信息
  5xx:服务器端错误类的信息 并发

Web服务器处理并发链接请求的并发模型

  1.单线程web服多器(Single-threaded web servers):此种架构方式中,web服多器一次处理一个请求.结束后读取井处理下一个请求.在某请求处理辻程中,其它全部的清求将被阻塞,所以;在并发请求较多的场景中将会出现严重的性能问题(即一次只能处理一个请求)app

  2.多进程/多线程web服灸器:此种架构方式中, web服多器生成多个进程或线程并行处理多个用戸请求,进程或线程能够按需或事先生成、有的web服务器应用程序为每一个用戸请求生成一个単独的进程或线程来进行响应,不过, 一旦并发请求数量达到成千上万吋,多个同吋进行的进程或线程将会消耗大量的系統资源(即每一个进程只能响应一个请求,而且一个进程对应一个线程)

  3.I/O多路复用web服努器:为了可以支持更多的并友用户清求,愈来愈多的web服努器正在采用多种复用的架构--即同歩监控全部的链接靖求的活动状态,当一个链接的状态发生改变时(如数据准各完毕或发生某错误)将为其执行一系列特定操做;在操做完成后此链接将从新变回暂时的稳定态并返回至打开的链接列表中,直到下次的状态改变,因为其多路复用的特性,进程或线程不会被空闲的链接所占用,于是能够提供高效的工做模弌.(
这种架构能够理解为一个进程能够生成多个线程,每一个请求交给一个线程程迸行处理)


欢迎各×××陈师傅”
http协议学习

相关文章
相关标签/搜索