图解HTTP读书笔记

1.Web与网络基础

  • WWW的三项构建技术: HTML、HTTP、URL.
  • TCP/IP是互联网相关各类协议簇的总称,涉及网络层(IP)、传输层(UDP TCP)和应用层(FTP HTTP DNS). 

图解HTTP读书笔记

  • 与HTTP密切相关的协议: IP TCP DNS
  • URI(Uniform Resource Identifier)和 URL(Uniform Resource Locator)
  • URI 在RFC2396中的定义,是由某个协议方案表示的资源的定位标识符,如HTTP, ftp:, mailto:, telnet:等,共30种左右,如:

     ftp://ftp.is.co.za/rfc/rfc1808.txt

     http://www.ietf.org/rfc/rfc2396.txt

     ldap://[2001:db8::7]/c=GB?objectClass?one

     mailto:[email protected]

     news:comp.infosystems.www.servers.unix

     tel:+1-816-555-1212

     telnet://192.0.2.16:80/

     urn:oasis:names:specification:docbook:dtd:xml:4.1.2

  • URL 表示资源的地点(互联网上所处的位置),URL 是 URI 的子集

 

 

2.简单的HTTP协议

  • 请求响应模型
  • 客户端请求:请求方法、请求 URI、协议版本、可选的请求首部字段、内容实体

图解HTTP读书笔记

  • 服务器响应:由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。

HTTP/1.1 200 OK

Date: Tue, 10 Jul 2012 06:50:15 GMT

Content-Length: 362

Content-Type: text/html

<html>

……

图解HTTP读书笔记

  • HTTP的无状态和cookie

为了简化处理过程,请求和响应都不做持久化处理。cookie用于保存用户状态

  • HTTP方法:

1.GET 获取响应内容

图解HTTP读书笔记

2.POST  传输实体的主体

图解HTTP读书笔记

3.PUT 上传文件

图解HTTP读书笔记

4.HEAD 获得报文首部,一般用于确认URL的有效性,检查上次更新日期

图解HTTP读书笔记

5.DELETE 删除文件,与PUT相反

图解HTTP读书笔记

6.OPTIONS 查询支持的方法

 图解HTTP读书笔记

7.TRACE 追踪路径,不常用

