图解HTTP读书笔记

一、了解Web及网络基础

  1. TCP/IP通信传输流

  2. IP协议的作用是将各种数据包传送给对方。而要保证传送到对方,则需要两个重要的条件是IP地址和MAC地址。

  3. TCP协议的作用是提供可靠的字节流服务。TCP协议采用了三次握手策略。握手过程中使用了TCP的标志(flag)-SYN(synchronize)和ACK(acknowledgement)

    若在某个阶段莫名中断,TCP协议会再次以相同的顺序发送数据包

  4. DNS 负责域名解析

二、简单的HTTP协议

  1. 请求必定由客户端发出,而服务端回复响应。

  2. 请求报文是由请求方法、请求URI、协议版本、请求头和内容实体构成。

  3. 响应报文基本由协议版本、状态码、接释状态码的原因短语、可选的响应首部以及实体主体构成。

  4. HTTP是无状态协议

  • 协议对于发送的请求和响应都不做持久化处理。客户端发了啥,他也不知道了。

随着Web的不断发展,无状态的设计会让业务变得棘手。比如用户登录到一家购物网站,即使他跳到其他页面,也需要保持他的登录状态。于是引入了Cookie技术。
5. HTTP支持的方法

  1. HTTP初始版本中,每进行一次HTTP通信就要断开一次TCP连接

  1. 持久连接

为了解决上述TCP连接的问题,HTTP/1.1和一部分HTTP/1.0想出了持久连接的方法。只要任意一端没有明确提出断开连接,则保持TCP连接状态。在HTTP/1.1中,所有的连接默认都是持久连接。
8. 管线化

发送请求后无需等待响应可直接发送下一个请求。
9. Cookie

Cookie会根据从服务端发送的响应报文内一个叫Set-Cookie的首部字段信息,通知客户端保存Cooie。当下次客户端再往该服务器发送请求时,客户端会自动在请求中加入Cookie值

三、HTTP报文内的HTTP信息

  1. 请求报文和响应报文的结构

  2. 报文:是HTTP通信中的基本单位,由8位字节流组成,通过HTTP通信传输

  3. 实体:作为请求和响应的有效载荷数据(补充项)被传输,其内容由实体首部和实体主体组成。

  4. 内容编码

  • gzip(gnu zip)
  • compress
  • deflate(zlib)
  • identity(不进行编码)
  1. 分块传输

在HTTP通信过程中,请求的编码实体资源尚未全部传输完成之前,浏览器无法显示请求页面。传输大容量数据时,通过把数据分割为多块,可以使浏览器逐步显示页面。

分块传输会把实体主体分为多块,每块都会用十六进制标记块的大小。而实体主体的最后一块会使用“0(CR+LF)”来标记
6. 发送多种数据的多部分对象集合

发送邮件时,我们可以在邮件里写入文字并添加多份附件,包括图片、视频等。这是因为采用了MIME机制。而在MIME扩展中会使用多部分对象集合(Multipart)的方法。

HTTP中也采纳了多部分对象集合,发送的报文主体中可包含多类型实体。
多部分对象集合包含内容如下;

  • multipart/form-data

    在web表单文件上传时使用

  • multipart/byteranges

    状态码206,响应报文包含了多个范围的内容时使用

  1. 获取部分内容

以前下载过程中如果遇到网络中断,那就必须重新开始。为了解决这个问题就需要一个从之前下载中断处继续下载的功能。也就是指定范围进行请求

四、返回结果的HTTP状态码

  1. 状态码可描述请求的处理结果

  1. 常用状态码
  • 200 请求正常处理
  • 204 请求成功处理,但是没有资源可返回
  • 206 Partial Content 响应报文中包含了指定范围的实体请求
  • 301 永久性重定向
  • 302 Found 临时性重定向
  • 303 表示请求的资源存在另一个URI,应使用GET方法定向获取请求的资源
  • 400 Bad request
  • 401 未授权、未认证
  • 403 请求访问的资源被服务器拒绝
  • 404 服务器上无法找到对应的资源
  • 500 服务器端执行请求时发生了错误
  • 503 服务器超负荷或者停机维护,现在无法处理请求

不少返回的状态码响应都是错误的,但是用户可能察觉不到。

五、与HTTP协作的Web服务器

  1. 用单台虚拟主机实现多个域名
  2. 通信数据转发程序
  • 代理

    是有转发功能的应用程序

  • 网关

    是转发其他服务器通信数据的服务器

  • 隧道

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

六、HTTP首部

  1. 报文结构

  2. 通用首部字段

  3. HttpOnly属性

可以使js脚本无法获取Cookie。

七、确保Web安全的Https

  1. HTTP的缺点
  • 通信使用明文
  • 不验证通信方的身份
  • 无法证明报文的完整性
  1. 通信加密

通过和SSL(安全套接层)或TLS(安全层传输协议)的组合使用,可以加密HTTP的通信内容。与SSL组合使用的HTTP被称为HTTPS。
3. 不验证身份的问题

  • 无法确定正在通信对方是否有访问权限
  • 无法确定响应返回到的客户端是否是伪装的
  • 无法阻止海量请求的Dos攻击

