分层模型
五层网络模型
MAC地址跟IP地址的区别:MAC地址是唯一的,相当于每个人的指纹,出生时就是唯一的;IP地址就相当于是你当前的住址,是会发生变化的,但是是动态唯一的。
应用层协议
URL
URL(uniform resource locator,统一资源定位符)。用于定位网络服务。
它表示:从网络中哪台计算机(domain)中的哪个程序(port)寻找哪个服务(path),以及要用什么样的协议(schema)通信
协议为HTTP时,默认端口号为80 ,端口可省略不写
协议为HTTPS时,默认端口443,可省略
URI
URI(Uniform Resource Identifier)统一资源标识符,它包含两个子集:URL和URN(Uniform Resource Name)。URL是用来定位资源的,而URN是用来命名资源的。所以URL是URI的子集。
测试小例子:
如果访问一个地址http://www.baidu.com/imgs/1.png的结果返回了一个图片。那可以说明后端有一个/imgs/1.png这样的目录和文件吗?
答案是:并不能说明什么!!
因为访问地址链接到的是后端的程序,后端程序规定你用什么路径访问,你就得用什么路径访问,跟程序所在的文件路径没有关系
HTTP
超文本传输协议(Hyper Text Transfer Protocol)
该协议规定了两个方面的内容:
- 传递消息的模式
- 传递消息的格式
HTTP使用的消息传递模式,是【请求-响应模式】,非常简单,【请求-响应】完成后,一次交互结束。
HTTP消息格式是一种纯文本的格式,文本分为三个部分:
- 请求行(包括请求方法(如GET、POST等)、请求的URL路径和HTTP协议版本号);对应响应行(包括HTTP协议版本号、状态码(表示请求的处理状态,如200表示成功,404表示未找到等)和对应的状态消息)
- 请求头(用于传递关于消息的元数据信息,由多个键值对组成的列表,用于传递诸如内容类型、内容长度、缓存控制、认证信息等相关信息)
- 请求体(携带具体的数据内容,常包含请求参数或数据);对应响应体(通常包含请求所得的资源数据或相关内容)消息主体可以是任意类型的数据,如文本、HTML、JSON、XML、二进制数据等。
HTTP和HTTPS的区别
1. 基本概念:
HTTP协议规定了如何从网站服务器传输超文本到本地浏览器,是基于客户端和服务器端架构工作的,它可以使浏览器更加高效、网络传输减少。
HTTPS是HTTP的安全版,在HTTP的基础上加入SSL层(加密/身份验证层),保证数据传输的安全性,并且确认网站的真实性。
2. 区别:
HTTP传输是明文传输,不安全;HTTPS在HTTP的基础上设计了SSL(Secure Sockets Layer)协议,用于对传输数据进行加密和身份认证。
主要区别如下:
- HTTPS协议需要申请CA(Certificate Authority,数字证书认证机构)证书,需要一定费用。
- HTTP是明文传输,数据未加密,安全性差;HTTPS具有加密的SSL安全协议,安全性好。
- HTTP和HTTPS使用的是不同的连接方式,HTTP的连接是无状态的。默认端口也不同:HTTP默认端口80,HTTPS默认端口443.
- HTTP页面响应速度更快,因为它使用的是TCP三次握手建立连接,客户端和服务端需要交换3个包,HTTPS协议除了三次握手交换3个包,SSL还需要交换9个包,共12个包。
3. http1.x 和http2.x区别
- HTTP2是二进制传输,HTTP1是文本传输
- HTTP2支持多路复用,即在单个TCP连接上同时发送多个HTTP请求和响应,显著提高性能和效率,充分利用网络资源。
- HTTP2头部压缩。将头信息压缩后再发送,并且客户端和服务端共同使用一张头信息表,这样每次传输时只需要传递这张表的ID就好了,根据索引ID查询头信息。
- HTTP2支持在未经客户端允许的情况下主动推送信息。
4. HTTPS工作原理:
- 客户端发起HTTPS请求,连接到服务端的443端口
- 要使用HTTPS协议,前提是要申请CA证书的,颁发证书的同时会产生一个私钥(钥匙)和公钥(锁头),私钥(钥匙)由服务端自己保存,不可泄漏,公钥(锁头)是附带在证书中的,可以公开;证书本身还附带一个电子签名,用来验证证书的完整性和真实性,可以防止证书被篡改。
- 服务端响应客户端请求后,将证书传递给客户端
- 客户端解析证书(这一步是浏览器内置的SSL/TLS实现),并对其进行验证(验证证书颁发机构是否可信、证书是否过期,证书中域名与实际域名是否一致)
- 如果证书没有问题,客户端就从证书中取出公钥,然后客户端生成一个随机码KEY,使用公钥对其加密,加密后发送给服务端,
- 服务端接收到加密的随机码KEY之后,使用私钥对其解密,得到相同的随机码KEY
- 至此,客户端和服务端建立安全连接。服务器可以用KEY对数据加密发送给客户端,客户端也可以用KEY对数据解密,双方使用对称加密实现数据传递。