http协议学习

http:hypertext transfer protocol:超文本传输协议
超文本:带有超级链接的链接
超级链接:能够实现在不同的文档中跳转
http/0.9版本:只支持纯文本的传输(带有超级连接)ASCII码
??HTML:hypertext mark
??language:超文本标记语言
??支持get方法,且不支持请求头

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服务器存储的文档是非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服多器一次处理一个请求.结束后读取井处理下一个请求.在某请求处理辻程中,其它所有的清求将被阻塞,因此;在并发请求较多的场景中将会出现严重的性能问题(即一次只能处理一个请求)

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

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

相关推荐