OSI七层
OSI 模型把网络通信的工作分为 7 层,从下到上分别是应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
- 应用层:用户与计算机交互的接口
- 表示层:将逻辑语言(软件语言)转换为机器语言(二进制)。进行数据处理(编码解码,加密解密)
- 会话层:管理 (建立、维护、重连)传输的每一种数据(流量) 的通信会话
- 传输层:负责向两台主机进程之间的通信提供通用的数据传输服务(TCP/UDP)
- 网络层:数据路由(决定数据在网络中的路径)
- 数据链路层:管理相邻结点之间的数据通信
- 物理层:实现相邻计算机节点之间比特流的透明传送
应用层 详解
HTTP
HTTP 是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」
概述
HTTP 是一个在计算机中专门在两点 之间传输文字、图片、音频、视频等「超文本」数据的「约定和规范」。
可以说HTTP是用于从互联网服务器传输超文本到本地浏览器or两台服务器之间互相传输超文本的协议
HTTP优缺点
优点
-
简单、
报文格式:
header + body
,头部信息是key-value
存储,易于理解 -
灵活、易于扩展
请求方法、URL、状态码、头字段等不是固定的几个,允许开发者自定义和扩展
-
应用广泛、跨平台
缺点
-
无状态:
-
好处:不需要使用额外空间来记录状态信息,减轻了服务器负担
-
坏处:不记忆状态,服务器无法判断用户身份。
完成关联操作会很麻烦,不知道那些请求是相互关联的
如登录–加购–下单–支付这一系列步骤,是同一个用户来操作的,每次请求都需要获取一次身份信息
可以使用cookie来解决,cookie是包含用户信息的本地浏览器的文件,需要保存用户的省份信息的话,响应给浏览器一个cookie,后面再请求这个网站,将请求信息和cookie一起发送,服务器就能辨识用户的身份
-
-
明文传输:明文传输虽然方便阅读,但是将所有信息裸露在外,容易被窃取
-
不安全:
- 通信使用明文,信息可能被窃取
- 不验证对方身份,可能遇到假冒网站
- 无法证明报文的完整性,可能报文被恶意修改,植入广告
HTTP常见状态码
状态码类别
类别 | 含义 |
---|---|
1XX | 提示信息,服务器收到了请求,需要用户继续执行操作 |
2XX | 成功,请求被接收并处理完成 |
3XX | 重定向,资源位置发生变动,需要客户端重写发送请求 |
4XX | 客户端错误,请求报文错误,无法处理 |
5XX | 服务器错误,请求时,服务器内部发生错误 |
常见状态码
- 200:请求成功 ,非HEAD请求,服务器返回的响应头会有body数据
- 204:与200相同,但费HEAD请求,响应头没有body数据
- 301:永久重定向,请求的资源不存在,需要使用新的URL重新访问
- 302:临时重定向,请求的资源在,暂时需要使用其他URL访问
- 304:缓存重定向,不跳转,重定向已存在的缓存文件
- 400:表示客户端请求的报文有错误,没有具体定位错误
- 403:服务器禁止访问资源,不是请求错误
- 404:请求的资源不存在 or 找不到
- 500:服务器内部发生错误,但没有具体定位
- 501:请求的功能不支持
- 502:服务器本身正常,访问后端服务器发生错误
- 503:服务器很忙,暂时无法响应
HTTP与HTTPS的区别
- HTTP:超文本传输协议,明文传输,存在安全问题。HTTPS解决了HTTP的缺点,能够加密传输<-在TCP和HTTP之间加入了SSL/TLS协议
- HTTP建立连接相对简单:TCP三次握手之后就可以进行报文传输。HTTPS在三次握手后,还需进行SSL/TLS的握手,才能进行报文传输
- HTTP是80端口;HTTPS是443端口
- HTTPS需要申请数字证书,来保证服务器的身份是可信的
- HTTP协议的URL以
http://
开始,HTTPS的URL以https://
开始
HTTP存在的问题,以及HTTPS是如何解决的?
HTTP是明文传输,所以存在一些安全问题
- 窃听风险:通信链路上可以获取通信内容
- 篡改风险:强制植入广告、病毒
- 冒充风险:假冒网购平台
HTTPS在TCP与HTTP之间加入了SSL/TLS协议,解决了这些问题

HTTPS 是如何解决上面的三个风险的?
- 混合加密解决了窃听风险
- 摘要算法解决了篡改风险
- 数字证书,解决了冒充风险
HTTP 1.0、HTTP 1.1及HTTP 2.0的主要区别
短连接:每次请求都建立TCP连接,无法复用
长连接:建立连接后保持连接,可以被多个请求复用