《图解HTTP》知识笔记 —— 5分钟带你速览全书的精髓

【 第一部分 】 HTTP相关内容

写在前面

       春节期间,抽空看完了《 图解HTTP 》 全书 豆瓣评分8.1 这几天正好空闲,趁着这股热乎劲儿,将书中一下重点知识进行了归纳总结,方便日后查阅。

        简单聊一下读后感 :全书共11个章节,前面几章主要介绍HTTP通信相关的知识,也就是围绕从输入URL到页面展示话题展开,完整讲解了HTTP的通信原理和通信过程,文中穿插着许多生动形象的图片,非常有利于读者理解,帮助读者快速了解HTTP协议;面几章主要介绍了一些加密手段和web攻击技术,内容点到即止,没有深入的阐述属于科普性质。

        随便提一下,为了更好的阅读体验,可点击下方链接,访问我在wolai的读书笔记【没有广告!!!】

       《图解HTTP》知识笔记

HTTP/HTTPS定义

  • 超文本传输协议/超文本安全传输协议

HTTP 的诞生主要是为了解决文本传输的难题

TCP/IP与HTTP的关系

  • TCP/IP 是互联网相关的各类协议的总称

  • TCP/IP 采取分层管理(4层)

    • 应用层 :决定向用户提供服务时通信的活动 【HTTP】【FTP】【DNS】

    • 传输层 : 提供处于网络链接中两台计算机之间的数据传输 【TCP】【UDP】

    • 网络层 : 处理在网络上流动的数据包 【IP】

      数据包是网络传输的最小单位

    • 数据链路层 : 用来处理连接网络的硬件部分 【硬件的设备驱动】【网卡】【光纤】

HTTP 是TCP/IP的子集,属于TCP/IP分层结构中的应用层

IP协议、TCP协议、DNS 名词解释

  • IP协议 :TCP/IP协议集合中的网络层,主要作用的将数据包传送给对方

    要确保数据能正确的传输给目标方,需具备以下条件
    1. IP地址 :指明节点被分配到的地址 【IP地址通常是可变的】
    2. MAC地址 :网卡所属的固定地址 【MAC地址通常是不变的】

  • TCP协议 :TCP属于传输层,提供可靠的字节流服务

    要确保数据能真情的传输给目标方,TCP采取三次握手的形式,确保数据成功发送!

  • DNS : 属于应用层,主要负责域名解析即将域名解析为IP,或将IP转换为对应域名

TCP/IP的通信流程

  1. 客户端在应用层发起http请求

  2. TCP传输层将数据(HTTP请求 报文)进行分割,并在各个报文上打上标记序号以及端口号,然后转发给网络层

  3. 网络层(IP协议)增加作为通信目的地的MAC地址后转发给数据链路层

  4. 接收端服务器在数据链路层接收到数据,按序往上层发送,一直到应用层。

  5. 当响应数据传输到应用层,一次请求完成

从输入URL 到页面展示的过程

HTTP协议介绍

  • 无状态

HTTP是无状态的协议,为了实现状态保持功能,后续引入cookie 技术

  • 持久链接:keep-alive

在HTTP初始协议中,每进行一次HTTP通信,就要断开一次TCP连接,大量的TCP连接和断开会增加通信量的开销。

为了解决上述问题,HTTP/1.1 和一部分HTTP/1.0 提出持久连接的方法。持久连接的特点是,只要任意一端没有明确提出断开连接,则保持TCP连接状态

  • 管线化

持久连接使得多数请求以管线化的方式发送成为可能,以往发送请求后需等待并收到响应,才能发送下一个请求,管线化技术实现后不用等待响应亦可直接发送下一个请求。【并行发送多个请求】

  • 使用Cookie 管理状态

cookie 技术通过在请求和响应报文中写入Cookie 信息来控制客户端的状态

  1. 根据响应报文的set-cookie 的首部字段,通知客户端写入cookie
  2. 当下次客户端向服务器发送请求时自动在请求报文中加入Cookie 的值发送给客户端

HTTP报文介绍

报文是HTTP通信中的基本单位 [ 由8 位字节流组成 ]

报文类型

  • 请求报文

请求报文由 【请求方法】【请求URI】【http协议版本】【请求首部字段】【内容实体构成】

  • 响应报文

响应报文由 【协议版本】【状态码】【状态码解释短语】【可选的响应首部字段】【内容实体】

报文内容

  • 报文首部 :内容和属性

  • 报文主体 :传输的数据

报文首部和报文主体通过空行分割

报文结构

  • 请求行/响应行

请求行 :【请求方法】 + 【URI】 + 【HTTP协议版本号】

响应行 :【状态码】 + 【状态码解释短语】 + 【HTTP 协议版本】

  • 请求首部字段 / 响应首部字段

  • 通用首部字段

  • 实体始于字段

通过编码提升速度

  • 压缩传输内容的编码

    1. gzip ( GNU zip )

    2. compress ( UNIX 系统的标准压缩 )

    3. deflate ( zlib )

    4. identify ( 不进行编码 )

  • 分割发送的分块传输编码

    在传输大量内容时,通过将数据分割成多块,能够让浏览器逐步显示页面,分块传输码会将实体主体分割成多个部分( 块 )。每一块都会用十六进制来标记块的大小,而实体主体的最后一块会使用 【 0(CR + LF ) 】来标记

发送多种数据的多部分对象集合

发送的一份报文主体可含有多种类型的实体。( 通常在是上传文件或者图片的时候使用 )

  • 多部分对象集合包含的对象如下

    1. multipart / form-data : 在web上传表单的时候使用

    2. multipart / byteranges : 状态码206,响应报文包含多个范围内容的时候使用 【分段上传】