但如果使用了SSL,就可以查明对方的证书,证书是由值得信任的第三方机构颁布
4. 无法证明报文完整性

Http协议无法证明通信的报文完整性,可能会被中间人攻击来修改。其中采用的MD5和SHA-1等散列值校验的方法。
5. Https

HTTP+加密+认证+完整性保护

通常HTTP直接和TCP通信,当使用SSL的时候,则是先和SSL通信,再由SSL和TCP通信了。简言之,HTTPS,就是身批SSL协议这层外壳的HTTP。

HTTPS采用混合加密机制,在交换密钥环节使用公开密钥(公钥加密,非对称加密方式)加密,之后建立通信交换报文阶段使用共享密钥加密方式。

证明公开密钥的正确性需要证书,证书需要权威机构颁发。

HTTPS存在的问题,就是使用SSL时,速度会变慢。

  • 通信慢 需要进行SSL通信,通信量增加
  • 需要加解密,会占用CPU资源

第八章 确认访问用户身份的认证

起因:有些页面只想让特定的人浏览

HTTP/1.1使用的认证方式:

  • BASIC 认证
  • DIGEST 认证(摘要认证)
  • SSL客户端认证
  • FormBase 认证(基于表单认证)
  1. BASIC 认证

步骤1: 当请求的资源需要BASIC认证时,服务器会随状态码401,返回带Authenticate首部字段的响应。该字段内包含认证的方式及Request-URI安全域字符串
步骤2: 收到状态码401的客户端为了通过BASIC,需要将ID和密码发送给服务器,发送的字符串格式为用户名:密码,再经过Base64编码。
步骤3: 当用户代理方式是浏览器时,用户仅需要在弹出框内输入用户ID和密码就行了

BASIC认证的缺点是明文传输用户ID和密码,如果是使用的HTTP等非加密通信,信息容易被盗
2. DIGEST 认证

为了弥补BASIC认证的缺点,就有了DIGEST认证,采用的是质询/响应的方式。

步骤1: 请求需要认证的资源时,服务器会随着401返回带WWW-Authenticate首部字段的响应。该字段包含临时质询码(随机数和nonce)
步骤2: 接收到401状态码的客户端,返回的响应码中包含DIGEST认证必须的首部字段Authorization信息。首部字段Authorization中必须包含username,realm,nonce,uri和response的字段信息。其中realm和nonce就是之前从服务器接收到的响应字段。
步骤3:接收到包含Authorization请求的服务器,会确认认证信息的正确性。认证通过后返回Request-URI资源的响应。

九、基于HTTP的功能追加协议

  1. SPDY

HTTP协议的瓶颈:在比如Facebook等网站上,几乎能实时观察到海量用户发布的内容。Web网站为了保存这些新增内容,需要在很短的时间内就会发生大量的更新。HTTP要想实现客户端就必须频繁的轮询。

HTTP的缺陷:

  • 一个连接只能发一个请求
  • 请求只能从客户端开始
  • 请求/响应的首部未经压缩就发送
  • 发送冗长的首部
  • 可任意选择数据格式压缩,非强制压缩发送

使用SPDY后可以获得如下功能:

  • 多路复用流

通过单一的TCP连接,可以无限制处理多个HTTP请求。

  • 赋予请求优先级
  • 压缩HTTP首部
  • 推送功能

支持服务器主动向客户端推送数据的功能

  • 服务器提示功能

服务器可以主动提示客户端请求所需的资源,在资源已缓存的情况下,可以避免发送不必要的请求
2. WebSocket

是Web浏览器和Web服务器之间全双工通信标准。由于是建立在HTTP协议的基础上,因此连接的发起方仍是客户端,而一旦确定WebSocket通信连接,任意一方都可以直接向对方发送报文。

十、构建Web内容的技术

主要讲了HTML、CSS、DOM等

十一、Web的攻击技术

  1. 跨站脚本攻击(XSS)

在动态生成HTML处发生。如下图网站:

  1. SQL注入
  2. OS命令注入攻击

通过Web应用,执行非法的操作系统命令
4. 设计错误

  • 在登录页面时,如果用户没注册提示用户未注册,用户密码输入错误时,提示密码错误。这样攻击者可以利用信息的不同判断到输入的用户名是否注册。
  • 数据库报错时抛出具体的sql错误信息。这样会让攻击者了解到数据库的表和字段信息等。
  1. 会话劫持

攻击者通过某种手段拿到了用户的会话ID,并使用他伪造成用户。
6. 点击劫持

利用透明的按钮或链接做成陷阱,覆盖在web页面之上,然后诱使用户点击那个链接访问内容的手段。
7. DoS攻击

集中利用访问请求造成资源过载,资源用尽的同时,服务也停止了。多台计算机发起的DoS攻击称为DDoS攻击。

posted @ 2020-08-08 23:32  女友在高考  阅读(154)  评论(0编辑  收藏  举报