目录
第1章 了解Web及网络基础
1.1 TCP/IP简介
TCP/IP是互联网相关的各类协议族的总称
TCP/IP分为4个层
- 应用层:决定了向用户提供应用服务时通信的活动。TCP/IP协议族内预存了各类通用的应用服务。例如FTP(文件传输协议)、DNS(域名系统)。HTTP协议也属于该层
- 传输层:对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。有两个协议:TCP(传输控制协议)、UDP(用户数据报协议)
- 网络层:网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的传输线路到达对方计算机,并把数据包传送给对方
- 链路层:处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、网络适配器等等可见部分。硬件上的范畴均在链路层的作用范围之内
TCP/IP通信传输流
发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去。这种把数据信息包装起来的做法称为封装。
1.2 URL和URI
URI(Uniform Resource Identifier):统一资源标识符
URL(Uniform Resource Locator):统一资源定位符
绝对URI格式
第2章 简单的HTTP协议
2.1 HTTP请求和响应
HTTP请求必定由客户端发出,而服务端回复响应
请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成的
响应报文由协议版本、状态码、状态吗的解释原因短语、可选的响应首部字段以及实体主体构成
2.2 HTTP无状态性
HTTP是一种无状态协议。对发过的请求或响应都不做持久化处理
可以使用Cookie保持状态
2.3 HTTP方法
2.4 持久连接
HTTP协议初始版本中,每进行一次HTTP通信就要断开一次TCP连接
HTTP1.1默认连接都是持久连接
特点:只要任意一段没有明确提出断开连接,则保持TCP连接状态
好处:减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务端的负载
2.5 管线化
无须等待响应即可直接发送下一个请求,可以做到同时并行发送多个请求,而不需要一个接一个等待响应
第3章 HTTP报文内的HTTP信息
3.1 HTTP报文
用于HTTP协议交互的信息叫做HTTP报文。
HTTP报文大致可分为报文首部和报文主体两块。两者由最初出现的空行(CR+LF)来划分。通常,不一定要有报文主体
3.2 请求报文和相应报文的结构
请求报文和响应报文的首部内容由以下数据组成
- 请求行:包含用于请求的方法,请求URI和HTTP版本
- 状态行:包含表明相应结果的状态码,原因短语和HTTP版本
- 首部字段:包含表示请求和响应的各种条件和属性的各类首部。一般有4种:通用首部、请求首部、响应首部、实体首部
- 其他:包含HTTP的RFC里未定义的首部(Cookie等)
3.3 报文和实体
报文:HTTP通信中的基本单位,由8位组字节流组成,通过HTTP通信传输
实体:作为请求或响应的有效载荷数据被传输,其内容由实体首部和实体主题组成
通常,报文主题等于实体主题。只有当传输中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异
第4章 返回结果的HTTP状态码
4.1 状态码的类别
4.2 14个有代表性的状态码
- 200 OK 表示从客户端发来的请求服务端被正常处理了
- 204 NO Content 表示服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。另外也不允许返回任何实体的主体。比如,返回204响应,浏览器显示的页面不发生更新。一般在只需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用
- 206 Partial Content 表示客户端进行了范围请求,而服务器成功执行了这部分GET请求。响应报文中包含由Content-Range指定范围的实体内容
- 301 Moved Permanently 永久重定向。表示请求的资源已被分配了新的URI,以后应使用资源现状所指的URI,也就是Location首部字段提示的URI
- 302 Found 临时重定向。表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问
- 303 See Other 表示请求的资源存在着另一个URI,应使用GET方法定向获取。303状态码明确表示应当用GET请求获取资源
- 304 Not Modified 表示请求客户端发送附带条件的请求时,服务器允许请求访问资源,但未满足条件的情况。返回时,不包含任何响应的主体部分。304虽然被划在3XX,但与重定向没有关系
- 307 Temporary Redirect 临时重定向。与302一样,但不会从POST变成GET
- 400 Bad Request 表示报文中存在语法错误。需修改请求的内容后在再次发送请求
- 401 Unauthorized 表示发送的请求需要有通过HTTP认证的认证信息。返回含有401的响应必须包含一个适用于被请求资源的WWW-Authenticate首部用以质询用户信息。当浏览器初次接收到401响应,会弹出认证用的对话窗口
- 403 Forbidden 表示请求资源的访问被服务器拒绝了。未获得文件系统的访问授权,访问权限出现问题等可能发生403错误
- 404 Not Found 表示服务器无法找到请求的资源
- 500 Internal Server Error 表示服务器端在执行请求时发生错误
- 503 Service Unavailable 表明服务器暂时处于超负荷或正在停机维护。
第6章 HTTP首部
6.1 4种HTTP首部字段类型
- 通用首部字段:请求报文和响应报文两方都会使用的首部
- 请求首部字段:从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息
- 响应首部字段:从服务端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息
- 实体首部字段:针对请求报文和响应报文的实体部分使用的首部。补充了资源内容跟新时间等与实体有关的信息
6.2 首部字段一览
6.3 其他首部字段
第7章 确保Web安全的HTTPS
7.1 HTTP的缺点
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
7.2 HTTPS简介
HTTPS:使用SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Security,安全层传输协议)的HTTP
HTTP + 加密 + 认证 + 完整性保护 = HTTPS
7.3 HTTPS通信步骤
7.4 HTTPS缺点
- SSL的慢分两种。一种是通信慢,另一种是由于大量消耗CPU及内存等资源,导致处理速度变慢
- 使用HTTPS通信,必须购买证书,需要一部分花费