计网 -《图解http》读书笔记

1 了解Web & 网络基础

1.1 WWW(World Wide Web,万维网)

  • 3项WWW构建技术
    ①把SGML(通用标记语言)作为页面的文本标记语言的HTML(HyperText Markup Language,超文本标记语言);
    ②作为文档传递协议的HTTP;
    ③指定文档所在地的URL(Uniform Resource Locator,统一资源定位符)。

1.2 网络基础TCP/IP协议簇

通常使用的网络(包括互联网)是在TCP/IP协议族的基础上运作的。而HTTP属于它内部对的一个子集。
在这里插入图片描述

  • TCP/IP的分层管理

四层应用层、传输层、网络层和数据链路层
在这里插入图片描述
在这里插入图片描述

  • 负责传输的IP协议(Internet Protocol)

位于网络层,传送数据包;
两个重要条件:IP地址和MAC地址。

在这里插入图片描述

  • 确保可靠性的TCP(Transmission Control Protocol,传输控制协议)

传输层,提供可靠的字节流服务;
vs UDP(User Data Protocol,用户数据报协议);
三次握手 - 确保数据能到达目标

在这里插入图片描述

  • 负责域名解析的DNS服务(Domain Name System)

    提供域名到IP地址之间的解析服务(通过域名查找IP地址,或逆向)。

  • 各种协议与HTTP协议的关系
    在这里插入图片描述

2 About HTTP

2.1 简单的HTTP协议(HTTP协议结构)
  • 请求报文

在这里插入图片描述

  • 响应报文

在这里插入图片描述

  • 告知服务器意图的HTTP方法

在这里插入图片描述

  • HTTP是不保存状态的协议,即无状态协议,可以使用Cookie进行状态管理。

在这里插入图片描述

2.2 HTTP报文内的HTTP信息
  • HTTP报文
    HTTP报文大致可分为 (1)报文首部 和 (2)报文主体 两块。(通常并不一定要有报文主体)。

在这里插入图片描述
在这里插入图片描述
报文主体和实体主体的差异(实体主体⫋报文主体)

  • 报文(message)
    HTTP通信中的基本单位,由8位组字节流(octet sequence,其中octet为8个比特)组成,通过HTTP通信传输。
    (以字节为单位的意思, 1 byte(字节)=8 bit(位))
  • 实体(entity)
    作为请求或响应的有效载荷数据(补充项)被传输,其内容由实体首部和实体主体组成。

http报文和实体的差别?

在这里插入图片描述在这里插入图片描述

  • 编码提升传输效率

    ①压缩传输的内容编码

在这里插入图片描述
②分割发送的分块传输编码

在这里插入图片描述

2.3 返回结果的HTTP状态码
  • 状态码的五大类别
类别原因短语
1XXInformational
(信息性状态码)
接收的请求正在处理
2XXSuccess
(成功状态码)
请求正常处理完毕
3XXRedirection
(重定向状态码)
需要进行附加操作以完成请求
4XXClient Error
(客户端错误状态码)
服务器无法处理请求
5XXServer Error
(服务器错误状态码)
服务器处理请求出错
  • 具体状态码
    100、101、200、204、206、301、302、303、304、307、400、401、403、404、500、502、503…
状态码
(状态码英文名称)
详解
100
(Continue)
继续,客户端应继续其请求。如果服务器收到头信息中带有100-continue的请求,这是指客户端询问是否可以在后续的请求中发送附件。在这种情况下,服务器用100(SC_CONTINUE)允许客户端继续或用417 (Expectation Failed)告诉客户端不同意接受附件。这个状态码是 HTTP 1.1中新加入的。
101
(Switching Protocols)
切换协议,服务器根据客户端的请求切换协议。当客户端通过在请求里使用Upgrade报头,以通知服务器它想改用除HTTP协议之外的其他协议时,客户端将获得此响应代码。101响应代码表示“行,我现在改用另一个协议了”。
200
(OK)
在这里插入图片描述
请求成功。一般用于GET与POST请求
204
(No Content)
在这里插入图片描述
无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
206
(Partial Content)
在这里插入图片描述
该状态码表示客户端进行范围请求,服务器成功执行GET请求,响应报文中包含Content-Range指定范围的实体内容。
301
(Moved Permanently)
在这里插入图片描述
xx永久性重定向。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替。(需要更新书签)
302
(Found)
在这里插入图片描述
临时性重定向。与301类似。但资源只是临时被移动。客户端应继续使用原有URI。(不会更新书签)
303
(See Other)
在这里插入图片描述
与302类似,区别是明确表示客户端应使用GET方法定向获取请求的资源。
ps: 301、302标准是禁止将POST改为GET的,但是实际上几乎所有的浏览器都会这么改。
304
(Not Modified)
在这里插入图片描述
未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源.
307
(Temporary Redirect)
/
与302类似,区别是不会从POST变成GET
400
(Bad Request)
在这里插入图片描述
请求报文中存在语法错误,需修改请求内容中再次发送。
401
(Unauthorized)
在这里插入图片描述
表示发送的请求需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息。
返回401必须包含一个适用请求资源的WWW-Authenticate首部用以质询用户信息,初次接受会弹出认证对话窗口。
403
(Forbidden)
在这里插入图片描述
表明对请求的资源的访问被服务器拒绝了 .
404
(Not Found)
在这里插入图片描述
表明服务器上无法找到请求的资源.
500
(Internal Server Error)
在这里插入图片描述
表明服务器端执行请求时发生了错误.
502
(Bad Gateway)
/
作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503
(Service Unavailable)
在这里插入图片描述
由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
2.4 与HTTP协作的Web服务器

