目录
一、接口
1.1 接口的定义
在两个不同的系统或同一系统中两个不同功能,他们直接互相连接的部分称为接口
1.2 应用架构
B/S架构:
游览器--服务器结构
具有分布性强、维护方便、开发简单且共享性强,成本低的特点
但因为请求-响应模式动态刷新页面,故响应速度较慢,且安全性也不如CS架构
C/S架构:
客户端--服务器结构
具有响应速度快、操作样式丰富、安全性高的特点
CS需要安装客户端程序,兼容性差,开发维护成本较高
二、网络传输模型
2.1 OSI七层模型和TCP/IP四层模型
2.2 TCP协议和UDP协议
- TCP是面向连接的,UDP是面向无连接的:
通信前,TCP通过三次握手建立连接,随后进行数据传输,而UDP直接向对象传递信息
可以通俗的理解TCP为打电话,确认对方在线后再建立连接,而UDP则是发邮件,直接传递信息,不考虑对象不在线或接收信息有误的情况
- TCP是可靠的,UDP是不可靠的:
TCP使用了接收确认和重传机制,保证了传输内容的准确性
UDP发送数据时,以恒定速度发送数据,不会考虑对方网络问题,是否接收或接收信息有误等问题,适用于实时性高的场景(视频会议),因为部分数据丢失(像素)不会影响视频的内容
- TCP是面向字节流,UDP是面向报文:
- TCP只有一对一的传输方式,而UDP可以一对一,一对多,多对多:
TCP只能一对一的原因是在通信前需要与主机进行三次握手连接,因此不能一对多
- TCP的头部开销大,UDP的头部开销小:
TCP头部有20个字节,UDP的头部只有8个字节
- TCP会产生粘包问题,UDP会产生丢包问题:
TCP传输多个文件A(10字节)、B(20字节)时,第一次读时只读取5个字节,第二次读取25个字节,粘包问题就是无法分辨消息与消息之间的边界在哪,可通过包头加上包体长度来解决
UDP没有应答和重传机制,容易丢包
2.3 TCP的三次握手和四次挥手
三次握手:
客户端:我要修一条去你家的路
服务器:可以,我也要修一条去你家的路
客户端:可以
开始数据传输
四次挥手:
客户端:我要断开去你家的路
服务器:可以
服务器:我也要断开去你家的路
客户端:可以
断开连接
2.4 IP地址
ip地址就是网络上的主机的逻辑地址,编号
ip v4
ip地址是一个32位的二进制数,分隔成4个8位的二进制数
使用 点分十进制来表示 256.256.256.256
A 大型网络 10.0.0.0-10.255.255.255
B 中型网络 172.16.0.0-172.31.255.255
C 小型网络 192.168.0.0-192.168.255.255
公有地址,私有地址(局域网,私有)
三、HTTP协议
3.1 定义
HTTP是一种超文本传输协议,是客户端和服务器交互数据。分为请求和响应两个部分
3.2 HTTP请求
请求:请求行(请求方式和请求路径),请求头,请求报文
请求方式:get、post、put、delete
请求路径:url
请求头:
Accpet:application/json 指定客户端接收的数据格式
X-Requested-with:异步请求(登录、ajax)
User-Agent:客户端的类型
Content-Type:客户端发送的数据类型
Cookie:服务器返回给客户端并且保存的Cookie信息
请求参数:params
3.3 HTTP响应
响应:响应行(响应码和响应信息),响应头,响应报文
响应码:1xx(继续),2xx(成功),3xx(重定向),4xx(客户端错误),5xx(服务器错误)
3.4 get请求和post请求的区别
-
get一般是获取数据,post请求一般是提交数据
-
get对数据长度有限制,post没有限制
-
get的参数直接暴露在URL后面,请求参数与请求地址以“?”隔开,参数与参数之间以“&”隔开
-
get传送参数通过URL,post放在request body中
-
post请求比get请求安全,因为post数字在地址栏上不可见
3.5 HTTP和HTTPS区别
-
HTTPS协议需要CA证书,免费证书较少,需要一定费用
-
HTTP是超文本传输协议,信息是明文传输的,HTTPS则是具有安全性的SSL加密传输协议
-
HTTP和HTTPS使用的连接方式不同,端口也不一致,HTTP是80端口,HTTPS是443端口
-
HTTP的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。
四、鉴权与授权
cookie、session、token都是在游览器上保存用户的登录状态,登录一段时间内可自动获取登录状态,不需要重新登录。
4.1 cookie
客户端访问服务器后,服务器返回cookie信息给客户端,客户端将信息保存在游览器的cookie中,大小约4k,下次访问服务器时,从游览器中获取cookie和请求一起发送给客户端,服务器返回响应数据。
4.2 session
session是一种记录服务器和客户端会话的机制。session是基于cookie实现的,在客户端发送第一次请求时,服务器会根据用户信息创建对应的session,返回请求信息时,服务器将session的唯一标识session_id和请求信息一起返回,客户端将session_id保存在cookie中,下次客户端访问服务器时,从cookie中获取session_id和请求一起发送给服务器,根据session_id查找对应session信息。
4.3 token
客户端发送请求时,服务器验证登录信息是否正确,验证通过后,服务器加密生成token并返回给客户端,客户端接收到token后将其保存在cookie中,下次请求时带上token,服务器对token进行解密,信息正确则返回数据。
4.4 cookie和session的区别
session比cookie安全性高,因为cookie是储存在客户端中的,session存放在服务器中;
存储类型不一致,cookie只支持字符串,session可以存放任意类型数据;
有效时长不一样,cookie可以设置为长时间保存,而session在客户端关闭或者session超时时都会失效;
存储大小不一致,单个cookie文件不能超过4k,而session的大小由服务器决定,一般比cookie大
4.5 session和token的区别
token不一定会存储,session会保存在服务器中;
token可以跨域,session与域名绑定,不能跨域(跨域是指请求中协议、域名、端口其中一项与原请求不同的情况,由于同源策略,会造成跨域);
token是令牌,session是会话;
session会通过存储在服务器验证用户信息,token时通过解密验证用户信息,session是占用空间,token是占用时间;