1. 网络分层
网络上进行协议分层的好处
①分层之后层次之间的耦合程度比较低,上层协议不必了解下层的细节,下层也不必了解上层的细节;
②方便的对某一层的协议进行替换;真实网络的协议分层
OSI 七层网络模型(教科书)
TCP/IP五层网络模型(当下最广泛)
应用层:关注传输过来的数据要干啥用,对应程序员写的应用程序
传输层:不考虑中间路径,只关注起点和终点
网络层:主要负责2个遥远的节点之间的路径规划
数据链路层:主要关注的2个相邻节点之间的传输,网络上相邻节点就是通过网线/光纤/无线直接连接的设备
物理层(纯硬件):网络通信的基础设施,网线、光纤、网络接口
这样分层之后,可以让程序员只关注一个子问题。
下面四层是操作系统内部已经封装好了,只用应用层才真正关心数据的用途。
程序员写网络程序主要编写的应用层代码,真正要发这个数据需要上层协议调用下层协议。(应用层需要调用传输层,传输层给应用层提供一组API)
在协议分层的背景下,数据如何通过网络层传输?
答:封装 and 分用。
发送方发送数据,要把数据从上到下,依次交给对应的层次的协议,进行封装
接收方收到数据,要把数据从下到上,依次交给对应的层次的协议,进行解析路由器和交换机的区别
路由器,只需要封装分用到网络层;
交换机,只需要封装分用到数据链路层;
通常来说,路由器进行“三层转发”,交换机是进行“二层转发”。
但是实际上,路由器和交换机之间的界限越来越小,路由器可以通过设定特殊模式进行“二层转发”,交换机也有高端交换器支持三层准发。
2. TCP/UDP区别
TCP API 和 UDP API 这2个协议各自的特点
①TCP:有连接(使用TCP通信的双方需要刻意保存对方的相关信息)、可靠传输(尽可能的传输过去)、面向字节流(以字节为传输的基本单位,读写方式非常灵活)、全双工(一条路径双向通信)
②UDP:无连接(使用UDP通信的双方不需要刻意保存对方的相关信息)、不可靠传输(消息发了就发了,不关注结果)、面向数据包(以一个UDP数据包为基本单位)、全双工(一条路径双向通信)
3. HTTP和HTTPS
概念
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准,用去从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效。
HTTPS:是以安全为目标的HTTP通道,HTTP的安全版,在HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就是需要SSL。
HHTPS协议的主要作用:①建立信息安全通道,保证数据传输的安全②确定网站的真实性。HTTP和HTTPS的区别
HTTP协议传输的数据都是没有加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常的不安全,为了保证这些隐私数据能够加密传输,设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密——>HTTPS。
HTTPS协议=HTTPS协议+SSL,可进行加密传输、身份认证的网络协议。
①HTTPS协议需要申请证书,一般免费证书比较少,因此需要一定费用;
②HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议;
③HTTP和HTTPS的默认端口号也不一样,前者是80开头,后者是443开头;
④HTTP的链接简单,是无状态的,HTTPS协议是由SSL和HTTP协议构成的可进行加密传输、身份认证的网络协议,比HTTP协议安全。
4. 浏览器输入一串url的过程
- 解析URL,分析域名是否规范
- 浏览器向DNS请求解析IP地址
- DNS将解析出的IP地址返回给浏览器,浏览器得到域名对应的IP地址缓存起来
- 浏览器和服务器建立TCP连接,3次握手
- TCP三次握手之后,浏览器和服务器之间啊回建立一个可靠的虚拟通道,于是浏览器就可以发送自己的HTTP请求了,(比如请求首页index.html)
- 服务器做出响应,将文档index.html发送给浏览器,浏览器进行接封装
响应的状态码:
200:响应成功
301:永久重定向
302:临时重定向
404:not found网页没不存在
502:网关故障
500:内部服务器崩溃了 - 浏览器显示index.html内容进行渲染
- 释放TCP连接,4次挥手
5. 响应状态码301和302的区别
301和302都是将URL地址转移到新的地址中。
①301永久重定向
常见场景是域名跳转。浏览器发出原始请求后定向到新地址,浏览器会缓存这个请求,等下次再次访问原始地址时会直接请求到新地址去。
②302临时重定向
可用于临时的、动态的地址跳转,每次请求原地址都会重新定向到目标地址。场景:页面单点登录。
- 客户端收到301后,应该使用新的URL来访问该资源,并且以后应该直接使用新的URL,不再使用旧的URL。搜索引擎在收到301时,会更新索引,将旧的URL替换为新的URL。
- 当服务器返回状态码302时,表示被请求的资源已经被临时移动到了新的位置。客户端收到302后,应该使用新的URL来访问该资源,但以后仍然可以使用旧的URL。搜索引擎在收到302时,会继续保留旧的URL在索引中,而不会将其替换为新的URL。
6. get和post的区别
①url的可见性
get的参数url可见
post的参数url不可见
②数据传输
get通过拼接url进行传递参数
post通过body体传输参数
③数据大小限制:
get数据是附加在url后面的,有url的长度限制。
post数据是包含在请求的主体中,通常没有固定的长度限制,post请求适用于传递大量的数据,例如文件上传。
④安全性
get因为数据是暴露在url中,包含敏感信息的数据不够安全。
post数据不暴露在url中,相对安全,适用于处理敏感信息的情况
⑤幂等性
get请求是幂等的,多次执行不会产生不同的结果,对于相同的get请求,服务器应该返回相同的响应。
post请求不一定是幂等的,同样的post请求可能会导致服务器状态的变化,例如提交一个表单可能会创建新的资源。