📣 📣 📣 📢📢📢
☀️☀️你好啊!小伙伴,我是小冷。是一个兴趣驱动自学练习两年半的的Java工程师。
📒 一位十分喜欢将知识分享出来的Java博主⭐️⭐️⭐️,擅长使用Java技术开发web项目和工具
📒 文章内容丰富:覆盖大部分java必学技术栈,前端,计算机基础,容器等方面的文章
📒 如果你也对Java感兴趣,关注小冷吧,一起探索Java技术的生态与进步,一起讨论Java技术的使用与学习
✏️高质量技术专栏专栏链接: 微服务,数据结构,netty,单点登录,SSM ,SpringCloudAlibaba等
😝公众号😝 : 想全栈的小冷,分享一些技术上的文章,以及解决问题的经验
⏩当前专栏:基础知识系列系列
网络
冯诺依曼计算机
- 运算器
- CPU
- GPU(显卡)
- 存储器:
- 内存(断电数据清空,读写速度快)
- 硬盘 辅助存储(数据可以持久话,读写速度相对慢)
- 控制器
- 主板上的一些器件
- 输入设备
- 鼠标,键盘,麦克风,网口
- 输出设备
- 显示器,耳机,网口
网络连接起源
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 区别
- 基于什么前提 ,如果没有前提不适用规范,只考虑理论和语法 基本没区别
- 如果是基于RFC规范,
- 理论上: get和post 具有相同语法 但是又不同语义,get:获取 post:发送 其他方面没有区别
- 实践上 : 各个浏览器 来解析的也就是i实现RFC的实现者,常见的不同:
- GET 数据在URL是可见的 POST不显示在URL中
- GET 对长度有限制 , POST长度无限制
- GET请求的数据可以收藏为书签,POST不可以
- GET请求后 刷新和后退是无影响的,POST会重新提交
- GET编码类型 : application/x-www-form-url, POST编码有很多种
- GET的历史参数会被保留在浏览器里,POST不会被保存浏览器
- GET只允许 ASCⅡ POST没有编码限制
- GET 安全性较差,差距不大 因为 GET所发的数据是URL的一部分,但是POST依然是明文的只不过是不缓存和显示在浏览上
Cookie 与 Session
Cookie
- 如果我们用JS的变量来存数据,那么页面关闭的时候数据就会消失,
- 保持登陆状态就要用到Cookie /session
- 按照正常的HTTP协议来说 是做不到的,一位内上下文无关协议
- 所以前端页面上,有可以存储数据的东西,一旦登陆成功了就可以存储关键信息来保证登陆状态
- Cookie就是存储页面数据的一种方式,存在于浏览器,而不是存储于某i一个页面上,可以长期存储Cookie保存在浏览器里也是存放在不同的域名中,
- 每次请求域名,浏览器都会自动带上cookie,给服务器解析获取数据,确保保持登陆状态
- 缺点 : 如果有坏人拿到了Cookie 就可以操作你的账号
Session
- 存放在服务器内存中
- 缺点:如果用户量非常打的时候 上亿的用户 非常的消耗资源
- 后端不止一台服务器,用户的登录信息一般只存在一台服务器上,一位用户登录操作,在那台机器上执行的一般就存在哪台服务器上,通过轮询或者IP哈希来寻找
如何查看Cookie呢?