B/S架构
优点:
1. 客户端使用统一的浏览器。浏览器的交互特性使得用户使用它非常便捷
2. 服务器端基于统一的HTTP。使得服务器开发者可以采用相对规范的开发模式
发生请求
HTTP采用无状态的短连接的通信方式。即一次请求就算完成了一次数据交互,通常也对应一个业务逻辑,然后这次通信连接就断开了。
在浏览器输入一个网址后:
1. 浏览器分析链接指向的URL(统一资源定位符)
2. 浏览器请求DNS(域名系统)把这个域名解析成对应的IP地址
3. 根据IP地址在互联网上找到对应的服务器
4. 浏览器与服务器建立TCP连接
5. 向服务器发起一个get请求
6. 由服务器决定返回默认的数据资源给访问的用户
7. 释放TCP连接
在服务器端实际上还有很复杂的业务逻辑:多台服务器,需要一个负载均衡设备来平均分配所有用户的请求;请求的数据是存储在分布式缓存里还是一个静态文件中,或者是数据库里;数据返回浏览器时,浏览器解析数据发现一些静态资源时又发起另外的HTTP请求。
固定不变的原则:
1. 互联网上所有资源都要用一个URL来表示。
2. 必须基于HTTP与服务器端交互
3. 数据展示必须在浏览器中进行。
如何发起一个请求
发起一个HTTP请求的过程就是建立一个Socket通信的过程
HTTP解析
常见的HTTP请求头
请求头 | 说明 |
---|---|
Accept-Charset | 用于指定客户端接收的字符集 |
Accept-Encoding | 用于指定的可接受的内容编码 |
Accept-Language | 用于指定一种自然语言 |
Host | 用于指定被请求资源的Internet主机和端口号 |
User-Agent | 客户端将它的操作系统、浏览器和其他属性告诉服务器 |
Connection | 当前连接是否保存 |
常见的HTTP相应头
响应头 | 说明 |
---|---|
Server | 使用的服务器名称 |
Content-Type | 用来指明发送给接收者的实体正文的媒体类型 |
Content-Encoding | 与请求报头Accept-Encoding对应,告诉浏览器服务端采用的是什么压缩编码 |
Content-Language | 描述了资源所用的自然语言,与请求对应 |
Content-Length | 指明实体正文的长度,用以字节方式存储的十进制数字来表示 |
Keep-Alive | 保持连接的时间 |
常见的HTTP状态码
状态码 | 说明 |
---|---|
200 | 客户端请求成功 |
302 | 临时跳转,跳转的地址通过Location指定 |
400 | 服务器收到请求有语法错误,不能被服务器识别 |
403 | 服务器收到请求,但是拒绝提供服务 |
500 | 服务器发生不可预期的错误 |