2.4.1 用单台虚拟主机实现多个域名

在这里插入图片描述

2.4.2 通信数据转发程序:代理、网关、隧道

①代理:代理是一种有转发功能的应用程序,接收从客户端发送来的请求并转发给服务器,反之。接收服务器的响应转发给客户端。

在这里插入图片描述

②网关:网关是转发其他服务器通信数据的服务器,接收从客户端发送来的请求并对请求进行处理。
其工作机制与代理十分相似,而网关能使通信线路上的服务器提供非HTTP协议服务。
提高安全性,客户端 - 加密 - 网关。
在这里插入图片描述
③隧道:在相隔甚远的客户端和服务器两者之间建立通信路线 ,并保持双方通信连接的应用程序。
在这里插入图片描述
2.4.3 保存资源的缓存

在这里插入图片描述

2.5 HTTP首部
  • 4种HTTP首部字段类型
    ①通用首部字段
    请求保温和响应报文两方都会使用的首部。
    ②请求首部字段
    从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息。
    ③响应首部字段
    从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。
    ④实体首部字段
    针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。

1. HTTP/1.1规范定义了如下47种首部字段。

通用首部字段

首部字段名说明
Cache-Control 控制缓存的行为
Connection 逐跳首部,连接的管理
Date创建HTTP报文的日期时间。
Pragma 报文指令
Trailer 报文末端的首部一览
Transfer-Encoding指定报文主体的传输编码方式
Upgrade 升级为其他协议
Via 代理服务器的相关信息
Warning 错误通知

请求首部字段

首部字段名说明
Accept 用户代理可处理的媒体类型
Accept-Charset 优先的字符集
Accept-Encoding 优先的内容编码
Accept-Language 优先的语言(自然语言)
AuthorizationWeb认证信息
Expect期待服务器的特定行为
From用户的电子邮箱地址
Host请求资源所在服务器
if-Match 比较实体标记(ETag)
if-Modified-Since 比较资源的更新时间
if-None-Match 比较实体标记(与if-Match相反)
if-Range 资源未更新时发送实体Byte的范围请求
if-Unmodified-Since 比较资源的更新时间(与if-Modified-Since相反)
Max-Forwards 最大传输逐跳数
Proxy-Authorization代理服务器要求客户端的认证信息
Range实体的字节范围请求
Referer对请求中URI的原始获取方
TE 传输编码的优先级
User-AgentHTTP客户端程序的信息

响应首部字段

首部字段名说明
Accept-Ranges 是否接受字节范围请求
Age推算资源创建经过时间
ETag 资源的匹配信息
LOcation 令客户端重新定向至指定的URI
Proxy-Authenticate代理服务器对客户端的认证信息
Retry-After 对再次发起请求的时机要求
Server HTTP服务器的安装信息
Vary 代理服务器缓存的管理信息
WWW-Authenticate 服务器对客户度端的认证信息

实体首部字段

首部字段名说明
Allow 资源可支持的HTTP方法
Content—Encoding 实体主体适用的内容编码方式
Content-Language实体主体的自然语言
Content-Length 实体主体部分的大小(单位:字节)
Content-Location 替代对应资源的URI
Content-MD5 实体主体的报文摘要
Content-Range 实体主体的位置范围
Context-Type 实体主体的媒体类型
Expires 实体主体过期的日期时间
Last-Modified资源的最后修改日期时间

2. 为Cookie服务的首部字段

