网络传输协议

网络分层

  • 物理层:实现计算机系统与网络间的物理连接(双绞线,电磁波,光纤)
  • 数据链路层:进行数据打包与解包,形成信息帧(香农定理)
  • 网络层:提供数据通过的路由(IP)
  • 传输层:提供传输顺序信息与响应(TCP,UDP,端口号prot数据,套接字socket)
  • 会话层:建立和中止连接
  • 表示层:数据转换、确认数据格式
  • 应用层:提供用户程序接口(http)

    http和https基本概念

  • http: 超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

  • https: 是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

  • https协议的主要作用是:建立一个信息安全通道,来确保数组的传输,确保网站的真实性。

    http和https的区别

http传输的数据都是未加密的,也就是明文的,网景公司设置了SSL协议来对http协议传输的数据进行加密处理,简单来说https协议是由http和ssl协议构建的可进行加密传输和身份认证的网络协议,比http协议的安全性更高。
主要的区别如下:

  • Https协议需要ca证书,费用较高。
  • http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  • 使用不同的链接方式,端口也不同,一般而言,http协议的端口为80,https的端口为443
  • http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

    TCP和UDP的区别

  • TCP是面向连接的,udp是无连接的即发送数据前不需要先建立链接。

  • TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。 并且因为tcp可靠,面向连接,不会丢失数据因此适合大数据量的交换。

  • TCP是面向字节流,UDP面向报文,并且网络出现拥塞不会使得发送速率降低(因此会出现丢包,对实时的应用比如IP电话和视频会议等)。

  • TCP只能是1对1的,UDP支持1对1,1对多。

  • TCP的首部较大为20字节,而UDP只有8字节。

  • TCP是面向连接的可靠性传输,而UDP是不可靠的。

    TCP和UDP的优缺点

    TCP:面向链接协议
    必须按照下述的步骤传输:
    1、建立链接 通过三次握手
    2、传输数据
    3、断开链接 通过四次挥手
    特点:
    1、准确度高
    2、安全
    缺点:
    1、慢
    2、成本高

    1. UDP:无链接协议<br /> 【注】直接传输,不链接。<br /> 特点:<br /> 1、及时性高<br /> 缺点:<br /> 1、不安全<br /> 2、准确度底
    2. 【注】一般用于,及时性要求很高,但是对于数据准确度要求没那么高的。<br /> 【例子】:直播、视频通信、语音通信...<br />![三次握手.png](https://cdn.nlark.com/yuque/0/2020/png/1699388/1597647615247-6d692251-714d-4b28-a716-aa26d9e72d1e.png#align=left&display=inline&height=545&margin=%5Bobject%20Object%5D&name=%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B.png&originHeight=545&originWidth=1440&size=48304&status=done&style=none&width=1440)<br />![四次挥手.png](https://cdn.nlark.com/yuque/0/2020/png/1699388/1597647629341-4ff6b5f6-f256-462f-9041-483f9273673a.png#align=left&display=inline&height=545&margin=%5Bobject%20Object%5D&name=%E5%9B%9B%E6%AC%A1%E6%8C%A5%E6%89%8B.png&originHeight=545&originWidth=1440&size=53193&status=done&style=none&width=1440)<br />![网络传输协议.png](https://cdn.nlark.com/yuque/0/2020/png/1699388/1597647643245-f056b95a-e3e0-41f0-a0f5-f88f8a10a104.png#align=left&display=inline&height=553&margin=%5Bobject%20Object%5D&name=%E7%BD%91%E7%BB%9C%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE.png&originHeight=553&originWidth=1440&size=66188&status=done&style=none&width=1440)

    会话存储技术

    以一种格式,将用户的行为,存储到本地

    cookie

    1. 1、可以设置过期时间<br /> 2、最大4kb<br /> 3、每个域名下最多50条数据

localStorage

  1. 1、永久存储<br /> 2、最大5MB<br /> 3、三种方法
  1. localStorage IE8一下不兼容
  2. localStorage.setItem()
  3. localStorage.getItem()
  4. localStorage.removeItem();

4、三种建立方法和输出方法

  1. //建立
  2. localStorage.setItem("a", "111");
  3. localStorage.b = "222";
  4. localStorage['c'] = "333";
  5. //输出
  6. console.log(localStorage.getItem("a"));
  7. console.log(localStorage["b"]);
  8. console.log(localStorage.c);
  9. //删除
  10. window.onload = function(){
  11. var oBtn = document.getElementById("btn1");
  12. oBtn.onclick = function(){
  13. localStorage.removeItem("c");
  14. }
  15. }
  16. <button id = 'btn1'>删除</button>

sessionStorage

  1. 1、最大5MB<br /> 2、最多只能存储一次会话
  2. 一次会话:打开窗口,关闭浏览器。
  3. 【注】上述这三种技术只能存储字符串。

cookie

  • 完整的cookie:

    1. name=value;[expires=date];[path=path];[domain=somewhere.com];[secure],<br /> name value 这两个部分是必选项<br /> 放在中括号中的是可选项
    2. 【注】chome浏览器不支持本次缓存cookie chome浏览器必须通过服务器加载,才能设置cookie
  • expires 过期时间

    1. 如果我们不去设置cookie的过期时间,默认是Session(会话)<br /> 【注】设置过期时间,必须通过日期对象设置
    2. 【注】如果到了过期的时间,那么这个cookie会被自动清除。
  • path 限制访问路径

    1. 如果我们不去设置path,默认是当前文件加载的路径<br /> 1chome浏览器,如果你加载的path设置path不一致,设置失败<br /> 2firefox浏览器,就算加载path和设置的path不一致,也能设置成功<br /> 访问的cookie的文件,和cookie存储的文件路径不一致,所以访问失败
  • domain 限制访问域名

    1. 如果我们不去设置domian,默认是当前文件加载的域名<br /> 如果你加载的domain设置domain不一致,设置失败
  • secure

    1. 设置访问限制<br /> 【注】只有通过https协议访问的cookie才能访问成功

    cookie函数的封装

    ```javascript /*

    1. name=value;[expires=date];[path=path];[domain=somewhere.com];[secure],

    */ //通过ES6的语法对外暴露 // export default $_cookie export { $_cookie, setCookie, getCookie, removeCookie }

//可以直接通过一个函数调用三个功能。

function $_cookie(name){ let argus = […arguments]; switch(argus.length){ case 1: return getCookie(name); case 3: setCookie(…argus); break; default: if(argus[1] === null){ removeCookie(name); }else{ setCookie(…argus, {}); } break; } }

function setCookie(name, value, { expires, path, domain, secure }) { var cookieStr = encodeURIComponent(name) + “=” + encodeURIComponent(value); if (expires) { cookieStr += “;expires=” + afterOfDate(expires); } if (path) { cookieStr += “;path=” + path; } if (domain) { cookieStr += “;domain=” + domain; } if (secure) { cookieStr += “;secure”; } //设置 document.cookie = cookieStr; }

//生成n天后的事件 function afterOfDate(n) { var d = new Date(); var day = d.getDate(); d.setDate(day + n); return d; }

function getCookie(name) { //通过字符串处理,将我们需要的name对应value值获取到 let cookieStr = decodeURIComponent(document.cookie); let arr = cookieStr.split(“; “); for (let i = 0, len = arr.length; i < len; i++) { var newArr = arr[i].split(“=”); if (newArr[0] === name) { return newArr[1]; } } return null; }

function removeCookie(name) { document.cookie = encodeURIComponent(name) + “=;expires=” + new Date(0); }

```

完成音量键,