python websocket服务器https_Socket与WebSocket以及http与https重新总结

Socket与WebSocket以及http与https重新总结

一.Socket

网络中的Socket是一个抽象的接口 ,而是为了方便使用TCP或UDP而抽象出来的一层 ,可以理解为网络中连接的两端。通常被叫做套接字接口.

二.WebSocket

WebSocket就是其中一种,是为了创建一种双向通信(全双工)的协议 ,来弥补HTTP协议在持久通信能力上的不足

WebSocket连接的过程是:

首先,客户端发起http请求,经过3次握手后,建立起TCP连接;http请求里存放WebSocket支持的版本号等信息,如:Upgrade、Connection、WebSocket-Version等;

然后,服务器收到客户端的握手请求后,同样采用HTTP协议回馈数据;

最后,客户端收到连接成功的消息后,开始借助于TCP传输信道进行全双工通信。

三.总结两者关系

Socket是传输控制层接口,WebSocket是应用层协议。

四.http与https

两者的概念

http协议:是超文本传输协议,信息是明文传输。如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。

https协议:是具有安全性的ssl加密传输协议,为浏览器和服务器之间的通信加密,确保数据传输的安全。

68a42c82c7b49096287e9330a6278837.png

连接方式不同

1、http协议:http的连接很简单,是无状态的。

2、https协议:是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。

端口不同

1、http协议:使用的端口是80。

2、https协议:使用的端口是443.

证书申请方式不同

1、http协议:免费申请。

2、https协议:需要到ca申请证书,一般免费证书很少,需要交费。

五.ssl协议

参考https://www.cnblogs.com/jztan/p/8159086.html

先讲两个概念

对称加密: 加密和解密的秘钥使用的是同一个.

非对称加密: 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)

ssl协议是非对称加密

SSL协议的握手过程

先用语言来阐述下:

第一步:爱丽丝给出支持SSL协议版本号,一个客户端随机数(Client random,请注意这是第一个随机数),客户端支持的加密方法等信息;

第二步:鲍勃收到信息后,确认双方使用的加密方法,并返回数字证书,一个服务器生成的随机数(Server random,注意这是第二个随机数)等信息;

第三步:爱丽丝确认数字证书的有效性,然后生成一个新的随机数(Premaster secret),然后使用数字证书中的公钥,加密这个随机数,发给鲍勃。

第四步:鲍勃使用自己的私钥,获取爱丽丝发来的随机数(即Premaster secret);(第三、四步就是非对称加密的过程了)

第五步:爱丽丝和鲍勃通过约定的加密方法(通常是AES算法),使用前面三个随机数,生成对话密钥,用来加密接下来的通信内容;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443233.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python微博评论爬虫_详解用python写网络爬虫-爬取新浪微博评论 基于Python的新浪微博爬虫研究...

怎样爬取新浪微博的评论信息针对八爪鱼在微博的应用上,除了用户信息之外还包括话题内容方面的采集,目前绝大多数企业均在微博设有官方微博,八爪鱼可以协助企业快速及时的抓取与企业产品相关联的话题信息,规则市场内有配置好的规则…

韩顺平 mysql sqlhelper类_(最全)韩顺平jsp购物车源代码(包含数据库)

【实例简介】韩顺平的jsp购物车项目,所有源码都在,包含数据库,是网络上最全的【实例截图】【核心代码】myshopping└── myshopping├── myshopping│ ├── src│ │ ├── com│ │ │ └── hsp│ │ │ ├── domain│ │ │ │ ├── B…

c#和python更适合爬虫_python在爬虫方面有哪些优势呢?

python是一门非常不错的编程语言,通俗易懂、适合零基础入门,尤其是爬虫领域有着独特的优势,成为了首选编程语言。Python是一种计算机程序设计语言,是一种动态的、面向对象的脚本语言。Python最初被设计用于编写自动化脚本(shell)&…

mysql创建独立表空间_InnoDB独立表空间

在查看MySQL的数据库文件的时候会发现,MyISAM存储引擎类型的表会有三个文件,*.frm,*.MYD,*.MYI,但是InnoDB存储引擎的文件只有一个*.frm,原来是因为InnoDB没有开启独立表空间,执行如下命令可以看到:mysql&g…

python os模块方法_python os模块方法总结

在python中os是一个非常常用的模块,下面是对os中方法的总结(实验为Mac环境)1 . os.name :输出字符串指示使用的平台,windows是nt, linux/unix/mac是posix>>> os.nameposix>>>2 . os.getcwd() :获取当前目录>>> …

java button中文乱码_java解决中文乱码的几种写法

工作中总会遇到中文乱码问题,以导出文件,文件名称是中文的话,下载下来的文件名称会乱码问题,总结了几种解决文件名乱码的写法,仅供参考。首先定义一个汉语字符串String zhName "错误码模板";一、java.net.U…

java jframe添加面板_JFrame添加组件的两种方式

