|
书名 | 图解HTTP |
书摘 |
第一章 了解Web及网络基础 -
使用HTTP协议访问Web: -
HTTP:超文本传输协议
-
HTTP的诞生: -
www构成技术:HTML、HTTP、URL
-
网络基础TCP/IP: -
TCP/IP分层:4层,应用、传输、网络、数据链路 -
应用层: 决定了向用户提供应用服务时通信的活动 -
如:FTP(文件传输协议)、DNS(域名服务)、HTTP
-
传输层:提供处理网络连接中2台计算机之间的数据传输:TCP、UDP -
网络层:处理网络中流动的数据包,包是传输的最小单元。选择传输路径。IP -
链路层:处理连接网络的硬件部分。包括操作系统,硬件的设备驱动,网卡。 -
-
与HTTP关系密切的协议:IP、TCP、和DNS -
传输层IP协议: -
IP协议作用:把各种数据包传送给对方,IP地址(节点被分配的地址)+MAC地址(网卡所属的固定地址)mac不可更改。 -
通信方式:使用ARP协议凭借MAC地址进行通信。递归进行各个路由的mac访问 -
ARP:地址解析协议,根据IP反查MAC地址。
-
确保可靠性的TCP协议: -
服务:提供可靠的字节流服务: -
字节流服务:为了方便传输将大数据切割为报文段以包为单位管理。 -
可靠:三次握手
-
负责域名的DNS服务: -
服务:域名到IP的解析服务
-
URI和URL -
URI :统一资源标识符: -
资源:文件图形等。 -
标识:可标识的对象,有某个协议方案表示的定位标识符。协议方案是指访问资源所使用的协议类型名称。 -
协议方案:ftp、file、telnet -
-
URL:统一资源定位符,是URI的子集 -
区别: -
uri:代表资源的名称 -
url:代表资源的地址 -
和.可能得到完全不同的内容
|
第二章 简单的HTTP协议: -
通过请求和响应的交换达成通信 -
请求报文: -
-
响应报文; -
-
HTTP是无状态协议: -
说明:不对请求和响应之间的通信状态进行保存和持久化。 -
目的:为了更快的处理大量事务,确保协议的可伸缩性,提高性能 -
Cookie:为了解决无状态问题。
-
告知服务器意图的HTTP方法: -
GET:获取资源 -
POST:传输实体主体 -
PUT:传输文件,该方法呢不带验证机制,任何人都可以上传存在安全问题,可配合web程序或架构设计采用Rest使用。 -
HEAD:获取报文首部:跟get一样。但是不返回保温主体。用于确认URI的有效性以及资源更新的日期时间。 -
DELETE:删除文件,不安全 -
OPTIONS:询问支持的方法:查询针对请求URI制定能够的资源支持的方法 -
TRACE:追踪路径:用来确认连接过程中发生的一些列操作。 -
CONNECT:要求在与代理服务器通信时建立隧道。
-
持久连接: -
为了解决每次请求需要建立TCP链接。 -
HTTP keep-alive: 默认开启, -
管线化: -
解决:串行请求的性能问题 -
多个请求并行
-
使用Cookie的状态管理: -
运行方式:通过在请求和响应报文中写入Cookie信息来控制客户端状态 -
设置:服务器的响应表文有Set-Cookie首部字段信息。通知客户端保存。 -
报文: -
|
第三章 HTTP报文内的HTTP信息 -
HTTP报文: -
组成:报文首部+ 空行(CR+LF)+报问主体(非必有)
-
编码提升传输速率: -
分割发送的分块传输编码: -
常见编码编码:gzip、compress、deflate、identity
-
发送多种数据的多补发对象集合: -
需要在首部加Content-type -
multipart/form-data : web表单 -
multipart/byteranges:
-
获取部分内容的范围请求: -
首部字段:Range指定byte范围:5001-10000 -
Range:bytes=5001-10000
-
内容协商返回最合适的内容: -
问题:同一个uri不同的浏览器语言,返回的页面不通。 -
判断标准:首部字段 -
Accept -
Accept-Charset -
Accept-Encoding -
Accept-Lauguage -
Content-Lauguage
-
内容协商技术的3中类型: -
服务器驱动协商:首部参数参考 -
客户端驱动协商:浏览器显示的可选项列表。浏览器类型,os类型等。 -
透明协商:各自协商:
|
第四章 返回结果的HTTP状态码 -
2XX -
204:请求成功,没数据 -
206:获取部分数据,Range
-
3XX: -
301:永久重定向: -
302:临时重定向 -
303:资源的uri已经更新,用新的,与302功能相同, -
比如;post访问时,希望用get重定向访问。 -
当301,302,303返回时,浏览器都会把post改成get
-
304:资源在,但是为满足访问条件。 -
附加条件:get请求报文中包含:if-Match,if-Modified等。
-
307:Temporart Redirect:临时重定向,但是不会从post改成get
-
4XX: -
400:bad request: 请求体错误 -
401:认证失败 -
403: 拒绝访问, -
404:没有资源
-
5xx: -
500:服务端bug -
503:负载高
|
第五章 与HTTP协作的WEB服务器 -
单台虚拟主机实现多个域名 -
2个域名的dns解析后ip一样,需要根据完整的uri进行区分
-
通信数据转发程序: -
代理: -
介绍:不改变请求URI,直接发给目标服务器,每经过一个代理服务器,头部会写入Via信息 加上代理服务器的名称。 -
作用:利用缓存技术,极少网络带宽的流量,组织内部针对特定网站的访问控制。 -
分类: -
是否使用缓存:缓存代理: -
是否修改报文:非透明代理:加工报文。
-
网关: -
作用:可以由http请求转化为其他通信协议,与代理类似 -
优点:提高通信的安全性,可以在网关进行数据库连接,进行逻辑拦截。
-
隧道: -
目的:确保客户端能与服务器进行安全通信。进行数据中转。生命周期与链接相同。
-
保存资源的缓存 -
缓存服务器:代理服务器一种 -
浏览器缓存
|
第六章 HTTP报文首部 -
请求报文: 方法、uri、http版本、首部字段 -
响应报文:状态码、短语、首部字段 -
HTTP首部字段: -
作用传递额外重要信息,给服务器和客户端提供报文主体大小,语言,认证信息等 -
Content-Type:text/html -
4中首部字段类型: -
通用: -
Cache-Control:控制缓存 -
Connection:逐跳首部、连接的管理 -
Data、Via、Warning -
Pragma:报问指令
-
请求: -
Accept:用户代理可处理的媒体类型 -
Accept-Charset:优先的字符集: -
iso-8859-5,unicode-1-1;q=1:q优先级
-
Accept-Encoding:优先的内容编码: -
gzip、deflate
-
Accept-lauguage:语言 -
From:用户的电子邮箱 -
Host:请求资源所在的服务器, -
User-Agent: http客户端程序的信息 -
Referer:队请求中URI的原始获取方 -
Range: 字节范围
-
响应: -
Age:推算资源创建经过时间 -
Accept-Ranges: 是否接受字节范围请求 -
Etag:资源的匹配信息 -
Location:令客户端重定向指定URI -
Proxy-Auth:代理服务器对客户端的认证信息 -
Server:HTTP服务器的安装信息 -
Vary:代理服务器缓存的管理信息 -
www-Auth:服务器对客户端认证
-
实体: -
Allow:可支持的http方法 -
Expires:实体主体过期时间 -
Last-Modified:资源最后修改时间 -
Connect-Encoding、Lauthage、Length、Location、MD5、Range、Type:实体主体的编码、语言、大小、uri、报文摘要、位置范围、媒体类型
-
非HTTP/1.1首部字段: -
Cookie、Set-Cookie、Content-Disposition、 -
DNT:1. 拒绝个人信息被收集、拒绝被精准广告追踪。 -
X-XSS-Protection:针对跨站脚本攻击的对策,防护开关。 -
X-Frame-Options:防止点击劫持攻击 -
P3P
-
HTTP/1.1通用首部字段: -
Cache-Control: -
Connection: -
控制不在转发给代理的首部字段 -
管理持久连接,keep-alive、close
-
Pragma:no-cache
-
请求首部字段: -
|
第七章 确保Web安全的HTTPS -
HTTP的缺点: -
通信使用明文不加密可被窃听: -
SSL(安全套接层) 或 TLS (安全层传输协议) -
内容的加密:报文主体会被加密
-
不验证通信方的身份,可能遭遇伪装 -
问题:请求和响应方无法确定,没办法权限管理 -
解决: 查明对方证书 -
证书:第三方机构颁发,证明服务器和和客户端实际存在。
-
无法验证报文的完整性,可能篡改
-
HTTP+加密+认证+完整性保护 = HTTPS -
原理: -
SSL + HTTP
-
与http 分成的区别: -
http:应用(http)、TCP、 IP -
Https: 应用(http)、SSL、TCP、 IP
-
SSL:位于应用层下,可与SMTP、Telnet等协议配合使用。 -
SSL加密方法: -
公开秘钥加密: -
一把公钥、一把私钥,使用对方公钥加密 ,对方通过自己私钥解密。 性能低 -
问题:无法证明公开秘钥本身就是真正的秘钥,可能被替换。 -
解决方式:数字证书 -
业务流程: -
服务器运营人员向数字证书机构提出公开秘钥申请,数字证书确认身份后,会对已申请的秘钥做数字签名,然后分配这个签名的公钥,将公开密钥放入公钥证书后绑定。 -
服务器会将这个公钥证书发给客户端。 -
接到证书的客户端可使用机构的公开密钥对 服务端的证书进行验证,通过后,就确定了服务器的秘钥是对的,认证服务器的公开密钥是正式有效的数字证书认证机构。
-
问题:如何安全获取到机构的秘钥,浏览器会在安装的时候内置常用认证机关的公开密钥
-
对称秘钥加密: 加密解密用同一个秘钥 -
问题:秘钥如何安全的送到对方。
-
HTTP采用混合加密机制: -
在交换秘钥阶段通过公开密钥加密确保安全把公钥给对方。之后用对称加密。
-
EV SSL 证书: -
证书2个作用: -
证明服务器是否规范 -
确认对方服务器背后运行企业是否真实存在。
-
EV SSL证书的网站 浏览器地址是绿色。
-
客户端证书: -
问题:证书获取以及发布无法保证。 -
需要用户自己安装客户端证书,需要付费 -
网上银行就再用。
-
自认证机构颁发的证书: -
使用OpenSSL开源程序可以构建认证机构,自己给自己发证书 -
表现:浏览器访问时: -
无法确认连接安全性、该网站的安全证书存在问题。
-
HTTPS的安全通信机制 -
SSL(9次握手) + HTTP (3次握手) -
步骤: -
客户端发送报文开始SSL通信,报文中包含SSL版本信息以及加密组件 -
对客户端进行应答,报文包含SSL信息以及机密组件(从客户端的组件中筛选), -
服务器发送Cerificate报文,包含公开密钥证书 -
服务器发送 确认报文,最初节点SSL握手部分结束。 -
客户端发送 :报文中包含A算法随机密码串,已经用公钥加密。 -
客户端发送:提示服务器之后的报文采用A算法密码串加密 -
客户端发送:Finished报文,包含连接至今全部报文的整体校验值。握手是否成功以服务器能否解密成功为依据 -
服务器发送同样的提示秘钥加密的报文 -
服务器发送同样的Finished报文 -
Finished报文交换完毕后,SSL建立成功。发送http请求 -
应用层协议通信,发送http响应 -
客户端断开连接,之后发送TCP fin报文进行关闭。
-
https使用:SSL+TSL -
SSL很慢:2-100倍 -
9个包的通信慢,消耗大量CPU以及内存 -
加密处理:消耗双方的CPU
|
第八章 确认访问用户身份的认证 -
何为认证: -
认证方式 -
密码 -
动态令牌 -
数字证书 -
生物认证 -
IC卡等。
-
HTTP使用的认证方式 -
BASIC 基本认证 -
当请求资源需要basic认证的时候返回401 -
接收到401,将用户id以及密码经过base64编码后发送给客户端 -
服务器接收到进行验证,通过返回uri资源 -
如果进行窃听会被盗。
-
DIGEST 摘要认证 -
返回401+随机数 -
返回随机数+用户信息。 -
返回uri -
比basic安全性高
-
SSL 客户端认证: -
可避免密码被盗的情况。 -
过程: -
服务器发送报文请求提供证书 -
通过Client Certificate报文发送给服务器, -
服务器验证过 获取证书中公开密钥,开始https
-
SSL客户端采用双因素认证 -
表单+证书
-
SSl客户端认证必要费用
-
FormBase 基于表单认证 -
最普遍,
-
Session管理及Cookie应用 -
服务器返回sessionid在set-cookie设置 cookie、客户端每次发送加上sessionid
|
第九章 基于HTTP的功能追加协议 -
背景:http很简单但是使用场景越来越多,无法满足。 -
HTTP瓶颈: -
如果服务器数据变更,就需要使用客户端探知更新。 -
瓶颈 -
一条连接1个请求 -
请求只能从客户端 -
请求首部未经压缩,数据多,延迟大 -
发送冗余首部。每次发送相同首部浪费 -
可任意选择数据压缩格式,非强制压缩
-
解决方法: -
ajax: 知识解决了大量数据的问题 -
Comet通信:服务器更新,直接给客户端返回响应push 推送。 -
客户端的请求不立刻响应,等有更新的时候返回给客户端
-
SPDY协议:消除瓶颈 -
没有替代http,在应用层 和传输层加了一层, http应用、SPDY会话、SSL表示、TCP传输 -
作用:控制数据的流动 -
多路复用流: 一个TCP链接处理多个HTTP请求 -
赋予请求优先级:发送多个请求,带宽有限时提高速度 -
压缩HTTP首部: -
推送功能:支持服务器推送给客户端,直接推送不用请求 -
服务器提示:主动提示客户端请求所需的资源。
-
问题: -
SPDY仅仅是对一个网站ip进行的多路复用。
-
使用浏览器进行全双工通信的WebSocket: -
目标:解决AJAX、和Comet里XMLHttpRequest附带的缺陷所引发的问题。 -
协议: -
发起方:客户端,一旦建立连接,双方都可以通信。 -
推送功能: -
减少通信量:只需要一次建立连接,总开销小,首部信息小,http建立后需要进行一次握手的步骤 -
握手请求:http 的Upgrade首部字段告诉服务器通信协议发送变更。 -
握手响应:返回状态码101,Switching Protocols。
-
HTTP2.0 -
7项功能: -
压缩:SPDY、Friendly -
多路复用:Spdy -
TLS义务化:Speed+Mobility -
协商:Speed+Mobility+Friendly -
推送:Speed+Mobility -
流量控制: Spdy -
webSocket: Speed+Mobility
-
Web服务器管理文件的WebDAV
|
第十章 Web -
web应用 -
CGI:通用网关接口,指Web服务器在接收到客户的发送的请求后转发给程序的一组机制,在CGI作用下,程序会对请求内容作出相应动作,比如创建HTML动态内容。 -
CGI程序:使用CGI的程序。php、c等。 -
java 的servlet: -
CGI:每次接到请求,都需要启动一次。访问大就会负载过高。 -
servlet:运行在与web服务器相同的进程中,负载小。每个请求会创建一个servlet运行
|
第五章 web的攻击 -
单台虚拟主机实现多
|
|
随想 |
|