首部字段名说明首部类型
Set Cookie开始状态管理所使用的Cookie信息响应首部字段
Cookie服务器接收到的Cookie信息请求首部字段
在这里插入图片描述在这里插入图片描述
3. 其他首部字段
  • X-Frame-Options:X-Frame-Options:响应首部,用于控制网站内容在其他Web网站Frame标签内的显示问题,主要目的是为了防止点击劫持攻击。
    字段值:DENY(拒绝),SAMEORIGIN(仅同源名下的页面匹配时可许)。
  • X-XSS-Protection:响应首部,是针对跨站脚本攻击(XSS)的一种对策,用于控制浏览器XSS防护机制的开关。
    字段值:0(将XSS过滤设置成无效状态),1(将XSS设置成有效状态)
  • DNT:请求首部,是Do Not Track的简称,意为拒绝个人信息收集,表示拒绝被精准广告收集
    字段值:0(同意被追踪),1(拒绝被追踪)。
  • P3P:响应首部,通过P3P技术,可以让Web网站的个人隐私变成一种仅供程序理解的形式,达到保护用户隐私的目的。
    步骤:①创建P3P隐私;②创建PSP隐私对照文件后,保存命名/w3c/p3p.xml;③从P3P隐私中新建Compact policies后,输出到HTTP响应中。

3 About HTTPS - 确保Web安全的HTTPS

  1. HTTP的缺点
  • 通信使用明文可能会被窃听(TCP/IP是可能本窃听的网络)
  • 不验证通信方的身份就可能遭遇伪装
  • 无法证明报文完整性,可能已遭篡改
  1. HTTP + 加密 + 认证 + 完整性保护 = HTTPS
  • HTTPS是身披SSL外壳的HTTP(通信的加密)

  • 相互交换密钥的公开密钥加密技术(SSL采用这种 内容的加密 方式)

    使用两把密钥的公开密钥加密:
    使用两把密钥的公开密钥加密

  • 证明公开密钥正确性的证书
    使用由数字证书认证机构(CA, Certificate Authority)和其相关机关颁发的公开密钥证书。
    在这里插入图片描述

  1. HTTPS的安全通信机制

在这里插入图片描述

4 Web攻击技术

  1. 针对 Web 的攻击技术
  • HTTP 不具备必要的安全功能
  • 在客户端即可篡改请求

在这里插入图片描述

  • 针对 Web 应用的攻击模式(主动攻击&被动攻击)

在这里插入图片描述
在这里插入图片描述

  1. 因输出值转义不完全引发的安全漏洞
  • 跨站脚本攻击(Cross-Site Scripting,XSS)
    是指通过存在安全漏洞的 Web 网站注册用户的浏览器内运行非法的HTML 标签或 JavaScript 进行的一种攻击。
    是攻击者利用预先设置的陷阱触发的被动攻击。

  • SQL注入攻击(会执行非法 SQL)
    是指针对 Web 应用使用的数据库,通过运行非法的 SQL 而产生的攻击。

  • OS命令注入攻击
    是指通过 Web 应用,执行非法的操作系统命令达到攻击的目的。

  • http首部注入攻击
    HTTP 首部注入攻击(HTTP Header Injection)是指攻击者通过在响应首部字段内插入换行,添加任意响应首部或主体的一种攻击。
    属于被动攻击模式。
    HTTP 首部注入攻击有可能会造成以下一些影响。
    设置任何 Cookie 信息、重定向至任意 URL、显示任意的主体(HTTP 响应截断攻击)

  • 邮件首部注入攻击
    是指 Web 应用中的邮件发送功能,攻击者通过向邮件首部 To 或 Subject 内任意添加非法内容发起的攻击。利用存在安全漏洞的 Web 网站,可对任意邮件地址发送广告邮件或病毒邮件。

  • 目录遍历攻击
    是指对本无意公开的文件目录,通过非法截断其目录路径后,达成访问目的的一种攻击。这种攻击有时也称为路径遍历(Path Traversal)攻击。

  • 远程文件包含漏洞
    是指当部分脚本内容需要从其他文件读入时,攻击者利用指定外部服务器的 URL 充当依赖文件,让脚本读取之后,就可运行任意脚本的一种攻击。

  1. 因设置或设计上的缺陷引发的安全漏洞
  • 强制浏览
    从安置在 Web 服务器的公开目录下的文件中,浏览那些原本非自愿公开的文件。

  • 不正确的错误消息处理
    eg:画面提示“邮件地址未注册”的错误消息。当输入的邮件地址尚未在该 Web 网站上注册时,就会触发 这条错误消息。因为倘若邮件地址存在,应该会提示“输入的密码有误”之类的错误消息。攻击者利用进行不同的输入会提示不同的错误信息这条,就可用来确认输入的邮件地址是否已在这个Web 网站上注册过了。
    为了不让错误消息给攻击者以启发,建议将提示消息的内容仅保留到“认证错误”这种程度即可。

  • 开放重定向
    而于此功能相关联的安全漏洞是指,假如指定的重定向 URL 到某个具有恶意的 Web 网站,那么用户就会被诱导至那个 Web 网站。
    eg:http://example.com/?redirect=http://www.tricorder.jp
    攻击:http://example.com/?redirect=http://hackr.jp
    用户看到 URL 后原以为访问 example.com,不料实际上被诱导至 hackr.jp 这个指定的重定向目标。可信度高的 Web 网站如果开放重定向功能,则很有可能被攻击者选中并用来作为钓鱼攻击的跳板。

  1. 因会话管理疏忽引发的安全漏洞
  • 会话劫持
    对以窃取目标会话 ID 为主动攻击手段的会话劫持而言,会话固定攻击(Session Fixation)攻击会强制用户使用攻击者指定的会话 ID,属于被动攻击。