对JFrame添加组件有两种方式:1) 用getContentPane()方法获得JFrame的内容面板,再对其加入组件:frame.getContentPane().add(childCompontent)常分开来写Container containergetContentPanel();(隐式的this.getContentPanel()) ;得到jframe的内…

java 德生读卡器对接程序_德生TSW-F4 社保卡读卡器.rar

【实例简介】德生TSW-F4 社保卡读卡器测试程序以及动态库,出厂自带程序【实例截图】【核心代码】b79d6d98-2fcb-4e20-ab26-8f7aa14b320c└── 德生TSW-F4 社保卡读卡器├── TSW-F4 U系列读写器随机软件_20120907│ ├── Dll│ │ ├── F4.h│ │ ├…

ios 数组越界奔溃库_iOS中防止数组越界之后发生崩溃

在iOS开发中有时会遇到数组越界的问题,从而导致程序崩溃。为了防止程序崩溃,我们就要对数组越界进行处理。通过上网查资料,发现可以通过为数组写一个分类来解决此问题。基本思路:为NSArray写一个防止数组越界的分类。分类中利用ru…

java map与set的区别_Java中的Set,List,Map的区别是什么?

对JAVA的集合的理解是想对于数组数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型)JAVA集合可以存储和操作数目不固定的一组数据。所有的JAVA集合都位于 java。util包中!JAVA集合只能存放引用类型的的数据,不能存放…

java怎么使用泛型_java泛型 7 泛型的基本介绍和使用

现在开始深入学习Java的泛型了,以前一直只是在集合中简单的使用泛型,根本就不明白泛型的原理和作用。泛型在java中,是一个十分重要的特性,所以要好好的研究下。一、泛型的基本概念泛型的定义:泛型是JDK 1.5的一项新特性…

java铝轮_为速度而生 JAVA Fuoco铝合金气动公路

人类在追求速度的历史上一直在不断创新,从两个轮子的自行车,到四个轮字的汽车,再到螺旋桨的飞机,追求速度是人类与生俱来的天性。就如同公路车的用途非常多,综合型公路车、耐力型公路车、爬坡型公路车,但唯…

erlang mysql性能瓶颈,Erlang Mysql:如何防止SQL注入

Im very new to erlang and I need to code something which inserts rows in a MySQL Database.How can I prevent SQL Injections with Erlang? Is there also something like prepared statements in other Languages or how should I do it?Thanks for your replies.解决…

下列哪个不是java的数据类型_下面哪个不是Java基本数据类型?()

采集血标本时,错误的操作是A.血清标本应注入干燥试管B.生化检验标本在空腹时采集试比较脂肪酸β-氧化与生物合成的差异。调节水平衡的激素主要是A.胰岛素 B.甲状旁腺激素 C.血管升压素 D求比50克多5克的数是多少?列式是…

Java jpa 字段限制_Java-JPA:仅更新特定字段

我有同样的问题,正如Deinum先生所指出的,答案是否定的,您不能使用save。 主要问题是Spring Data不知道如何处理null。 是否设置了空值,还是因为需要将其删除而设置了空值?现在从您的问题来看,我认为您也有同…

java excel中删除两列_Java 插入、隐藏/显示、删除Excel行或列

概述操作Excel工作表时,对表格中的行或列数据可执行,包括插入、隐藏、显示、删除等在内的多种操作需求,本文将通过Java代码示例演示每种操作的具体实现方法。文中方法使用了Java Excel类库(Free Spire.XLS for Java 免费版),可通过…

java屏蔽编译告警_java-禁止JAXB生成的类上的编译器警告

这可能是该问题的副本(Avoiding Compiler warnings on code generated by xjc),但是由于我不太了解XJC / JAXB自定义绑定特质,所以我想我可能误解了所提到的问题.我的问题似乎很简单-如何将SuppressWarnings(“ all”)批注添加到生成的JAXB类中?我们的项目有0个警告…

Java中number数字类型的转换_Java下数字类型的转换 (转)

Java下数字类型的转换 (转)[more]作者:家居猫各种数字类型转换成字符串型:String s String.valueOf( value); // 其中 value 为任意一种数字类型。字符串型转换成各种数字类型:String s "169";byte b Byte.parseByte( s );short…

Java0steam_Java学习 - Stream 使用

Java Stream使用这段时间在学数据库和Java,发现Java的Stream实际上和数据库的查询操作非常类似。这里简单介绍Stream的用法,并和Sql Server中的操作联系起来。此文为初学Stream所写,以后对Stream有更深的理解后会重写当我们使用一个流的时候&…

mysql初始化很慢_mysql初始化报错

/var/log/mysql.log 日志报错如上图所示解决方法:SELinux惹的祸通俗的讲就是linux服务器的安全策略解决:临时关闭:setenforce 0永久关闭需要修改配置文件,重启机器:修改/etc/selinux/config 文件将SELINUXenforcing改为…