夜阑卧听风吹雨
铁马冰河入梦来算法
大学老师曾经说过,计算机界有三本天书,分别是:数据结构、计算机组成原理、计算机网络。因此网络也是咱们从事计算机开发必须了解且掌握的一门技术,本文我将觉得所理解的网络知识来用通俗的语言描述网络缓存
应用层安全
访问网络服务的端口,如HTTP传输 ‘hello,world’
表示层服务器
提供数据格式转换
会话层cookie
创建端链接并提供访问验证 如SSL/TLS认证
传输层网络
UDP/TCP + ‘hello,world’
网络层session
IP + UDP/TCP + ‘hello,world’
数据链路层数据结构
MAC地址 + IP + UDP/TCP + ‘hello,world’ + 帧尾
物理层dom
传输二进制 01010101001
请求/相应报文tcp
**请求报文包括:** 请求方法 URL 协议版本HTTP1.0 首部字段名 请求体 (POST请求) **响应报文包括:** 版本 状态码 短语 首部字段名 响应实体
请求方法
GET:
表明获取资源 特色: 安全:不该该引发Server端的任何状态变化 幂等:请求屡次的结果同样 可缓存:代理服务器能够缓存
POST:
表明处理资源 特色: 不安全 不幂等 不可缓存
HEAD
OPTION
PUT
状态码
200:
请求成功
300:
请求重定向
400:
因为客户端请求地址和参数引用的失败
500:
服务端缘由
链接接创建流程
TCP:
三次握手、四次挥手
HTTP特色
无链接:
每次请求都须要创建TCP链接
无状态
不会保存记录用户的信息和状态
解决HTTP无链接问题
在同一条TCP上面产生屡次HTTP请求
头部字段(Header):
Connection:keep-live Time: 20 在必定时间内不须要再次创建TCP链接 Max: 在创建链接时间内最多请求次数
判断一个请求的结束?
Content-length 空chunked
HTTPS=HTTP+SSL/TLS:
在应用层和传输层之间增长了 SSL/TLS认证 查阅多方资料:SSL/TLS认证在会话层
特色:
面向链接
数据开始传输以前创建链接(三次握手) 数据传输以后释放链接(四次挥手)
可靠传输
无差错、不丢失、不重复、按序到达、超时重传
面向字节流
会自动根本TCP自身状况传输字节大小,不受发送方控制, 最大传输单元 = 1500 =20个IP头+20个tcp头+data
流量控制
滑动窗口协议
拥塞控制
慢开始、拥塞避免 指数规律增加(报文个数:一、二、四、八、16) 达到门限初始值:开始加法增大 网络拥塞的时候:乘法减少到新的门限值 快恢复、快重传
发送窗口以很快的速率去发送消息时,因为服务端接收窗口比较小, 此时接收窗口经过向TCP的报文首部字段去更改窗口值去更正或者调整发送端的发送速率
特色
无链接:不须要创建链接流程 最大能力传输: 不保证按序到达 面向报文:不合并 不拆分
功能
复用、分用
域名到IP地址的映射,解析请求采用UDP数据报且明文的形式 使用DNS协议向DNS服务器的53端口进行请求
- Client经过DNS协议向DNS服务器请求相应域名的解析 - DNS服务器返回给客户端相应的IP - 客户端拿到IP再向服务端发送网络请求
递归查询
依次询问返回:Client->本地DNS->根域DNS->顶级DNS->权限DNS
迭代查询
Client: 本地DNS、根域DNS、顶级DNS、权限DNS互相询问
**缘由在公网中存在第三方钓鱼DNS服务器拦截咱们的DNS解析请求,返回给咱们错误的IP**
httpDNS
DNS解析:使用DNS协议向DNS服务器的53端口进行请求 HTTPDNS解析:使用HTTP协议向DNS服务器的80端口进行解析,不会产生DNS解析就不会有DNS劫持 http://119.29.29.29/d?dn=www.xiaozhu.com&ip=172.18.134.109
长链接
Client <-(长连通道)>长连server(代理服务器) <-> API server Client的HTTP请求是经过代理服务器经过内网专线进行内网的DNS解析这样就规避了公网DNS解析劫持的问题
没有关系
由于DNS解析发生在HTTP创建链接以前 由于DNS解析请求使用的UDP数据报,端口号53
Client->中国移动DNS->中国电信DNS->中国联通DNS ,因为协议限制,致使各个DNS解析商互相推脱,形成DNS解析缓慢,从而致使网络请求慢
对HTTP无状态的补偿,例如client发送请求以后,再次请求 没法记住用户
用来记录用户状态,区分用户,状态保存在客户端
怎样保证cookie安全?
对cookie进行加密处理 只在HTTPS上携带cookie(推荐) 设置cookie为HTTPonly ,防止跨站脚本攻击
怎样修改cookie
新cookie覆盖旧cookie 覆盖规则:name、path、domian须要与原cookie一致
怎样删除cookie
新cookie覆盖旧cookie 覆盖规则:name、path、domian须要与原cookie一致 设置cookie的expire=过去的某个时间点或者设置maxAge=0
session
用来记录用户状态,区分用户,状态保存在服务端端
工做流程 Client向server发送消息,server记录用户状态生成sessionID 经过存在cookie中传给client