Web系统构成与工作原理
1.1 Web系统的发展历程
C/S结构:客户机和服务器结构
如QQ、迅雷、魔兽争霸等需要下载安装客户端软件的系统
B/S架构:不需要安装客户端软件,它运行在客户端的浏览器之上,系统升级或维护时只需更新服务器端软件即可
混合型架构:QQ收藏
- 1989年,欧洲粒子物理实验室(CERN)的Tim Berners-Lee构思了Web(万维网)。他提出了HTTP协议和HTML语言,编写了世界上第一个Web服务器HTTPD和第一个浏览器,并全部放在互联网上免费传播
- 1994年,欧洲粒子物理实验室(CERN)和麻省理工学院(MIT)签订协议成立World Wide Web Consortium (即W3C,网址是www.w3.org),由Tim Berners-Lee任主席。
1.2 Web系统构成与工作原理
Web系统的构成:
- Web服务器
- Web浏览器
- 超文本传输协议HTTP (HyperText Transfer Protocol)
- 超文本标记语言HTML(HyperText Markup Language)
使用统一资源定位符 URL (Uniform Resource Locator)来标志万维网上的各种文档。使每一个文档在整个因特网的范围内具有唯一的标识符 URL。
<协议>://<主机>:<端口>/<路径>
建立连接的过程:
(1) 浏览器分析超链指向页面的 URL。
(2) 浏览器向 DNS 请求解析IP 地址。
(3) 域名系统 DNS 解析目的服务器的 IP 地址。
(4) 浏览器与服务器建立 TCP 连接
(5) 浏览器发出取文件命令: GET index.html。
(6) 服务器给出响应,把文件 index.html 发给浏览器。
(7) TCP 连接释放。
(8) 浏览器显示“目的”文件 index.html 中的所有文本。
Web浏览器核心功能:
渲染引擎(layout engineer或者Rendering Engine),对语法进行解析,并渲染网页
JS引擎,对JavaScript进行解释、编译和执行
1.3HTTP协议
HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送。
HTTP 有两类报文:
请求报文——从客户向服务器发送请求报文。
响应报文——从服务器到客户的回答。
HTTP 是面向正文的(text-oriented),在报文中的每一个字段都是一些 ASCII 码串,因而每个字段的长度都是不确定的。Web程序引入了Session和Cookie机制来维护状态,确定同一个客户端的这次请求和上次请求来自同一个客户端。无状态不代表HTTP不能保持TCP连接
打开一个网页一般需要浏览器发送很多次Request
请求报文:
1、请求方法:指出客户请求服务器执行的一般操作。
HTTP/1.1中定义了八种请求方法,其中GET、POST、HEAD是常用请求方法。
- GET :请求获取Request-URI所标识的资源,“获取/查操作”
- POST: 在Request-URI所标识的资源后附加新的数据 ,“改操作”
- HEAD: 请求获取由Request-URI所标识的资源的响应消息报头
- PUT:请求服务器存储一个资源,并用Request-URI作为其标识, “增操作”
- DELETE:请求服务器删除Request-URI所标识的资源 “删操作”
- TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断
- CONNECT: 保留将来使用
- OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求
2、URI:统一资源标识,简单地讲被请求资源所处的地址,如:/
3、HTTP版本:HTTP/1.1,高版本的服务器接受低版本客户的请求,并向客户发送同样版本的应答;高版本的客户接受低版本服务器的应答。
响应报文:
HTTP响应消息结构:状态行(status line)、报头和实体主体三部分组成。
状态行由协议版本、状态码、原因短语3个元素组成
状态代码有三位数字组成,第一个数字定义了响应的类别
- 1xx:指示信息–表示请求已接收,继续处理
- 2xx:成功–表示请求已被成功接收、理解、接受
- 3xx:重定向–要完成请求必须进行更进一步的操作
- 4xx:客户端错误–请求有语法错误或请求无法实现
- 5xx:服务器端错误–服务器未能实现合法的请求
常见状态代码、状态描述、说明:
- 200 OK //客户端请求成功
- 400 Bad Request //客户端请求有语法错误,不能被服务器所理解
- 401Unauthorized //请求未经授权
- 403 Forbidden //服务器收到请求,但是拒绝提供服务
- 404 Not Found/请求资源不存在, eg:输入了错误的URL
- 500 Internal Server Error //服务器发生不可预期的错误
- 503 Server Unavailable //服务器当前不能处理客户端的请求
HTTP消息报头:
HTTP消息报头包括普通报头、请求报头、响应报头、实体报头。每一个报头域都是由名字+“: ”+空格+值 组成,消息报头域的名字是大小写无关的
HTTP/2的新特性:
二进制协议:使用二进制替代明文,更容易解析,但可读性却不如HTTP/1.x。
多路传输:一旦建立了 TCP 连接,相同连接内的所有流都可以同过这个 TCP 连接异步发送,而不用另外打开连接。
HPACK 请求头部压缩:当我们在同一客户端上不断地访问服务器时,许多冗余数据在头部中被反复发送,为了解决这个问题,HTTP/2引入了头信息压缩。
服务器推送:对于服务器来说,当它知道客户端需要一定的资源后,它可以把数据推送到客户端,即使客户端没有请求它。
请求优先级:客户端可以在 HEADERS帧中包含优先级信息来为流指定优先级。
安全性:HTTP/2定义了TLS的轮廓,包括版本、密码套件和用到的扩展。