内容协商返回最合适的内容

  • 服务器驱动协商

  • 客户端驱动协商

  • 透明协商 ( 服务器驱动+ 客户端驱动 )

常见状态码

状态码状态码描述短语备注
200OK
204No Content请求已成功处理,但响应中不含报文主体即数据
206Partical Content分段范围请求成功
301Moved Permanently永久性重定向,通过响应报文的location字段指定新的URL
302Found临时性重定向
303See Other资源的URI 已经更新,应使用GET 访问新的URL
304Not Modified资源已找到,但未符合条件请求,不包含任何响应主体
307Temporary Rediect临时重定向
400Bad Request请求报文存在语法错误,服务器无法理解
401Unauthorized未授权
403Forbidden访问被拒绝
404Not Found资源未找到,通常是URI 出了问题
500Internal Server Error服务器内部错误
503Service Unavailable服务不可用,服务器超负载或正在停机维护

WEB 服务器相关知识

  • 代理 : 客户端和服务端的中间人,具有转发功能的应用程序。

代理转发时需要附加Via 字段标记经过的主机信息

使用代理的优点: 利用【缓存】技术【减少网络带宽】、组织内部针对特定的网站的设置【访问控制】、【获取访问日志】

  • 网关 : 利用网关可以实现将HTTP请求转换为其它通信协议

  • 隧道 :建立一条与其它服务器的通信线路,确保客户端能与服务器进行安全的通信

重要的HTTP首部字段

  • content-type :报文主体对象的媒体类型

  • cache-control :操作缓存相关指令

指令参数说明
no-cache-每次都得向源服务器确认
no-store-彻底不使用缓存
max-age=[秒]必须响应最大的age值,即缓存的有效时间
max-state=[秒]可省略接受已过期的响应,即响应过期多少秒以内仍可使用
min-fresh=[秒]必须期望在指定时间内响应仍有效
  • Via : 追踪客户端与服务器之间的请求和响应报文的传输路径 ( 跟踪经过的代理和网关 )

  • Accept : 告知服务器,客户端能够处理的媒体类型及其优先级,反之亦然

    使用q= 来表示优先级,优先级范围0—1 ,1为最大值

  • Accept-Charset : 告知服务器支持的字符集及其优先级,反之亦然

  • Accept-Encoding : 告知服务器支持的内容编码及其优先级,反之亦然

  • Host : 告知主机名

  • Range : 范围请求,如果服务器支持则返回状态码206及请求的范围资源,否则返回200和全部资源

  • User-Agent : 浏览器的种类

  • Age : 源服务器在多久前建立的响应

  • Etag : 资源的标记,由服务器分配

  • Location : 重定向时用于指定新的URL

【第二部分】HTTPS及web安全相关知识

HTTPS = 【HTTP】+ 【加密】+ 【认证】+【完整性保]

HTTPS比HTTP慢2到100

HTTP 的缺点

  • 通信使用明文(不加密),内容可能会被窃听

    HTTP 本身不具备加密功能

  • 不验证通信方的身份**,有可能在于****伪装**

  • 无法验证报文的完整性,报文有可能被****篡改

HTTPS 介绍

HTTPS = 【HTTP】+ 【加密】+ 【认证】+【完整性保护】

HTTPS 并非是应用层的的新协议,知识http通信接口部分用SSL和TLS协议替代而已,通常HTTP直接和TCP通信。当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信。

加密技术

  • 通信的加密 :比如ssl ( 安全套接层 ) 或 tls ( 安全层传输协议 ) 的组合使用以此加密HTTP的通信内容

  • 内容的加密 :对报文进行加密后在发送,要求客户端和服务端同时具备加密和解密机制

加密方法

近代加密算法中加密算法是公开的,密钥是保密的,加密和解密通用一个密钥的方式称为共享密钥加密,也称作对称密钥加密

  • 共享密钥加密的缺点 :密钥交换时是不安全的,如果在密钥交换的图中密钥被监听,那么就失去了加密的意义。

  • 公开密钥加密: 使用一对非对称的密钥,一把叫私有密钥,一把叫共有密钥。私有密钥不得让任何人直到,公开密钥则可以随意发布。报文发送时使用公开密钥加密,接收方使用私有密钥解密。

  • HTTPS采用混合的加密方式 : 在交换密钥的环节使用公开密钥加密方式,待密钥交换完成后则使用共享密钥加密的方式,以较快处理速度。

web 攻击技术

WEB 服务器上的应用和资源是攻击的目标

针对web应用的攻击技术

  • 主动攻击 【SQL注入攻击】 【OS命令注入攻击】

  • 被动攻击 【跨站脚本攻击】 【跨站请求伪造】

跨站脚本攻击 【XSS】

通过存在安全隐患的Web网站注册用户的浏览器运行非法的HTML标签或者JS进行攻击

可能造成的影响:

  1. 利用虚假表单骗取个人信息

  2. 利用脚本窃取用户的cookie, 在用户不知情的情况下帮助攻击者发送恶意请求

  3. 显示伪造的文章或图片

SQL注入攻击

通过运行非法的SQL语句产生攻击

可能产生的影响

  1. 非法查看或篡改数据库内的数据

  2. 规避认证

  3. 执行和数据库服务器关联的程序等

强制浏览

从安置在web服务器上的公开的文件目录中,浏览哪些非资源公开的文件,从而导致信息泄露 【网站设计的漏洞】


(完)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mingyong.g

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值