图解HTTP(读书笔记01)

图解HTTP(记录书中笔记)

一、了解web及网络基础

web使用一种名为HTTP(HyperText Transfer Protocol),超文本传输协议作为规范。完成从客户端到服务器端等一系列运作流程。而协议是规则的约定。

1.2 HTTP的诞生

Tim Berners Lee博士提出了一种能让远隔两地的研究者们共享知识的设想。

最初设想的基本理念是:借助多文档之间相互关联形成的超文本,连成可相互参阅的WWW

HTTP于1990年问世,那时的HTTP并没有作为正式的标准被建立。

HTTP正式作为标准被公布是在1996年的5月,版本是HTTP/1.0

1.3 网络基础TCP/IP

计算机与网络设备要相互通信,双方必须基于相同的方法。比如:如何探测到通信目标,由哪一边先发起通信,使用哪种语言进行通信,怎样结束通信等规则都需要事先确定。不同的硬件,操作系统之间的通信,所有的这一切都需要一种规则。而我们把这种规则称为协议

像这样把与互联网相关的协议集合起来总称为TCP/IP

1.3.2 TCP/IP分层管理

分层:应用层、传输层、网络层和数据链路层

分层好处:如果互联网只由一个协议统筹,某个地方需要改变设计时,就必须把所有部分整体替换掉。而分层之后只需要将变动的层替换掉就可以。把各层之间的接口部分规划好之后,每个层次内部的设计就能自由改动了。

  1. 应用层:决定了向用户提供应用服务时的通信的活动,HTTP协议处于该层。
  2. 传输层:提供处于网络连接中的两台计算机之间的数据传输。
  3. 网络层:处理在网络上流动的数据包。数据包时网络传输的最小数据单位。
  4. 链路层:用来处理连接网络的硬件部分。
1.3.3 TCP/IP通信传输流

发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。

这种把数据信息包装起来的做法称为封装

在这里插入图片描述

1.4 与HTTP关系密切的协议:IP、TCP和DNS

1.4.1 负责传输的IP协议(网络层)

IP(Internet Protocol)网络协议。

IP协议作用:把各种数据包传送给对方(网络层)。需要满足两个重要的条件:IP地址和MAC地址

IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址。一般情况下,IP地址可变换,但MAC地址基本上不会更改。

ARP是一种以解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址。

在这里插入图片描述

1.4.2 确保可靠的TCP协议(传输层)

TCP,提供①可靠的②字节流服务。

②所谓字节流服务是指,为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。

①可靠是指能够确认数据最终是否送达到对方。

如何确定数据是否送达呢?答案:三次握手策略。

若在握手过程中,某个阶段莫名终端,TCP协议会再次以相同的顺序发送相同的数据包。

在这里插入图片描述

1.4.3 负责域名解析的DNS服务(应用层)

它提供域名到IP地址之间的解析服务。

在这里插入图片描述

1.7 URI URL

URI就是某个协议方案表示的资源的定位标识符。URI表示用字符串标识的某一互联网资源,而URL表示资源的地点。可见URL是URI的子集。

二、简单的HTTP协议

2.3 HTTP是不保存状态的协议

也就是说,在HTTP这个级别,协议对于发送过的请求或响应都是不做持久化处理的。

优点:这是为了更快速的处理大量事务,确保协议的可伸缩性。

缺点:比如用户登入到一家网站及时跳转到其他页面也需要保持登入状态。网站为了掌握是谁送出的请求,需要保存用户的状态。

解决:引入了Cookie技术。

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

  1. GET:我想访问你的资源。
  2. POST:我想要把这条信息告诉你。
  3. PUT:传输文件(不常用,任何人都可以上传存在安全性问题)
  4. HEAD:获取报文首部,不反悔报文主体。
  5. DELETE:删除文件
  6. OPTIONS:询问支持方法
  7. TRACE:追踪路径,确认连接过程中发生的一系列操作。
  8. CONNECT:要求用隧道协议连接代理。

2.7持久连接节省通信量

背景:HTTP初始版本,每进行一次HTTP通信就要断开一次TCP连接。

例如:在发送请求访问HTML页面资源的同时,也会请求该HTML页面里包含的其他资源。因此,每次请求都会造成无谓的TCP连接建立和断开,增加通信量的开销。

解决:

  1. 持久连接(旨在建立一次TCP连接后进行多次请求和响应的交互)
  2. 管线化(不用等待响应结束亦可以发送下一个请求)

在这里插入图片描述

2.8 Cookie状态管理

在这里插入图片描述

三、HTTP报文内的信息

HTTP报文本身是由多行数据构成的字符串文本。

大致分为报文首部和报文主体两块。中间由空行(CR+LF)来划分。并不一定要有报文主题。

在这里插入图片描述

3.3编码提升传输速率

