快速入门了解后端网络方面必备知识

2022-04-11 09:44:44 浏览数 (1)

网络

冯诺依曼计算机

  1. 运算器
    1. CPU
    2. GPU(显卡)
  2. 存储器:
    1. 内存(断电数据清空,读写速度快)
    2. 硬盘 辅助存储(数据可以持久话,读写速度相对慢)
  3. 控制器
    1. 主板上的一些器件
  4. 输入设备
    1. 鼠标,键盘,麦克风,网口
  5. 输出设备
    1. 显示器,耳机,网口

网络连接起源

1969 四所大学内部网络商议互联

  • 加利福尼亚大学洛杉矶分校
  • 斯坦福大学
  • 加利福尼亚大学
  • 犹他州大学

互联网 ————Internet(因特网),网际网络

1989 欧洲粒子物理研究所提出 ----协议

WWW

计算机如何连通

团队研究的时候数据需要相互共享,那么他们就发明了一种网线来连起来电脑做数据传输,

网线 :

但是随着需要连接的需求变大显然不可以大规模使用,于是 新的办法就出现了

随着需求的变化 新的连接形式出现了,用一个中转的计算机来连接所有的计算机来实现多链接信息传输

也创造了一种传递消息的格式,你是谁,你要发给谁,发的内容是什么

局域网

一片区域的网络中 设备可以数据互通,但是不能和别的区域的设备进行数据传输

广域网

IP地址

IP地址的格式: XXX.XXX.XXX.XXX

每个段都是 0~255之间 每个段都是八个0,1组成的

IP地址分类

一个IP地址分为两个部分 :网络ID,主机ID

最常见的三种Ip 根据需要的主机数量来分配

A类:0.0.0.0 -> 127.255.255.255( A类一个网络可以有一千六百万 的主机)

B类:128.0.0.0-> 191.255.255.255 买过阿里云的可以发现 ip在(172.16.0.0.0~172.3.1.255.255)

C类:192.0.0.0~233.255.255.255 (192.168.0.x)

路由器IP是由运营商统一分配,我们的ip是路由器来给我们分配

公网IP

服务器 公网IP : 192.xxx.xxx.xxx

以发微信举例子

  • 我们发微信会通过 路由器连通运营商的网络
  • 访问腾讯微信的服务器,转发到地址运营商
  • 运营商网络发给设备响应

域名与DNS解析

为什么我们生活中没有去用公网IP来访问 而是www.baidu.com

我们平时使用的时候去记Ip 很费劲,但是记住一个关键字就可以了,域名根据需要应运而生

我们希望用域名来访问绑定的IP ,用域名和IP形成对应关系

域名访问

我们使用计算机的时候都不知道域名对应的IP的,

  • 问路由器,如果路由器记录了这个域名就会返回一个对应的IP之后计算机访问IP
  • 路由器没有就问上级路由器,市 省 国
  • 城市这个级别的路由器时候 就回去找DNS服务器
  • 如果这个DNS不存在就回去上级找 一定可以找到
  • DNS地区服务器回缓存,增加返回效率

经典问题 URL输入回车之后 网络会发生什么

  • 先找浏览器缓存
  • 之后找本机HOST文件
  • 家里路由器(一般路由器都有这个功能)
  • 上级路由 城市LDNS服务器
  • 继续向上级DNS寻找
  • GDNS服务器

网络模型

五层网络模型

软件了解主要是上三层

  • 应用层 HTTP协议 DNS协议
  • 运输层 TCP协议(可靠传输) 、UDP协议(传输不可靠)
  • 网络层 IP地址 – IP协议
  • 数据链路层 mac地址
  • 物理层

传输的时候协议之间是依赖存在的 比如 应用层传输

使用了 HTTP HTTP需要TCP 使用 TCP需要IP协议,是上而下的依赖关系

HTTP分为两部分 :

此时的请求形态很简单 : (http请求头 : hello)

请求 : Request

响应: Response

HTTP 请求头

HTTP 响应头

这是最上层,那我们肯定不可能去说 使用HTTP就可以直接访问拿到结果,其实是调用的操作系统去通过网络使用TCP/IP协议去通过网络 往外发送访问请求,

所以我们现在请求的形态是这样的 : tcp/ip(对方的IP,自己的IP,对方的端口)(http请求头 : hello)

小总结

五层模型协议不断地嵌套一直到物理层,才可以传输,一直到得到响应结果

HTTP协议(明文协议)

请求 : Request

请求头:请求方式 URL 协议版本

常用的请求方式 : GET/POST

  • Get : user? id = 1 &name = 2 (请求参数都在URL里)
  • Post : user 会有一个字段 传文件的信息

不常用的其他请求方式 : PUT DELETE HEAD

Host : 存放地址 域名

Connection : 连接状态

请求数据体

GET/POST 区别
  1. 基于什么前提 ,如果没有前提不适用规范,只考虑理论和语法 基本没区别
  2. 如果是基于RFC规范,
    1. 理论上: get和post 具有相同语法 但是又不同语义,get:获取 post:发送 其他方面没有区别
    2. 实践上 : 各个浏览器 来解析的也就是i实现RFC的实现者,常见的不同:
      1. GET 数据在URL是可见的 POST不显示在URL中
      2. GET 对长度有限制 , POST长度无限制
      3. GET请求的数据可以收藏为书签,POST不可以
      4. GET请求后 刷新和后退是无影响的,POST会重新提交
      5. GET编码类型 : application/x-www-form-url, POST编码有很多种
      6. GET的历史参数会被保留在浏览器里,POST不会被保存浏览器
      7. GET只允许 ASCⅡ POST没有编码限制
      8. GET 安全性较差,差距不大 因为 GET所发的数据是URL的一部分,但是POST依然是明文的只不过是不缓存和显示在浏览上

Cookie 与 Session

Cookie

  1. 如果我们用JS的变量来存数据,那么页面关闭的时候数据就会消失,
  2. 保持登陆状态就要用到Cookie /session
  3. 按照正常的HTTP协议来说 是做不到的,一位内上下文无关协议
  4. 所以前端页面上,有可以存储数据的东西,一旦登陆成功了就可以存储关键信息来保证登陆状态
  5. Cookie就是存储页面数据的一种方式,存在于浏览器,而不是存储于某i一个页面上,可以长期存储Cookie保存在浏览器里也是存放在不同的域名中,
  6. 每次请求域名,浏览器都会自动带上cookie,给服务器解析获取数据,确保保持登陆状态
  7. 缺点 : 如果有坏人拿到了Cookie 就可以操作你的账号

Session

  1. 存放在服务器内存中
  2. 缺点:如果用户量非常打的时候 上亿的用户 非常的消耗资源
  3. 后端不止一台服务器,用户的登录信息一般只存在一台服务器上,一位用户登录操作,在那台机器上执行的一般就存在哪台服务器上,通过轮询或者IP哈希来寻找

如何查看Cookie呢?

0 人点赞