主要记录一下图解HTTP的读书笔记,最后一章WEB攻击没怎么看,总体来看还是很简单易懂的一本书
TCP/IP协议分为4层
应用层:应用层决定了向用户提供应用服务时通信的活动。
传输层:传输层对上层应用层, 提供处于网络连接中的两台计算机之间的数据传输。
网络层:网络层用来处理在网络上流动的数据包。 数据包是网络传输的最小数据单位。 该层规定了通过怎样的路径到达对方计算机, 并把数据包传送给对方。
数据链路层:用来处理连接网络的硬件部分。 包括控制操作系统、 硬件的设备驱动,及光纤等物理可见部分。硬件上的范畴均在链路层的作用范围之内。
HTTP协议作用
负责生成请求报文(请求方)或响应报文(接收方)
TCP协议作用
对HTTP请求报文进行分割(请求方)或重组(接收方)
IP协议作用
搜索对方的地址,一边中转,一边传送
URL与URI
URL:统一资源定位符
URI:统一资源标识符(是由某个协议方案表示的资源的定位标识符。 协议方案是指访问资源所使用的协议类型名称,包含不止于URL)
URI格式
HTTP 协议规定
请求从客户端发出, 最后服务器端响应该请求并返回。 换句话说, 肯定是先从客户端开始建立通信的, 服务器端在没有接收到请求之前不会发送响应。
请求报文
响应报文
OPTIONS请求
查询HTTP服务器端支持的HTTP方法种类。
TRACE请求
发送请求时,在Max-Forwards首部字段中填入数值,每经过一个服务器端就将该数字减1,当数值刚好减到0时,就停止继续传输,最后接收到请求的服务器端则返回状态码200 OK的响应。(用于追踪传输)
CONNECT请求
CONNECT 方法要求在与代理服务器通信时建立隧道, 实现用隧道协议进行 TCP 通信
HTTP/1.1默认持久连接
建立 1 次 TCP 连接后进行多次请求和响应的交互,减轻了服务器端的负载,加快了WEB页面显示速度
管线化技术
不等待响应,直接发送下一个请求,管线化技术则比持久连接还要快
可以对传输内容编码压缩
分块传输编码
分块传输编码会将实体主体分成多个部分(块)。每一块都会用十六进制来标记块的大小,而实体主体的最后一块会使用“0(CR+LF)”来标记
Range请求头
只请求部分数据(注意第3个不是负3000是)
针对范围请求,响应会返回状态码为206的响应报文
如果服务器端无法响应范围请求, 则会返回状态码 200 OK 和完整的实体内容
内容协商
内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源,内容协商会以响应资源的语言,字符集、编码方式等作为判断的基准
服务器驱动协商:由服务器端进行内容协商。以请求的首部字段为参考,在服务器端自动处理
客户端驱动协商:由客户端进行内容协商的方式,比如按 OS 的类型或浏览器类型,自行切换成 PC 版页面或手机版页面
透明协商:由服务器端和客户端各自进行内容协商的一种方法
状态码类别
204 No Content
请求成功但是没有资源返回
206 Partial Content
返回客服端的范围请求
401 Unauthorized
请求需要认证
使用代理的好处
利用缓存技术减少网络带宽的流量,组织内部针对特定网站的访问控制,获取访问日志
隧道
隧道的目的是确保客户端能与服务器进行安全的通信,隧道本身不会去解析 HTTP 请求
浏览器缓存
强缓存:浏览器发现缓存未过期就不再请求服务器,若过期,请求服务器并缓存
Cache-Control:相对缓存失效时间
Expires:绝对缓存失效时间(依赖客服端时钟准确)
对比缓存:浏览器带着资源标识请求服务器,服务器对比,若资源未发生变化返回304让客服端使用缓存,发生更改返回新资源文件
Etag/If-None-Match:Etag资源版本号,通过资源版本号判断是否可以使用缓存
Last-Modified/If-Modfied-Since:通过服务端与客服端的最后修改时间判断是否使用缓存
优先级:强缓存(Cache-Control)>强缓存(Expires)>对比缓存(Etag/If-None-Match)>对比缓存(Last-Modified/If-Modfied-Since)
Via请求头
报文经过代理或网关时,会先在首部字段 Via 中附加该服务器的信息,然后再进行转发,首部字段 Via 不仅用于追踪报文的转发, 还可避免请求回环的发生。所以必须在经过代理时附加该首部字段内容
Accept请求头
指定可接收的类型与权重,q=[0-1]指定权重默认为1
Authorization请求头
用于携带用户的认证信息
Host请求头
若相同的 IP 地址下部署运行着多个域名,使用Host指明请求的那个域名
Max-Forwards请求头
服务器在往下一个服务器转发请求之前,Max-Forwards 的值减 1 后重新赋值。当服务器接收到 Max-Forwards 值为 0 的请求时,则不再进行转发,而是直接返回响应
ETag请求头
强ETag值,不论实体发生多么细微的变化都会改变其值
弱ETag值只有资源发生了根本改变才会改变 ETag 值。这时会在字段值最开始处附加 W/
Location响应头
一般与重定向配和指定新网址
Set-Cookie响应头
Cookie常见属性
HTTP缺点
通信使用明文( 不加密),内容可能会被窃听
不验证通信方的身份, 因此有可能遭遇伪装
无法证明报文的完整性, 所以有可能已遭篡改
HTTP+加密+认证+完整性保护=HTTPS
SSL采用公私钥加密算法
BASIC 认证
Base64编码方式不是加密可以轻易窃取内容,无法实现认证注销操作
DIGEST 认证
Comet
通常, 服务器端接收到请求, 在处理完毕后就会立即返回响应, 但为了实现推送功能, Comet 会先将响应置于挂起状态, 当服务器端有内容更新时, 再返回该响应。 因此, 服务器端一旦有更新, 就可以立即反馈给客户端
缺点:一次连接的持续时间也变长了。 期间, 为了维持连接会消耗更多的资源
JSON类型包含
false,null,true,对象,数组,数字,字符串