解说http,https,websocket三者协议以及关系

最近一直在折腾websocket,折腾来折腾去各种的问题,现在记录一下,以备自己以后的之需,

http

什么是http
  Hyper Text Transfer Protocol 超文本传输协议
  建立在TCP上无状态的连接
  客户端发送一个HTTP请求到服务器,服务器接收后开始处理请求并根据
  请求访问服务器资源,最后通过HTTP响应把结果返回给客户端

http请求
  状态行  请求方式Method(get/post/put/delete)、资源路径URL、
       协议版本Version
  请求头  访问的域名、用户代理、Cookie等信息
  请求正文 HTTP请求的数据

http响应
  状态行  协议版本Version、状态码Status Code、回应短语
  响应头  搭建服务器的软件,发送响应的时间,回应数据的格式等信息
  响应正文 响应的具体数据
       状态码
        1xx 请求已接收继续处理请求
        2xx 请求已经处理完成(200--请求正常处理完成)
        3xx 请求访问的URL重定向到其他目录
          301--请求永久重定向;
          302--请求临时重定向;
          304--请求被重定向到客户端本地缓存
        4xx 客户端出现错误
          400--客户端请求存在语法错误;
          401--请求没经过授权;
          403--请求被服务器端拒绝,客户端无访问权限;
          404--URL在服务端不存在
        5xx 服务端出现错误
          500--服务端永久错误;503--服务端发生临时错误
  响应模式
    单进程I/O模型   一进程仅处理一个请求,对请求顺序处理
    多进程I/O模型   多进程,同事处理多个请求
    复用I/O模型    一个进程多个线程,一个线程响应一个请求,
             可以达到同时处理多个请求,线程并发执行
    复用多线程I/O模型 多个进程多个线程

https

什么是https
http的安全版,http下加入SSL层,https安全基础是SSL,加密的详细内容需要SSL

主要作用
1.建立一个信息安全通道,保证数据传输的安全
2.确认网站的真实性

原理、步骤
客户端使用https的url访问web服务器,要求与服务器建立SSL连接
服务器收到客户端请求后,会将网站的证书信息(证书包含公钥)传送一份给客户端
客户端的浏览器和服务器开始协商SSL连接的安全等级,即信息加密等级
客户端的里浏览器根据双方同意的安全等级建立会话秘钥,利用网站公钥将会话秘钥加密并传送给网站
web服务器利用自己的私钥解密出会话的秘钥
服务器利用会话秘钥加密与客户端之间的通信

优点
可认证用户和服务器,确保数据 发送到正确 的客户机和服务器
防止数据在传输过程中不被窃取改变 保证数据的完整性
虽不是绝对安全的,但大幅度 增加了中间人的成本
比起同等http网站,采用https加密的网站在 搜索 结果中 排名会更高

缺点
握手阶段较 费时,使页面加载时间延长50%,增加10%到20%的耗电
https连接缓存  如http 高效,增加数据开销和功耗,已有的安全措施也会因此受到影响
SSL证书 需要钱,功能越强证书费用越高,个人网站小网站没必要一般不会用
SSL证书 需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗
加密范围有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用

websocket

什么是websocket
是一种网络通信协议,与http没有关系,是http的一种补充
HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议

为什么用Websocket
http协议是一种无状态、无连接、单向的应用层协议
请求/响应模型。只能由客户端发起请求,服务端对请求做出应答处理
HTTP协议无法实现服务器主动向客户端发起信息
websocket允许客户端和服务器之间进行全双工通信,任何一方都可以通过建立的连接将数据推送到另一端。
只需要建立一次连接就可以一直保持连接状态,比轮询方式效率高

客户端使用
var Socket = new WebSocket(url,[protocol]);

属性
Socket.readyState
连接状态
0:尚未建立;
1:建立,可以进行通信;
2:连接正在关闭;
3:连接已经关闭或者连接不能打开
Socket.bufferedAmount
已被send()放入正在队列中等待传输,但是还没有发出的UTF-8文本字节数

事件
Socket.onopen  连接建立时触发
Socket.onmessage 客户端接收服务端数据时触发
Socket.onerror  通信发生错误时触发
Socket.onclose  连接关闭时触发

方法
Socket.send()  使用连接发送数据
Socket.close()  关闭连接

var ws = new WebSocket("ws://localhost:9998/echo");
ws.onopen = function () {                            // 使用 send() 方法发送数据  
  ws.send("发送数据");
  alert("数据发送中...");
};
ws.onmessage = function (evt) {                     // 接收服务端数据时触发事件
  var received_msg = evt.data;
  alert("数据已接收...");
};
ws.onclose = function () {                            // 断开 web socket 连接成功触发事件
  alert("连接已关闭...");
};

所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!

更多请关注:老梁`s Blog

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。 您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可->联系老梁投诉资源
Laoliang.Net资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:service@laoliang.net
老梁`s Blog(老梁博客) » 解说http,https,websocket三者协议以及关系

发表评论

本站承接,网站推广(SEM,SEO),软件的安装的安装与调试,服务器的推荐以及配置,APP的开发与维护,网络或者web维护;财务软件,客户管理系统,人力资源,超市POS,医药管理,服务器安全,ecshop,金蝶,用友,管家婆;

立即查看 了解详情