1、CS架构&BS架构区别
(1)CS架构
- 客户机-服务器,即Client-Server(C/S)结构
- 范例:LOL下载,王者荣耀下载
(2)BS架构
- 浏览器-服务器,即Browser-Server(B/S)结构
- 范例:PC端网页浏览,云生态,例如4399小游戏
(3)BS & CS区别
(4)URL
-
含义:统一资源定位符,获取服务器的一种;
-
标准格式:协议://服务器IP:端口/路径N ? key1=value1 & key2=value2
- 协议:比如http、https,不同协议有不同的解析方式
- 服务器IP:公网IP访问服务器
- 端口:一个端口一个进程,http默认端口是80
- 路径:资源所在路径(后端接口,一般称之为“接口路径”)
-
示例如下
#访问HDFS的WEB端
http://192.168.6.102:9870/logs
①协议: http
②服务器ip:192.168.6.102
③路径: logs
2、超文本传输协议Http
- 协议:一种发送/接收消息的约定方式,如果发送方按照这种请求格式发送,接收方按照这样的格式解析
(1)JSON协议
{
name:zhangsan
age:120
}
(2)XML协议
<user>
<name>zhangsan</name>
<age>120</age>
</user>
(3)Http协议
- 超文本传送协议:建立在TCP协议之上的一种应用。
Ⅰ、Http连接
-
含义:客户端每次发送的请求都需要服务器回送相应,从建立连接到关闭连接的过程称之为“一次连接”
-
范例:以百度搜索王者荣耀为例
-
请求 - requesturl
- 响应 - Preview
Ⅱ、响应码
- 含义:反映了web服务器处理HTTP请求状态,每一个响应码都代表了一种服务端反馈的响应状态,标识了本次请求是否成功
响应码 | 含义 | 备注 |
---|---|---|
1xx | 信息 | 比较少用 |
2xx | 请求成功 | 200 ok代表请求正常 |
3xx | 重定向,自动跳转到新URL | 域名迁移时使用 |
4xx | 客户端错误 | 主要是语法错误 & 无法完成请求 |
5xx | 服务器错误 | 服务器在请求过程中发生错误 |
- 范例:以百度搜索王者荣耀为例
Ⅲ、https
- 组成:HTTP+SSL/TLS
- 优点:防止在传输过程中不被窃取、改变,保证数据完整性。
3、Http协议消息拆分详述
- 范例:以王者荣耀官网为例
3.1、http请求消息结构
(1)请求行
- 请求方法
:method:GET
- URL地址
:path: /speed/performance?dnsLookup=0&tcp=37&ssl=23&ttfb=17&contentDownload=1&domParse=539&resourceDownload=769&firstScreenTiming=0&id=3846&uin=&version=1.35.20&aid=92398881-f9a3-4c99-8871-0be5c5a9ad7c&env=production&platform=3&netType=4&vp=1920%20*%20881&sr=1920%20*%201080&sessionId=session-1642643989877&from=https%3A%2F%2Fpvp.qq.com%2F&referer=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DInZhKFOtmeSvUSkNXDVdSPoNh0DMOSrw8cSLSqk1odG%26wd%3D%26eqid%3Db3b8c60f0004a1b90000000361e8bcff
- 协议名
:scheme: https
(2)请求头
- 报头文:包含若干属性值(属性名:属性值),服务端据此获取客户端的基本信息。
(3)请求体
- 请求体:即请求参数
3.2、http响应消息结构
(1)响应行
- 含义:报文协议、版本、状态码
HTTP/1.1 200 OK
(2)响应头
- 含义:即报文头,包含若干个属性,格式为“属性名:属性值”
(3)响应正文
- 含义:响应报文体,即我们需要的内容,有多种形式比如html、json、图片、视频文件。
3.3、http请求方法
- 请求方法:客户端通过HTTP的方法告诉服务器要执行什么动作
请求方式 | 概述 |
---|---|
GET | 用来查询数据,不对服务器的数据进行任何的修改、添加、删除等操作 |
POST | 对服务器的数据的操作,侧重于数据新增操作 |
PUT | 向服务端发送数据、改变信息的操作,侧重于数据修改操作 |
DELETE | 删除资源,一般用于数据库数据的删除操作 |
HEAD | 只是请求页面的头信息,用来获取报头信息,返回的响应中没有内容,GET请求的返回中有实体信息。 |
3.4、http响应状态码
- 响应状态码:服务器通过状态码来告诉客户端动作是否执行成功
状态码 | 概述 |
---|---|
200 | 请求成功,已经正常处理完毕 |
301 | 请求永久重定向,转移到其它URL |
302 | 请求临时重定向 |
304 | 请求被重定向到客户端本地缓存 |
400 | 客户端请求存在语法错误 |
401 | 客户端请求没有经过授权 |
403 | 客户端的请求被服务器拒绝,一般为客户端没有访问权限 |
404 | 客户端请求的URL在服务端不存在,一般是找不到路径对应的接口或文件 |
500 | 服务端内部报错,完成不了这次请求 |
503 | 服务器宕机 |
1.3.5、常见请求头概述
- GET(请求的方式) /newcoder/hello.html(请求的目标资源) HTTP/1.1(请求采用的协议和版本号)
key | value |
---|---|
Accept | 客户端能接收的资源类型 |
Accept-Language | 客户端接收的语言类型 |
Connection | 维护客户端和服务端的连接关系 |
Host | 连接的目标主机和端口号 |
User-Agent | 客户端版本号的名字 |
Accept-Encoding | 客户端能接收压缩数据的类型 |
If-Modified-Since | 缓存时间 |
Cookie | 客户端暂存服务端的信息 |
Date | 客户端请求服务端的时间 |
3.6、常见响应头概述
- HTTP/1.1(响应采用的协议和版本号) 200(状态码) OK(描述信息)
key | value |
---|---|
Location | 服务端需要客户端访问的页面路径 |
Server | 服务端的Web服务端名 |
Content-Encoding | 服务端能够发送压缩编码类型 |
Content-Length | 服务端发送的压缩数据的长度 |
Content-Language | 服务端发送的语言类型 |
Content-Type | 服务端发送的类型及采用的编码方式 |
Last-Modified | 服务端对该资源最后修改的时间 |
Date | 服务端响应客户端的时间 |
Expires | 服务端是否禁止客户端缓存页面数据 |
Connection | 维护客户端和服务端的连接关系 |
3.7、context-type内容类型概述
- Context-type:用来指定不同格式的请求响应信息,俗称MIME类型。
- HTML文档标记:text/html
- 普通ASCII文档标记:text/html
- JPEG图片标记:image/jpeg
- GIF图片标记:image/gif
- js文档标记:application/javascript
- xml文件标记:application/xml
- pdf格式:application/pdf
- 二进制流数据:application/octet-stream
- 表单数据:multipart/from-data