在这里插入图片描述

  • 会话固定攻击

在这里插入图片描述

  • 跨站点请求伪造
    跨站点请求伪造(Cross-Site Request Forgeries,CSRF)攻击是指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动攻击。

在这里插入图片描述

  1. 其他安全漏洞
  • 密码破解(穷举法、字典攻击)
    从加密过的数据中导出明文通常有以下几种方法:通过穷举法·字典攻击进行类推、彩虹表、拿到密钥、加密算法的漏洞
  • 点击劫持
    是指利用透明的按钮或链接做成陷阱,覆盖在 Web 页面之上。然后诱使用户在不 知情的情况下,点击那个链接访问内容的一种攻击手段。
  • DoS攻击
    是一种让运行中的服务呈停止状态的攻击。
    主要有以下两种 DoS 攻击方式:①集中利用访问请求造成资源过载,资源用尽的同时,实际上服务也就呈停止状态;②通过攻击安全漏洞使服务停止。
    其中,集中利用访问请求的 DoS 攻击,单纯来讲就是发送大量的合法请求。服务器很难分辨何为正常请求,,何为攻击请求,因此很难防止 DoS 攻击。
  • 后门程序
    是指开发设置的隐藏入口,可不按正常步骤使用受限功能。利用后门程序就能够使用原本受限制的功能。
    通常的后门程序分为以下 3 种类型:开发阶段作为 Debug 调用的后门程序、开发者为了自身利益植入的后门程序、攻击者通过某种方法设置的后门程序。’
    可通过监视进程和通信的状态发现被植入的后门程序。但设定在 Web 应用中的后门程序,由于和正常使用时区别不大,通常很难发现。

5 其他

