http基础
①HTTP/HTTPS协议:
http:超文本传输协议 无连接、无状态、灵活
https:http+ssl
eg-----https://www.baidu.com/s?wd=https
协议:http 规定数据传输方式
域名(ip):网络环境中定位主机
端口(port):网络主机中标识一个进程 http默认端口80,https默认端口443、端口号的理论值范围是从0到65535)
资源路径:标识网络资源(文件、图片、音频。。。。。)
查询参数:传递给资源路径对应的数据 (key,value) 多个参数之间用&连接
HTTP请求:
HTTP请求的报文分为四部分:请求行、请求头、空一行、请求体,其中前三个是所有HTTP请求都有的部分,请求体不是所有的HTTP请求都有(例如GET请求没有请求体)
请求行:请求行由请求方法、统一资源定位符(URL)、HTTP协议及版本。
请求头:包含若干个属性,格式为“属性名:属性值”,服务端根据此获取客户端的信息
请求体: 一般在POST请求中才有请求体
HTTP响应:
HTTP响应的报文分为四部分:状态行、响应头、空一行、响应体,其中前三个是所有HTTP响应都有的部分,响应体不是所有的HTTP响应都有
状态行:状态行由协议及版本、状态码、状态码解释
响应头:响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据
空一行:发送回车符和换行符,代表后面不再有响应头
响应体:响应的消息体
接口响应码:
1xx:指示信息--表示请求已接受,继续处理;
2xx:成功--表示请求已被成功接收、理解、接受;
3xx:重定向--要完成请求必须进行更进一步的操作;
4xx:客户端错误--请求有语法错误或请求无法实现;
5xx:服务器端错误--服务器未能实现合法的请求
HTTPS 协议是由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,保护交换数据的隐私与完整
将公钥放入数字证书中,保证公钥不会篡改
客户端发起https请求------ssl利用证书(公钥)进行解析和加密---传送加密信息至服务器---服务器利用私钥进行解密并处理-----处理的数据进行加密后响应客户端------客户端解密后渲染和展现内容
加密:对称加密(相同密钥)/非对称加密(公钥和私钥)
②常见的Get、Post请求:
都是http协议,一般get是从服务器获取数据,post是向服务器传送数据
get一般没有请求体,参数放在url后面,一次传输效率高,但数据安全性低
Post将数据放在请求体中,安全性要高,而先传输请求头,在传输请求体,两次传输,所以请求头会比get要小,可以更好的保证http包的完整性
③Cookie、Session、token
Cookie:存放于客户端,发送请求后,服务器返回cookie,下次请求携带cookie访问,容易被篡改,内容小,不安全(浏览器禁止cookie--通过url重写,即url后面加上sid=xxx参数)
Session:存放于服务器,发送请求后,服务器生成key-value值,以cookie的形式返回key(sessionid),下次请求携带key访问,较安全,但数据量一多影响性能,且服务器做分部署部署时,访问不同的服务器就无法找到对应的value(通过session集群来集中存放seesion对应的值)
Token:与session原理差不多,将用户uid、过期时间等敏感数据存放在客户端、交互式对比token的签名验证合法性、可跨域,解决session占内存的弊端,以计算换时间
④UDP、TCP和http关系和区别
TCP(传输控制协议)是基于连接的协议,类似于互通电话,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次握手才能建立起来,通过四次挥手断开链接
三次握手:主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的 初始化序列号,为后面的可靠性传输做准备
第一次握手:客户端向服务端发送一个 SYN 报文(SYN = 1)
第二次握手:服务器收到客户端的 SYN 报文,会发送 SYN 报文作为应答(SYN = 1)
第三次握手:客户端收到服务器端响应的 SYN 报文之后,会发送一个 ACK 报文,此时客户端处于 Establised 状态。服务器收到 ACK 报文之后,也处于 Establised 状态,至此,双方建立起了TCP连接
四次挥手:由TCP 的半关闭特性造成的,TCP 提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力。
第一次挥手:客户端发送一个 FIN 报文(请求连接终止:FIN = 1),并停止再发送数据,主动关闭 TCP 连接
第二次挥手:服务端收到 FIN 之后,会发送 ACK 报文,此时的 TCP 处于半关闭状态,客户端到服务端的连接释放
第三次挥手:如服务端也想断开连接(没有要向客户端发出的数据),发送FIN报文
第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,这个时候由服务端到客户端的 TCP 连接并未释放掉,需要经过时间等待计时器设置的时间 2MSL(一个报文的来回时间)后才会进入 CLOSED状态
UDP(用户数据报协议)是与TCP相对应的协议,类似于发短信。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!