读书笔记-图解HTTP

了解 Web 及网络基础

  • 访问 Web 时用的就是 HTTP 协议。
  • 有三项 WWW 构建技术
    • 页面的文本标记语言 HTML
    • 文档传递协议 HTTP
    • 文档所在地址的 URL
  • 通常使用的网络是在 TCP/IP 协议的基础上运作的。HTTP 属于其内部的一个子级
  • OSI 五层模型:应用层,传输层,网络层,数据链路层,物理层
  • 与 HTTP 密不可分的3个协议(IP、TCP 和 DNS)
    • IP 网际协议位于网络层,其作用是把何种数据包传送给对方。其中两个重要条件是 IP 地址和 MAC 地址
    • TCP 位于传输层,提供可靠的字节流服务。字节流服务是指,将大块数据分割成以报文字段为单位的数据包进行管理。可靠就是把数据准确地传递给对方。为了准确无误地把数传送到,TCP 协议采用了三次握手策略
    • DNS 服务和 HTTP 协议 一样位于应用层的协议。它提供域名到 IP 地址之间的解析服务
  • URL 是使用 Web 浏览器等访问 Web 页面时需要输入的网页地址

简单的 HTTP 协议

  • HTTP 协议和 TCP/IP 协议内的其他众多协议相同,用于客户端和服务器之间的通信
  • HTTP 协议规定,请求从客户端发出,最后服务器端相应该请求并返回
  • HTTP 是无状态协议,所以引入了 Cookie 技术
  • HTTP 使用 URI 定位互联网上的资源
    • GET 获取资源
    • POST 传输实体主体
    • PUT 传输文件
    • HEAD 获取报文首部
    • DELETE 删除文件
  • HTTP/1.1 建立的是持久连接,持久连接的好处在于减少了 TCP 连接的重复建立和断开造成的额外开销,减轻了服务器端的负载,这也使得请求以管线化方式发送称为可能。
  • 使用 Cookie 的状态管理

HTTP 报文内的 HTTP 信息

  • 用于 HTTP 协议交互的信息被称为 HTTP 报文
  • 报文的结构:请求行,状态行,首部字段,其他
  • 编码可以提升传输速率,但同时会消耗更多的 CPU
    • 压缩传输的内容编码:gzip, compress, deflate, identity
    • 分割发送的分块传输编码: 分块传输编码会将实体分成多个部分,每一块都会用十六进制来标记块的大小,而实体的最后一块会使用"0(CR+LF)"来标记
  • 发送多种数据的多部分对象集合:HTTP 协议中采纳了多部分对象集合,发送一份报文主体内可含有多类型实体。通常再图片或者文本上传时使用。常见的是 multipart/form-data
  • 获取部分内容的范围请求,指定范围发送的请求叫做范围请求。 Range: bytes=5001-1000 ,会用到首部字段 Range 来制定资源的 byte 范围
  • 内容协商返回给客户端最为适合的资源

返回结果的 HTTP 状态码

  • 状态码的职责是当客户端向服务器发送请求时,描述返回的请求结果
    • 1xx 接受的请求正在处理
    • 2xx 请求正常处理完毕
    • 3xx 需要进行附加操作以完成请求
    • 4xx 服务器无法处理请求
    • 5xx 服务器处理请求出错

与 HTTP 协作的 Web 服务器

一台 Web 服务器可搭建多个独立域名的 Web 网站,也可以作为通信路径上的中转服务器提升效率。

一个服务器可以使用虚拟主机功能,就像是有多台服务器一般

HTTP 通信时, 除客户端和服务器以外,还有一些用于通信数据转发的应用程序,例如代理、网管和隧道。它们可以配合服务器工作。

代理

代理:代理是一种有转发功能的应用程序,它扮演了位于服务器和客户端“中间人”的角色,接收由客户端发送的请求并转发给服务器,同时也接受服务器返回的响应并转发给客户端。

每次经过代理服务器转发请求或相应时,会追加写入 Via 首部信息。

使用代理服务器理由:利用缓存技术减少网络带宽的流量,组织内部针对特定网站的访问控制,以获取访问日志为主要目的,等等。

代理有多种使用方法,按两种基准分类。一种是是否使用缓存,另一种是是否会修改报文。

缓存代理:会预先将资源的副本保存在代理服务器上。

透明代理:转发请求或响应时,不对报文做任何加工的代理类型被称为透明代理。反之,对报文内容加工的代理被称为非透明代理。

