1. Web服务中的常用术语
- 客户端:用户主机上运行并连接到互联网的应用程序,一般而言是指浏览器;
- 服务:服务主要接受和处理来自互联网的请求。服务一般部署在某台服务器上,监听某个端口,等待用户请求;
- 域名:用于标识一个或多个IP地址;
- IP:互联网协议地址;
- DNS:域名系统服务,主要用于网络域名与IP地址的相互转换;
- ISP :互联网服务提供商;
- TCP/IP:传输控制协议、网际协议,是当前互联网使用的主要通信协议;
1.1 HTTP 协议
HTTP 协议,即超文本传输协议,是一个客户端终端(用户)和服务器端(网站)请求和应答的标准。HTTP 协议定义 Web 客户端如何从 Web 服务器请求 Web 页面,以及服务器如何把 Web 页面传送给客户端。
HTTP 协议有如下特点:
简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,因而通信速度很快;
灵活:HTTP 允许传输任意类型的数据对象;
无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间;
无状态:HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
1.1.1 HTTP 常见请求
在 HTTP/1.1 协议中共定义了八种方法(也叫 “动作”)来以不同方式操作指定的资源,目前我们比较常见和常用的有以下四个:
GET 请求:向指定的资源发出 “显示 “请求。使用 GET 方法应该只用在读取数据,而不应当被用于产生 “副作用” 的操作中。一般在浏览器中直接敲击 URL 并按回车键是执行的 GET 请求;
POST 请求:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和 / 或已有资源的修改;
PUT 请求:从客户端向服务器传送的数据取代指定的文档的内容;
DELETE 请求:请求服务器删除指定的页面。
这四种请求和数据的增删改查(CRUD) 可以看成是相对应的,一般在设计 URL 接口时,也会默认使用这样特性,让 GET 请求对应查询数据、POST 请求对应数据的新增等等,这样的接口设计出来才会具备良好的 Restful 风格。
1.1.2 HTTP 状态码
HTTP 请求通常会返回一个状态码,常见的 HTTP 状态码有:
2xx:正确类。表示用户请求被正确接收、理解和处理;
3xx:重定向类。表示没有请求成功,必须采取进一步的动作;
- 301 - 资源(网页等)被永久转移到其它 URL;
- 302 - 资源临时移动,资源只是临时被移动,客户端应继续使用原有 URI ;
4xx:客户端错误。表示客户端提交的请求包含语法错误或不能正确执行;
- 400 - 往往是 Bad Request 错误。是指请求的方法不对;
- 401 - 用户没有访问权限,需要进行身份认证;
- 403 - 禁止访问;
- 404 - 资源不存在,Not Found 错误;
5xx:服务端错误。一般是说明服务器出现了问题;
- 503 - 服务端错误,一般是服务器内部处理异常。
2. 网站运行原理
在了解上面这些基本术语后,我们介绍下当在浏览器中敲下 www.baidu.com这个URL,到百度返回给我们搜索首页,这个过程中究竟发生了哪些事情?
- 解析输入 URL 中包含的信息,比如 HTTP 协议和域名 (baidu.com);
- 客户端先检查本地是否有对应的 IP 地址,若找到则返回响应的 IP 地址。若没找到则请求在 ISP 的 DNS服务器上。如果还没找到,则请求会被发向根域名服务器,直到找到对应的 IP 地址;
- 浏览器在 DNS 服务器中找到对应域名的 IP 地址,然后结合 URL 中的端口(没有指明端口则使用默认端口,HTTP 协议的默认端口是80,HTTPS 的默认端口是 443) 组成新的请求 URL,并与百度的 Web 服务建立 TCP 连接;
- 浏览器根据用户操作向百度的 Web 服务器发送 HTTP 请求;
- Web 服务器接收到该请求后会根据请求的路径查找对应的 Web 资源并返回;
- 最后客户端浏览器将这些返回的 Web 信息 (包括图片、HTML 静态页面,JS
等)组织成用户可以查看的网页形式,最后就得到了我们熟悉的那个 百度一下,你就知道 的搜索主页了。
|