一、OSI模型
七层架构
7、应用层:HTTP
6、表示层
5、会话层
4、传输层:TCP
3、网络层
2、数据链路层
1、物理层
二、http协议
2.1、HTTP概念
1、超文本传输协议(Hyper Text Transfer Protocol)
2、用于从万维网服务器传输超文本到本地浏览器的传送协议
3、HTTP协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输HTML页面的内容。默认端口是80
4、http是基于请求与响应模式的、无状态的、应用层的协议
2.2、HTTP请求类
1、get:获取资源
2、post:提交资源
3、put:修改资源
4、delete:删除资源
5、head:查看响应头
6、options:查看支持的请求方式
7、trace:返回服务器收到的请求数据,用于开发自测
8、connect:服务器作为跳板,让服务器代理用户去其他网站访问资源,然后再把拿到的资源返回给用户(重定向)
2.3、互联网架构类型
1、BS架构(浏览器)
2、CS架构(应用程序/app)
3、流程:客户端 <--------HTTP请求--------> 服务器(前端服务器nginx) <--------> 后端服务器(网关,课程服务,鉴权服务))
2.4、HTTP组成
2.4.1、请求报文
2.4.1.1、请求行
1)请求方法
2)请求地址
3)HTTP版本
4)回车符(看不见)
5)换行符(看不见)
2.4.1.2、请求头
1、key:value
1.1、请求头关注字段
1)Accept:*/*:用来告知客户端可以处理的内容类型
2)token:null:鉴权,后端返回的token信息
3)Set-cookies:前端缓存信息,session_id:用来鉴权
4)Content-Type:application/json;charset=utf-8:前端告诉后端请求参数编码的格式
1.2、常见Content-Type类型
1)表单:application/x-www-form-urlencoded
2)json格式编码:application/json
3)上传文件或图片:multipart/from-data
4)提交html格式文件:text/xml
2、回车符(看不见)
3、换行符(看不见)
2.4.1.3、空行
1、回车符(看不见)
2、换行符(看不见)
2.4.1.4、请求正文
2.4.2、响应报文
2.4.2.1、状态行
1)协议版本
2)状态码
3)状态码描述
4)回车符(看不见)
5)换行符(看不见)
2.4.2.2、响应头
1、key:value
1.1、响应头关注字段
1)Content-Type:application/json; charset=utf-8:告诉前端后端支持的编码格式
2)Set-cookie:告诉前端如何设置缓存信息
2、回车符(看不见)
3、换行符(看不见)
2.4.2.3、空行
1、回车符(看不见)
2、换行符(看不见)
2.4.2.4、响应正文
2.4.3、请求体
1、get请求:参数拼接在接口地址后面
2、post请求:参数放在请求体body里面
3、get与post区别
1)参数传递:get参数在url地址后面,post参数放在body里面
2)安全性:get相对不那么安全,post相对安全
3)请求参数长度限制(后端可修改):理论上get参数长度有限制,post长度无限制,实际协议本身并没有做长度限制,是后端服务器做了限制,考虑内存问题
4)post是提交数据,get是获取数据
5)幂等性(同一个请求无论做多少次,结果都不变):get请求都是幂等,post请求不幂等(后端要做幂等处理,如金融方面)
2.4.4、响应体
get与post无区别,该怎么返回就怎么返回
2.4.5、响应状态码
1、1xx:服务器已经收到了请求,需要客户端继续操作
1)100:客户端应该继续请求
2)101:切换到更高级的协议
2、2xx:HTTP成功状态码
1)200:请求成功,一般用于get,和post
2)201:请求已经成功,并创建了新的资源
3)202:请求已经接受,但未处理完成
4)204:服务器处理成功,但是并未返回内容
5)206:服务器成功处理了部分请求,get请求,常用与资源下载
3、3xx:资源重定向
1)301:请求资源被永久移动到新的url,返回替代该资源的url,浏览器会自动重定向到新的url,后续资源的访问将使用新的替代
2)302:临时移除,301是永久移除,资源只是临时移动到新的url,客户端继续使用原有的url
3)303:查看该资源的其他地址
4)304:请求的资源未修改,当服务器返回304,此时服务器不会返回任何资源,客户端将使用本地缓存资源。
5)305:请求的资源必须通过代理访问
6)307:临时重定向,与302类似
4、4xx:客户端错误
1)401:请求需要用户的身份认证
2)402:保留状态码,并未使用
3)403:服务器已经收到了客户端的请求,但是拒绝执行这个请求
4)404:服务器无法找到客户端需要访问的资源
5)407:请求需要代理进行身份认证,与401类似
6)408:服务器等待客户端发送的请求时间过长,超时
5、5xx:服务端错误
1)500:服务器内部错误,无法完成请求
2)501:服务器不支持请求的功能,无法完成请求
3)502:网关或者是代理服务器执行请求的时候,收到了一个无效的响应
4)503:服务器故障,暂时无法处理客户端的请求
5)504:网关或者是服务器代理,无法从远处服务器获取请求
6)505:服务器不支持请求的HTTP协议的版本,无法处理请求
三、TCP协议
3.1、报文格式
3.1.1、TCP头部
1)Header Length:头部长度
2)Reserved:保留位
3)Window Size:还能接收容量
4)ACK:确认号字段是否有效,若ACK=1,则有效
5)SYN:在建立连接时,同步序号
6)FIN:标记数据是否发送完毕,若FIN=1,表示已经发送完成
3.1.2、TCP数据
详见:http://testingpai.com/article/1621601730160
3.2、三次握手/四次挥手
详见:http://testingpai.com/article/1621669379653
四、https协议
4.1、CA证书:证书签发机构颁布的数字证书
4.2、请求过程
4.2.1、三次握手
1、客户端发送https请求,服务端将公钥以证书的形式发送给客户端
2、客户端收到后加密发送给服务端,服务端解密并确认身份,发送加密串给客户端
3、客户端解密并确认身份,问服务端要协议密钥,通知服务端握手结束,服务端响应密钥给客户端,通知客户端握手结束
4.2.2、四次挥手
1、客户端告知服务端发送完毕
2、服务端发送确认信息
3、客户端告知服务端确实要关闭连接
4、服务端确认关闭释放TCP连接
五、http与https区别
1、安全性:http明文传输,https加密传输(CA证书),https相对安全
2、端口:http端口:80,https端口:443