8.CONNECT 要求使用隧道协议进行TCP通信,例如SSL(Secure Sockets Layer),和TLS(TLS(Transport Layer Security)

图解HTTP读书笔记

------------

    图解HTTP读书笔记

  • HTTP1.1 的优化:
  • 持久连接:HTTP keep-alive,在多个HTTP调用过程中,TCP一直保持连接,减少网络开销.

图解HTTP读书笔记

  • 管线化(pipelining): 多个HTTP可以流水线化发起请求

图解HTTP读书笔记

 

  • Cookie:
  1. 服务器的响应报文中包含一个【Set-Cookie】 首部信息,通知客户端保存cookie,
  2. 下次客户端发送请求时包含该Cookie信息
  3. 服务器通过cookie信息判断客户端身份

 

3.HTTP报文信息

  • 报文结构: 报文首部+空行(CR(0x0d)+LF(0x0a))+报文主体

图解HTTP读书笔记

  • 编码压缩 
  • 报文message 和 实体entity的区别: 报文是HTTP通信中的基本单位,由字节流组成;实体是请求或响应的有效载荷,包括实体首部和实体主体。
  • HTTP中通过【压缩】和【分块传输编码Chunked Transfer Coding】应对大实体内容。
  • 请求部分实体内容(称为范围请求, range request): 首部中指定Range 字段。

 

  • 内容协商技术(Content Negotiation)

对于不同的客户端期望不同的内容版本(如语言等),通过在请求报文中添加Accept-Charset、Accept-Language等实现。

三种协商技术:

  • 服务器驱动协商(以请求首部为参考,服务器端自动处理)
  • 客户端驱动协商(有客户端进行内容协商,例如在Web页面中提供可选列表,或者使用JS脚本自动选择)
  • 透明协商 (服务器协商和客户端协商的结合)

 

 

4.返回结果的HTTP状态码

  • RFC2616定义,第一位表示响应类别。

图解HTTP读书笔记

  • 常见的状态码

200  OK

204 No Content 已经处理成功,但返回报文中不包括实体部分

206 Partial COntent  根据请求报文中的范围请求range字段,返回了部分实体内容

 

301 Moved Permanently 资源已经分配了新的URL

302 Found 临时性重定向,资源已经重定向,但该URL还可以访问到

303 See Other 请求的资源存在着另一个URL,应使用GET方法定向获取请求的资源。

304 Not Modified 服务端允许请求访问资源,但未满足条件(指请求首部中包含的条件 If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since 中任一)。 304 严格来和重定向没关系。

307 Temporary Redirect 与302含义相同

 

400 Bad Request  请求报文中存在语法错误。与200相对,浏览器应当对错误作出反应。

401 Unauthorized 需要包含一个【WWW-Authenticate】首部进行身份认证。 浏览器第一次遇到401时应当弹出认证对话框

403 Forbidden  拒绝访问,没有具体理由

404 Not Found

 

 

503 Service Unavailable 用于服务器处于超负荷或停机维护时

 

 

 

5.Web服务器

  • 通过请求报文的【host】首部实现一个IP托管多个不同域名的web服务
  • 代理、网关和隧道
  • 代理作为中间人,在客户机和服务器之间转发请求。同时附上【via】首部信息。代理可以级联,每跳一次via中增加一个主机名。

代理不修改请求的URI。

代理的作用:内容缓存、特定网站访问控制

代理分类:根据是否修改报文内容,分为透明和非透明

 

  • 网关进行协议转换。允许通信线路上的服务器提供非HTTP服务,并提升安全性。

 

  • 隧道在服务器与客户端之间建立一条通信线路,进行加密通讯。

 

 

6.HTTP首部

在请求中,HTTP 报文由方法、URI、HTTP 版本、HTTP 首部字段等部分构成。

在响应中,HTTP 报文由 HTTP 版本、状态码(数字和原因短语)、HTTP 首部字段 3 部分构成。

  • 首部字段的格式  【字段名: 字段值】
  • 四种首部字段类型:
  • 通用首部字段 General Header Fields: 请求报文和响应报文都会使用
  • 请求首部字段 Request Header Fields: 在请求报文中用到,用于补充请求的附加内容,客户端信息等。
  • 响应首部字段 Response Header Fields: 在响应报文中用到。
  • 实体首部字段 Entity Header Fields: 针对请求报文和响应报文的实体部分使用。补充资源内容更新时间等信息。
  • 图解HTTP读书笔记
  • --------------------
  • 图解HTTP读书笔记
  • -----------------------------
  • 图解HTTP读书笔记
  • ---------------------------------------
  • 图解HTTP读书笔记
  • 首部分类 :端到端End-to-End 首部和逐跳Hop-by-hop首部

End-to-End类型的首部会转发给请求、响应的最终接收目标。

hop-by-hop 类型首部只对单次转发有效。在缓存或代理中不再转发。需要配合Connection首部字段。只有以下8种逐跳首部。

图解HTTP读书笔记

 

  • Cookie相关的首部字段
  • Set-Cookie: 响应首部字段中服务发放Cookie
  • Cookie: 请求首部字段中,客户机发给服务器

 

 

7.Web 安全,HTTPS

  • 加密技术SSL(Secure Socket Layer),TLS(Transport Layer Security)
  • HTTP+加密+认证+完整性保护=HTTPS 

HTTPS的流量先通过SSL,再到TCP。HTTPS是披着SSL的HTTP

图解HTTP读书笔记

  • HTTPS的建立过程
  • 两次SSL握手。
  • 第一次获得加密算法和**长度的共识,服务器向客户端发布公钥证书
  • 第二次握手,客户端用服务器公钥加密,传递pre-master对称**串。使用Pre-master secret**加密master**。约定之后用该对称**加密消息内容。

图解HTTP读书笔记

 

8.用户身份认证

目的: 使WEB页面只能让特定人访问。

HTTP认证方式: BASIC认证、DIGEST认证(摘要认证)、SSL客户端认证、FormBase认证。

  • BASE认证. 响应报文401,客户端将[user:psw]用base64加密之后放在Authorization 字段中发送.

缺点: 密码只是base64编码,没有加密。

图解HTTP读书笔记

  • DIGEST认证.   服务器-> 客户端: 质询码。 客户端-> 客户端: 响应码. 

本质上,服务器比对的是hash值,因此密码没有在通信过程中直接传递。

图解HTTP读书笔记

  • SSL认证。给客户端颁发证书,以此鉴别身份。
  • 表单认证。最常见的认证方式,在网页上提供登陆界面。

 

9.基于HTTP的功能追加协议

  • SPDY(发音 Speedy): 谷歌在2010年提出,缩短HTTP响应时间,适应社交网络服务的频繁内容更新。

获得的功能:

  • 多路复用,一个TCP连接上处理多个HTTP请求
  • 赋予请求优先级,在有限带宽下防止响应变慢
  • 压缩HTTP首部
  • 服务器端主动推送
  • 服务器主动提示客户端请求所需资源。

 

  • WebSocket: 浏览器与服务器之间全双工通信的协议

基于HTTP协议,使用upgrade字段转换到websocket协议,建立双工通信

 

  • WebDAV: 对web服务器上的内容直接进行文件复制和编辑等操作

 

10.基于web内容的技术

 

11.WEB攻击

  • 跨站攻击,在有漏洞的web网站上运行攻击Js脚本
  • SQL注入
  • OS溢出攻击
  • HTTP首部注入,拦截HTTP响应报文,插入攻击首部,实现设置Cookie信息、重定向URL等操作。
  • 彩虹表,根据MD5破译明文密码。
  • 点击劫持,在攻击页面上覆盖透明网页。