5.1 确认访问用户身份的认证
  1. Basic认证
    ①客户端发起请求
    → ②服务端返回401+WWW-Authenticate首部字段(认证的方式(BASIC)+Request-URL安全域字符串(realm))
    → ③客户端发生送用户名密码
    → ④服务器验证+返回资源

  2. DIGEST认证
    ①客户端发起请求
    → ②服务端返回401+WWW-Authenticate首部字段(认证的方式(DIGEST)+质问响应的方式认证所需的临时质询码(随机数nonce)+realm)
    → ③客户端请求(首部字段Authorization (必须包含username,realm,none从,uri和response的字段信息)
    → ④服务器验证+返回资源

  3. SSL客户端认证

  • 采用双因素认证:SSL客户端证书+密码(用户本人行为)
  • 有必要的费用
  1. 基于表单认证
  • 一般会使用Cookie来管理Session(会话)。
    在这里插入图片描述
5.2 基于HTTP的功能追加协议
  1. HTTP的瓶颈
  • ①一条连接上只可发送一个请求

  • ②请求只能从客户端开始,客户端不可以接收除响应以外的指令

  • ③请求/响应首部未经压缩就发送,信息越多延迟越大

  • ④发送冗长的首部,相同首部会浪费

  • ⑤可任意选择数据压缩格式。非强制压缩发送

  1. Ajax的解决办法
    Ajax 的核心技术是名为 XMLHttpRequest 的 API,通过 JavaScript 脚本语言的调用就能和服务器进行 HTTP 通信。借由这种手段,就能从已加载完毕的 Web 页面上发起请求,只更新局部页面。而利用 Ajax 实时地从服务器获取内容,有可能会导致大量请求产生。另外, Ajax 仍未解决 HTTP 协议本身存在的问题。

  2. Comet 的解决方法
    一旦服务器端有内容更新了, Comet 不会让请求等待,而是直接给客户端返回响应。这是一种通过延迟应答,模拟实现服务器端向客户端推送(Server Push)的功能。通常,服务器端接收到请求,在处理完毕后就会立即返回响应,但为了实现推送功能, Comet 会先将响应置于挂起状态,当服务器端有内容更新时,再返回该响应。因此,服务器端一旦有更新,就可以立即反馈给客户端。内容上虽然可以做到实时更新,但为了保留响应,一次连接的持续时间也变长了。期间,为了维持连接会消耗更多的资源。另外, Comet 也仍未解决 HTTP 协议本身存在的问题。

  3. SPDY的设计与功能
    在TCP/IP的应用层与运输层之间通过新加会话层的形式运作,同时通信使用SSL。
    在这里插入图片描述
    使用 SPDY 后,HTTP 协议额外获得以下功能:
    多路复用流
    通过单一的 TCP 连接,可以无限制处理多个 HTTP 请求。所有请求的处理都在一条 TCP 连接上完成,因此TCP 的处理效率得到提高。
    赋予请求优先级
    SPDY 不仅可以无限制地并发处理请求,还可以给请求逐个分配优先级顺序。这样主要是为了在发送多个请求时,解决因带宽低而导致响应变慢的问题。
    压缩HTTP首部
    压缩 HTTP 请求和响应的首部。这样一来,通信产生的数据包数量和发送的字节数就更少了。
    推送功能
    支持服务器主动向客户端推送数据的功能。这样,服务器可直接发送数据,而不必等待客户端的请求。
    服务器提示功能
    服务器可以主动提示客户端请求所需的资源。由于在客户端发现资源之前就可以获知资源的存在,因此在资源已缓存等情况下,可以避免发送不必要的请求。

SPDY 消除 Web 瓶颈了吗?
希望使用 SPDY 时, Web 的内容端不必做什么特别改动,而 Web 浏览器及 Web 服务器都要为对应 SPDY做出一定程度上的改动。有好几家 Web 浏览器已经针对 SPDY 做出了相应的调整。另外, Web
服务器也进行了实验性质的应用,但把该技术导入实际的 Web 网站却进展不佳。因为 SPDY 基本上只是将单个域名( IP
地址)的通信多路复用,所以当一个 Web 网站上使用多个域名下的资源,改善效果就会受到限制。SPDY 的确是一种可有效消除 HTTP
瓶颈的技术,但很多 Web 网站存在的问题并非仅仅是由 HTTP 瓶颈所导致。对 Web本身的速度提升,还应该从其他可细致钻研的地方入手,比如改善 Web 内容的编写方式等。

  1. 使用浏览器进行全双工通信的 WebSocket
  • 推送功能
  • 减少通信量
    只要建立起 WebSocket 连接,就希望一直保持连接状态。和 HTTP 相比,不但每次连接时的总开销减少,而且由于 WebSocket 的首部信息很小,通信量也相应减少了。

为了实现 WebSocket 通信,在 HTTP 连接建立之后,需要完成一次“握手”(Handshaking)的步骤:
在这里插入图片描述
6. 期盼已久的 HTTP/2.0

协议:SPDY、HTTP Speed+Mobility 、Network-Friendly HTTP Upgrade

HTTP/2.0的特点:

压缩SPDY、Friendly
多路复用SPDY
TLS义务化Speed+Mobility
协商Speed+Mobility,Friendly
客户端拉曳(Client Pull)/服务器推送(Server Push)Speed+Mobility
流量控制SPDY
WebSocketSpeed+ Mobility
注:HTTP Speed+Mobility 简写为Speed+Mobility,Network-Friendly HTTP Upgrade简写为Friendly.
  1. Web 服务器管理文件的 WebDAV
    WebDAV(Web-based Distributed Authoring and Versioning,基于万维网的分布式创作和版本控制)是一个可对 Web 服务器上的内容直接进行文件复制、编辑等操作的分布式文件系统。
5.3 构建Web内容的技术
  • HTML
  • 动态HTML
  • Web应用
    通过Web提供功能的Web应用、与web服务器和程序协作的CGI(通用网关接口)、因Java而普及的Servlet
  • 数据发布的格式及语言
    ①XML(eXtensible Markup Language,可扩展标记语言)
    发布更新信息的RSS/Atom都是发布新闻或博客日志等更新信息文档的格式的总称,两者都用到了XML。
    ②Javascript衍生的轻量级JSON(JavaScript Object Notation, JS 对象简谱)

6 别人的文章

傻傻分不清之 Cookie、Session、Token、JWT
强缓存vs协商缓存
三次握手&四次握手

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值