网关

网关:网关是转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求及进行处理。有事客户端可能都不会察觉,自己的通信目标是一个网关。

网关的工作机制和代理十分相似。而网关能使通信线路上的服务器提供非 HTTP 协议服务。

利用网关能提高通信的安全性,因为可以在客户端与网关之间的通信线路上加密以保持连接的安全。比如,网管可以连接数据库,使用 SQL 语句查询数据。另外, 在 Web 购物网站进行信用卡结算时,网关可以和信用卡结算系统联动。

隧道

隧道: 隧道是相隔在甚远的客户端和服务器之间进行中转,并保持双方通信连接的应用程序。

隧道可以按要求建立起一条与其他服务器的通信线路,届时使用 SSL 等加密手段进行通信。隧道的目的确保客户端与服务器进行安全的通信。

隧道本身不会解析 HTTP 请求。也就是说,请求保持原样中转给之后的服务器。隧道会在通信双方断开连接时结束。

HTTP 报文首部

HTTP 报文由 HTTP 版本、状态码、HTTP首部字段3部分构成。

HTTP 首部字段是构成 HTTP 报文的要素之一。在客户端与服务器之间以 HTTP 协议进行通信的过程中,无论是请求还是先响应都会使用到首部字段,它能起到传递额外重要信息的作用。

HTTP/1.1 通用首部字段

Cache-Control: 通过指定首部字段 Cache-Control 的指令,就能操作缓存的工作机制。

Connection: 控制不再转发给代理的首部字段,管理持久连接。

Date: 首部字段 Data 表明创建 HTTP 报文的日期和时间。

Pragma: 客户端会要求所有的中间服务器不返回缓存的资源。

Trailer: 会事先说明在报文主体后记录了哪些首部字段。

Transfer-Encoding: 规定了传输报文主体时采用的编码方式。

Upgrade: 用于检测 HTTP 协议及其他协议是否可使用更高的版本进行通信。

Via: 为了追踪客户端和服务器之间的请求和响应报文的传输路径。

ETag: 一种可将资源以字符串形式做唯一性标识的方式。服务器会为每份资源更新 ETag值。

Retry-After: 告诉客户端多久之后再次发送请求。

Content-Range: 针对范围请求,返回响应时使用的首部字段 Content-Rnage,能告知客户端作为响应返回的实体的哪个部分符合范围请求。

HttpOnly: 可以使 JavaScript 脚本无法获得 Cookie。

DNT: 拒绝个人信息被收集

确保 Web 安全的 HTTPS

在 HTTP 协议中可能会存在信息窃听或身份伪装等安全问题。使用 HTTPS 通信机制可以有效地防止这些问题。

HTTP 协议的缺点

  • 通信使用明文,内容可能会被窃听
  • 不验证通信方的身份,因此可能遭遇伪装
  • 无法验明报文的完整性,所以可能已遭篡改

HTTPS 简述

HTTP + 通信加密 + 证书认证 + 完整性保护 = HTTPS

HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用 SSL 和 TLS 协议代替而已。

通常 HTTP 直接和 TCP 通信。当使用 SSL 时, 则演变成先和 SSL 通信, 再由 SSL 和 TCP 通信。

SSL 是独立于 HTTP 的协议,所以不光是 HTTP 协议, 其它运行在应用层的 SMTP 和 Telnet 等协议可配合 SSL 协议使用。

HTTPS 加密机制

HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密机制。若密钥能够实现安全交换,那么有可能会考虑仅使用公开密钥加密来通信。但是公开密钥与共享密钥相比,其处理速度要慢。

所以充分利用两者优势,将多种方法组合起来用于通信。在交换密钥环节使用公开密钥加密方式,之后建立通信交换报文阶段使用共享密钥加密方式。

在能使用 HTTPS 的情况下尽可能用 HTTPS

确认访问用户的身份

  • BASIC 认证
  • DIGEST 认证
  • SSL 客户端认证
  • FormBase 认证

基于 HTTP 的功能追加协议

  • Ajax 的解决办法
  • Comet 的解决方法
  • 浏览器进行全双工通信的 WebSocket
  • HTTP/2.0

针对 Web 的攻击技术

  • SQL 注入攻击
  • XSS 跨站脚本攻击
  • CSRF 跨站请求伪造
  • DDoS 分布式拒绝服务

--EOF--

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容