↓ 跳过正文
  1. 文章/

计网入门基础

Forminio
know is know ,no know is no know
目录
系统实践 - 这篇文章属于一个选集。
§ : 本文

网络模型
#

网络模型分为两类一类是OSI模型,共七层,一类是TCP/IP模型,共四层

其中OSI模型为:应用层–表示层–会话层–传输层–网络层–数据链路层–物理层

TCP/IP模型为:应用层–传输层–网络层–网络接口层

TCP/IP模型
#

应用层:支持各类的应用层协议,例如HTTP、HTTPS等等

传输层:通过端口号提供进程到进程的通信,主要协议是TCP、UDP

网络层:寻址和路由数据包,主要协议是IP协议

网络接口层:负责在相邻的节点之间传输数据,包括封帧、MAC 寻址和物理传输等

应用层协议
#

有HTTP、HTTPS、FTP、DNS、SSH、WebSocket、MQTT等等

报文
#

报文分为请求报文和响应报文,

请求报文:请求行,请求头,请求体

响应报文:状态行,响应头,响应体

状态码
#

1**:提示信息,表示在请求中

2**:成功处理起请求

3**:重定向类的操作提示

4**:客户端的请求出现问题,例如参数错误

5**:服务器的处理出现问题,例如服务器内部报错

HTTP请求类型
#

GET:获取指定的资源

POST:向服务器提交数据,例如表单提交

HTTP长连接
#

HTTP协议采用请求-应答模式,一般来讲,是客户端通过HTTP通信,发起请求,建立TCP连接,服务端返回响应,释放TCP连接

上面的过程这是短连接

而长连接这是不释放TCP连接,此后的HTTP通信都是复用同一个TCP进行发送和接受HTTP请求/应答

HTTP断点重传
#

断点重传:由于各种原因导致文件上传过程被中断,而再次重传不需要把整个文件重新上传一遍

其中主要的关键点是

  • 客户端首先对文件进行使用md5哈希加密,建立文件的唯一标识
  • 客户端再对文件进行分片,并且标上标识+序号,发送给服务端
  • 服务端记录每一个文件的标识+序号,记录进度
  • 服务端通过序号将整个文件进行拼接合并

这里由于对整个文件做了哈希处理,所以可以指定同一个文件进行拼接,而不会出现不同文件拼接一起

其次文件分片拥有序号,所以不用强指定文件按照序号一片一片上传,可以不用照顾序号和同时上传,最后由服务端按序号拼接即可

HTTPS协议
#

HTTP是明文传输,端口号:80

HTTPS是加密传输,由可信的CA签发数字证书,端口号:443

HTTPS握手过程
#

HTTPS是通过TLS进行握手通信

TLS第一次握手

客户端向服务端发送Client Hello信息,包括客户端生成的随机数+客户端支持的密码套件

TLS第二次握手

服务端收到请求后,发送Server Hello信息,包括服务端生成的随机数+服务端选定的密码套件+服务端的数字证书

TLS第三次握手

客户端收到响应后,首先检查服务端证书,以及取出公钥加密发送信息,包括加密的一个随机数+加密算法改变通知,此时客户端握手结束

TLS第四次握手

服务端收到请求后,通过协商算法,计算三个随机数算出本次会话的会话密钥,发送最后一次信息,包括加密算法改变通知+服务端握手结束

HTTP2.0
#

  • 头部压缩:使用算法减少了头部的重复字段
  • 二进制分帧:把头部和数据拆成不同类型的帧,明确不同的帧的长度和类型,方便解析和复用
  • 多路复用:每一个请求和响应同属于一个steam流,并且都携带stream ID,多个请求可以在同一条TCP连接上交错传输

HTTP3.0
#

主要使用了基于UDP的QUIC算法,去除了传统的TCP连接

DNS
#

dns就是域名系统,其中各个域名的关系类似一个树状结构

  • 根DNS服务器
  • 顶级域服务器
  • 权威域服务器

其中当出现本地域名服务器找不到域名时,则是先向根DNS服务器询问,之后向顶级域服务器询问,最后是权威域服务器给出域名解析结果,本地域名服务器记录缓存

DNS端口:53

DNS同时支持UDP和TCP,一般查询使用UDP,只有区域传送数据才会使用TCP,面向大量数据并且可靠

状态
#

有无状态:是否需要依赖之前访问的交互信息

HTTP是无状态,Cookie和Session是有状态

Cookie和Session之间的区别
#

  • 存储位置:Cookie存在客户端,Session存在服务端
  • 数据容量:Cookie较小,通常4KB左右,Session最大相当于服务端的内存大小
  • 生命周期:Cookie可以设置过期时间,过期后自动删除,也可以关闭浏览器即删除Cookie,Session主要由服务端控制,关闭浏览器不会删除Session

JWT令牌
#

无状态模式,主要是把必要的身份信息声明放在令牌里面,并且对他签名,在服务端验证之后,可以直接得到身份信息,不用每次查询Session

主要字段:

  • Header:描述令牌的类型和签名算法
  • Payload:保存声明
  • Signature:对编码后的Header和Payload进行签名认证

缺点:

  • 签发后的很难立即撤销令牌
  • 权限更新不及时
  • 体积较大

JWT令牌泄露处理
#

  • 写一个黑名单机制,把泄露的令牌进行拉黑处理
  • 维护一个版本号机制,可以对令牌维护一个token版本号,签发时写入令牌,校验时进行比对
系统实践 - 这篇文章属于一个选集。
§ : 本文

相关文章

音乐馆
歌单加载中…
0:00 0:00