域名解析的DNS(Domain Name System)服务(应用层)- 作用: 提供Domain到IP地址之间的解析服务 。为了解决IP地址难记问题,DNS提供了IP与Domain Name之间的map关系。
各种协议与HTTP协议间的关系- URI(Uniform Resource Identifier) & URL(Uniform Resource Location),前者标识某一互联网资源,后者表示资源地点。
- URI:某个协议方案表示的资源定位标识符。
- U:格式统一可处理各种资源且无需据上下文来识别资源的访问方式,且易于新增协议方案(http/ftp);
- R:可标识的任何东西;
- I:可标识的对象。
格式:
- scheme:数据或脚本程序的方案名;
- certification:登陆认证,可选;
- url:
- port:
- path&file:带层次的文件路径,可选;
- query:查询字符串,可选;
- fragment identifier:片段标识符,标记已获取资源中的子资源。
scheme | certification | url | port | path | file | query | fragment identifier | — |
---|
http:// | user:pass@ | www.example.jp: | 80/ | dir/ | index.html? | uid=1 | #ch1 | |
2. 简单的HTTP协议
客户端:请求访问文本或图像等资源的一端;服务端:提供资源响应的一端。
- HTTP是无状态(stateless)协议:
- 本身不保存(持久化处理)请求和响应之间的通信状态。cookie🉑️用于保存状态。
- 告知Server意图的HTTP方法
- GET:获取资源,请求已被URI识别的资源。🈯️定的资源经Server解析后🔙响应内容。
- POST:传输实体的主体,主要目的不是获取响应的主体内容。
- PUT:传输文件,本身不带验证机制,任何人都可以上传文件,存在安全性问题,不推荐。若架构设计采用REST标准的同类web网站,则可以开放PUT方法。
- HEAD:只获取报文首部。
- DELETE:与PUT相反。
- OPTIONS:询问支持的方法。
- TRANCE:追踪路径,让web服务器将之前的请求通信返回给客户端。
- CONNECT:要求用隧道协议🔗代理,实现用隧道协议进行TCP通信。
- 持久连接节省通信量
- 持久连接(HTTP Persistent Connections):若任意一端明确提出断开连接则断开。
- 管线化(piping line):不用等待响应即可发送下一个请求。
- 使用cookie状态管理
- 原理:cookie根据从服务端发送的响应报文内的一个叫Set-Cookie的首部字段信息,通知客户端保存cookie。当下次客户端再向该服务器发送请求时,客户端会自动在请求报文中加入cookie值后发送出去。
3. HTTP报文内的HTTP信息
- HTTP报文:用于HTTP协议交互的信息。🈶️多行数据构成的字符串文本。
- 报文首部:服务器端或客户端需要处理的请求或响应的内容即属性。
- 空行:CR + LF。
- 报文主题:被发送的数据,🉑️选。
- 结构:
- 请求行:包含method,uri和http version。
- 状态行:包含表明响应结果的状态码,原因短语和http版本。
- 首部字段:包含表示请求和响应的各种条件和属性的各类首部。
- 其它:可能包含http的rfc里未定义的首部(Cookie etc)。
- 编码提升传输速率(通过在传输🀄️编码,🉑️有效处理大量的访问请求;但也会消耗更多的CPU资源)
- 报文主体和实体主体
- 报文(message):http通信的基本单位,通过http通信传输,由八位字节流组成。
- 实体(entity):作为请求或响应的有效载荷数据被传输,由实体首部和实体主体组成。通常报文主题等于实体主体,只有当传输🀄️🈶️编码操作时才有差异。
- 压缩传输分内容编码
- 内容编码:指明应用在实体🀄️的编码格式,并保持实体信息原样压缩。内容编码后的实体由客户端接受并负责解码。
- 常见内容编码:
- gzip(GUN zip)
- compress(UNIX系统)
- deflate(zlib)
- identity(不编码)
- 分隔发送的分块传输编码
- 发送多种数据的多部分对象集合
- 多用途因特网(MIME,multipurpose Internet Mail Extensions)机制:允许📧处理图片,文本,视频等多个不同类型的数据。
- 包含:
- multipart/form-data:web表单文件⏫使用;
- multipart/byteranges:状态码206响应报文包含了多个范围内容时使用;
- 获取部分内容范围请求
- 范围请求(Range Request):🈯️定范围发送的请求。
- 内容协商🔙最合适的内容
- 内容协商(Context Negotiation):当浏览器默认语言是英文或中文,访问相同URI的web📃时,会显示对应英文版或中文版的📃机制。
- 机制:客户端和服务端就响应的资源进行交涉,然后提供给客户端最为合适的资源。其基准会是语言,字符集,编码方式等。如请求报文中的首部字段 :
- Accept
- Accept-Charset
- Accept-Encoding
- Accept-Language
- Content-Language
- 内容协商技术分类:
- 服务器驱动协商(Server-driven Negotiation)
- 客户端驱动协商(Agent-driven Negotiation)
- 透明协商(Transparent Negotiation)
4. 返回结果的HTTP状态码
- 状态码:
- 作用:告知从服务器🔙的请求结果,标记服务端的处理是否异常,通知出现的❌等工作;
- 类别:
| 类别 | 原因短语 |
---|
1xx | informational | 接受的请求正在处理 |
2xx | success | 请求正常处理完毕 |
3xx | redirection | 需要进行附加操作以✅请求 |
4xx | client error | 客户端无法处理结果 |
5xx | server error | 服务端无法处理结果 |
- 2xx成功
- 200:👌,从客户端发来的请求在服务端正常处理 ;
- 204:no-content,服务器接受的请求已成功处理,但在🔙的请求报文中不含实体的主体部分且❎返回任何实体的主题部分。一般在只需客户端往服务器发送💻,而对客户端不需要发送新信息内容时用。
- 206:partial content,客户端进行了范围请求,而服务器成功执行了该部分的GET请求。
- 3xx重定向:浏览器需要执行某些特殊处理以正确处理请求。
- 301:moved permanently,永久性🐛定向;
- 302:found,临时性重定向;
- 303:see other;
- 304:not modified ;
- 307:temporary redirect。
- 4xx:
- 400:bad request;
- 401:unauthorized;
- 403:forbidden;
- 404:not found。
- 5xx:
- 500:internal server error;
- 503:service unavailable.
5. 与HTTP协作的Web服务器
一台web服务器可以搭建多个独立域名的web网站,也可作为通信路径上的中转服务器提升传输效率。
- 用单台虚拟主机实现多个域名
- HTTP/1.1规范✅一台http服务器搭建多个web站点。
- 通信数据转发程序:代理,网关,隧道
- 代理:一种具有转发功能的应用程序,扮演了客户端和服务端间的中间人🎭;
- 基本行为:接受客户端发送的请求后转发给其它服务器。不改变请求url,会直接发送诶前方源服务器。
- 源服务器: 持有资源的目标服务器;
- 使用代理理由:
- 利用缓存技术减少网路带宽的流量;
- 组织内部针对特定网站的访问控制;
- 获取访问日志等。
- 分类:
- 缓存代理:使用缓存;
- 透明代理: 转发请求或响应时不对报文做任何加工。
- 网关:转发其它服务器通信数据的服务器。
- 与代理类似,能提为使通信线路上的服务器提供非http协议服务。
- 隧道:在相隔甚远的客户端和服务端之间进行中转,并保持双方通信🔗的应用程序。
- 保存资源的缓存:
- 缓存:代理服务器或客户端本地磁盘内保存的资源副本。
6. HTTP首部
- http报文首部:客户端和服务端处理时起至关重要作用的信息
- 请求报文组成:
- 方法,
- URI,
- HTTP版本,
- HTTP首部字段(请求,通用,实体)
- 响应报文组成:
- HTTP首部字段
- 传递重要信息(报文主体大小,语言,认证信息等)
- 结构:
首部字段名:字段值
- 4种类型:
- 通用。。(general header fields)
- 请求。。(request)
- 响应。。 (response)
- 实体。。(entity)
首部字段一览表:
- 非HTTP首部字段
7. 确保Web安全的HTTPS
在HTTP协议中可能存在信息窃取或身份🆔伪装等安全🔐问题,而HTTPS🉑️有效防止此类问题。
- HTTP的缺点:
- 通信使用明文(不加密),内容可能被窃听;
- 不验证通信方的身份,有可能遭遇伪装;
- 无法证明报文完整性,有可能已遭篡改
- 通信的加密🔐
- 加密机制:
- SSL(Secure Socket Layer):安全套接字
- TLS(Transport Layer Secure):安全传输层协议。
- HTTPS(HTTP over SSL):HTTP + SSL + 认证 + 完整性保护
8. 确认访问用户身份的认证
某些web📃只想让特定人访问,用户🆔认证应运而生。
- 何为认证?
- 核对信息:
- 密码:只有本人才知道的字符串;
- 动态令牌:仅限本人持有的设备内显示的一次性密码;
- 数字🔢📄证书:仅限本人持有的信息;
- 生物认证:指纹和虹膜等本人的生理信息;
- IC卡等:仅限本人持有的信息。
- HTTP/1.1使用的认证:
- BASIC认证
- DIGEST认证
- SSL客户端认证
- FormBase认证(并不在http协议中定义)
- 客户端会向web服务器上的app发送登陆信息(credential),按登陆信息的验证结果认证。
- 认证多半基于表单认证
- session管理及cookie应用(cookie管理session弥补了http协议无状态的不足)
9. 基于HTTP的功能追加协议
- 消除http瓶颈的spdy
- http瓶颈:
- 一条连接上只能发送☝️请求;
- 请求只能从客户端开始。客户端不能接收除响应以外的指令;
- 请求/响应首部未经压缩就发送。首部信息越多延迟越大。
- 发送冗长的首部。每次互相发送相同的首部造成的浪费较多。
- 🉑️任意选择数据压缩格式。非强制压缩发送。
- 解决方法:
- 使用浏览器进行全双工通信的websocket
- 期盼已久的http2.0
- web服务器管理文件📃的webdav
10. 构建Web应用的技术
pass
11. Web的攻击技术
You May Also Enjoy
Understanding-Scope-in-JavaScript
comments powered by
Leave a Comment