3.3.1 报文主体和实体主体的差异
  1. 报文:是HTTP通信中的基本单位,由8位组字节流组成,通过HTTP通信传输
  2. 实体:作为请求或响应的有效载荷数据(补充项)被传输,其内容由实体首部和实体主体组成。

HTTP报文的主体用于传输请求或响应的实体主体。

通常,报文主体等于实体主体。只有当传输中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异。

3.3.2 压缩传输的内容编码

HTTP协议中有一种被称为内容编码的功能也能进行类似的操作。内容编码指明在实体内容上的编码格式,并保持实体信息原样压缩。

在这里插入图片描述

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

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

这种把实体主体分块的功能称为分块传输编码

使用分块传输编码的实体主体会由接收的客户端负责解码,回复到编码前的实体主体。

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

发送的一份报文主体内可能含有多类型实体。文本,图片、视频等多个不同类型的数据。

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

  1. multipart/form-data:在WEB表单文件上传时使用。
  2. multipart/byteranges:状态码位206,响应报文包含了多个范围的内容时使用。

在HTTP报文中使用多部分对象集合,需要在首部字段里加Content-type。

3.5 获取部分内容的范围请求

背景:以前用户不能使用现在这个告诉带宽访问互联网。如果下载过程中遇到网络中断的情况,那就必须重新开始。

解决:需要一种可恢复的机制,所谓恢复是指能从之前下载中断处恢复下载。
在这里插入图片描述

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

背景:同一个web网站可能存在多份相同内容的页面,比如英文和中文版的web页面,给他们内容上虽然相同,但使用的语言却不同。当浏览器的默认语言为英文或中文,访问相同的URI的web页面则会显示对应的英语版或中文版的web页面,这样的机制称为内容协商。

内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为合适的资源。内容协商会以语言、字符集、编码方式等为基准判断响应的资源。

包含在请求报文中的某些首部字段就是判断的基准:

  1. Accept
  2. Accept-Charset
  3. Accept-Encoding
  4. Accept-Language
  5. Content-Language

四、返回结果的HTTP状态码

  1. 200 OK
  2. 204 请求处理成功,但没有资源可返回
  3. 206 是对资源的范围请求
  4. 301 资源URI已更新(永久重定向)
  5. 302 资源URI已更新(临时重定向)
  6. 303和302类似,但303明确表示客户端应当采用GET方法获取资源
  7. 304 资源已找到但未符合条件请求
  8. 400 报文存在语法错误
  9. 401 发送请求需要由通过HTTP认证的认证信息。
  10. 403 请求资源的访问被服务器拒绝了
  11. 404 服务器上没有请求的资源
  12. 500 内部资源故障
  13. 503 服务器暂时处于超负载或正在停机维护

五、与HTTP协作的Web服务器

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

可以用一台服务器为多个客户服务,也可以以每位客户持有的域名运行各自不同的网站,这是因为利用了虚拟主机的功能。即使物理层面只有一台服务器,但只要使用了虚拟主机的功能,可以假象已具有多台服务器。

问题:域名通过DNS服务映射到IP地址之后访问目标网站,如果一台服务器托管了两个域名,当收到请求的时候就要分辨究竟是要访问哪两个域名。

解决:在相同的IP地址下,在发送HTTP请求时,必须在Host首部内完整指定主机名或域名的URI

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

5.2.1 代理

接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端。

代理不改变请求URL,会直接发送给前方持有资源的目标服务器

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

5.2.2 网关

网关:转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就能像自己拥有资源的源服务器一样对请求进行处理。

网关与代理十分相似,网关能使通信线路上的服务器提供非HTTP协议服务

优点:提高通信安全性,因为可以在客户端和网关之间的通信线路上加密以确保连接的安全。另外网关可以连接数据库,使用SQL语句查询数据。

5.2.3隧道

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

可以使用SSL等加密手段进行通信。

目的就是确保客户端能与服务器进行安全的通信。

5.3 保存资源的缓存

缓存是指代理服务器或客户端本地磁盘内保存的资源副本。利用缓存可减少对源服务器的访问。

优点:减少对源服务器的访问,因此也就节省了通信流量和通信时间。

5.3.1 缓存的有效期限

即使存在缓存,也会因为客户端的要求,缓存的有效期限等因素,向源服务器确认资源的有效性。若判断缓存失效,缓存服务器将会再次从源服务器获取”新“资源。

可以使用SSL等加密手段进行通信。

目的就是确保客户端能与服务器进行安全的通信。

5.3 保存资源的缓存

缓存是指代理服务器或客户端本地磁盘内保存的资源副本。利用缓存可减少对源服务器的访问。

优点:减少对源服务器的访问,因此也就节省了通信流量和通信时间。

5.3.1 缓存的有效期限

即使存在缓存,也会因为客户端的要求,缓存的有效期限等因素,向源服务器确认资源的有效性。若判断缓存失效,缓存服务器将会再次从源服务器获取”新“资源。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值