握手协议

使用 Go 语言创建 WebSocket 服务

不打扰是莪最后的温柔 提交于 2020-04-02 16:31:12
感谢参考原文- http://bjbsair.com/2020-04-01/tech-info/18504.html 今天介绍如何用 Go 语言创建 WebSocket 服务,文章的前两部分简要介绍了 WebSocket 协议以及用 Go 标准库如何创建 WebSocket 服务。第三部分实践环节我们使用了 gorilla/websocket 库帮助我们快速构建 WebSocket 服务,它帮封装了使用 Go 标准库实现 WebSocket 服务相关的基础逻辑,让我们能从繁琐的底层代码中解脱出来,根据业务需求快速构建 WebSocket 服务。 WebSocket介绍 WebSocket 通信协议通过单个 TCP 连接提供全双工通信通道。与 HTTP 相比, WebSocket 不需要你为了获得响应而发送请求。它允许双向数据流,因此您只需等待服务器发送的消息即可。当 Websocket 可用时,它将向您发送一条消息。对于需要连续数据交换的服务(例如即时通讯程序,在线游戏和实时交易系统), WebSocket 是一个很好的解决方案。 WebSocket 连接由浏览器请求,并由服务器响应,然后建立连接,此过程通常称为握手。 WebSocket 中的特殊标头仅需要浏览器与服务器之间的一次握手即可建立连接,该连接将在其整个生命周期内保持活动状态。 WebSocket 解决了许多实时 Web

图解SSL/TLS协议

拟墨画扇 提交于 2020-03-20 14:03:26
我看了CloudFlare的说明( 这里 和 这里 ),突然意识到这是绝好的例子,可以用来说明SSL/TLS协议的运行机制。它配有插图,很容易看懂。 下面,我就用这些图片作为例子,配合我半年前写的 《SSL/TLS协议运行机制的概述》 ,来解释SSL协议。 一、SSL协议的握手过程 开始加密通信之前,客户端和服务器首先必须建立连接和交换参数,这个过程叫做握手(handshake)。 假定客户端叫做爱丽丝,服务器叫做鲍勃,整个握手过程可以用下图说明(点击看大图)。 握手阶段分成五步。 第一步,爱丽丝给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。 第二步,鲍勃确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数(Server random)。 第三步,爱丽丝确认数字证书有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥,加密这个随机数,发给鲍勃。 第四步,鲍勃使用自己的私钥,获取爱丽丝发来的随机数(即Premaster secret)。 第五步,爱丽丝和鲍勃根据约定的加密方法,使用前面的三个随机数,生成"对话密钥"(session key),用来加密接下来的整个对话过程。 上面的五步,画成一张图,就是下面这样。 二、私钥的作用 握手阶段有三点需要注意。 (1

RS232,RS422,RS485接口的区别

≡放荡痞女 提交于 2020-03-18 14:43:43
1,什么是串口? 2,什么是RS-232? 3,什么是RS-422? 4,什么是RS-485? 5,什么是握手? 1,什么是串口? 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个基于 RS232 的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS- 232口。同时,串口通信协议也可以用于获取远程采集设备的数据。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。 典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配: a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit

【HTTPS】TLS/SSL握手失败的场景分析

喜欢而已 提交于 2020-03-12 13:33:56
0.背景知识 TLS/SSL握手的过程参考 SSL握手过程图解 1.常见报错 1.1 SSLHandshakeException handshake_failure 1.1.1 TLS/SSL协议版本不匹配 自从TLS 1.2版本在2008年发布以来,服务器处于安全性考虑通常也只支持较高版本TLS,比如 TLS1.2 及以上,如果这些客户端用低版本TLS/SSL向服务器发起握手,会因为服务器不支持而直接失败。 如JDK1.6就是用TLS1.0,访问使用 TLS1.2 的服务端就会报错,可以升级JDK1.8,默认使用1.2 1.1.2 cipher suite加密算法套件不匹配 服务器出于安全性考虑通常只会支持安全性较高的cipher,所以当客户端发过去的cipher suite安全性都比较低时会造成协商握手失败。 具体解决请戳 1.2 证书问题 1.2.1.客户端Bad Certificate 双向认证,不仅客户端要验证服务器证书,服务器也需要验证 客户端证书 。在服务器验证客户端证书的过程中,由于客户端证书证书链校验不通过,可能会直接产生Fatal Alert,导致握手直接中断。 解决方案:使用著名CA签发(如CFCA等)的客户端证书,如果可联系服务端开发可直接将自己的客户端证书放置在其信任列表汇总。 1.2.2 服务端 Certificate Validation

tcpdump抓包问题

岁酱吖の 提交于 2020-03-11 02:44:50
使用tcpdump抓取某个IP地址的包来分析TCPIP协议的握手过程, sudo tcpdump i 7 "tcp[tcpflags] != 0 and host 127.0.0.1" -c 3 也就是前三个包,发现TCP的Flags的标记位为Flags[.],这个Flags[.]中的点就代表ACK标记为1. 来源: CSDN 作者: GJQI12 链接: https://blog.csdn.net/GJQI12/article/details/104747682

websocket协议握手详解

孤街浪徒 提交于 2020-03-10 16:21:36
最近使用tornado做长链接想着怎么着也要试试websocket协议吧。所以说干就干。 首先要知道websocket是基于http协议的,为什么这么说?因为从协议来说,websocket是借用了一部分为http请求头信息来进行验证和请求的的。 让我们来看一个标准的websocket请求头: --- request header --- GET /chat HTTP/1.1 Upgrade: websocket Connection: Upgrade Host: 127.0.0.1:8001 Origin: http://127.0.0.1:8001 Sec-WebSocket-Key: hj0eNqbhE/A0GkBXDRrYYw== Sec-WebSocket-Version: 13 可以看到使用http1.1 协议上面是标准的http的请求信息 method url http_protocol_versions Host Connection 但是熟悉http的小伙伴可以明显看出这里多出了一些信息。用于实现协议升级 Upgrade: websocket Connection: Upgradeorigin:xxxx Sec-WebSocket-Key: hj0eNqbhE/A0GkBXDRrYYw== Sec-WebSocket-Version: 13 upgrade

WPA2密钥重装攻击原理分析

ε祈祈猫儿з 提交于 2020-03-08 07:12:40
这两天最火爆的莫过 “WPA2被破解” 这一条大新闻了。我对其原理非常感兴趣,苦于没有找到的文献,所以就整理这么一篇,方便自己和大家理解。主要是根据目前发布的 文章 以及一些相关资料。 壹、WPA2的机制 无线通信协议有很多,例如WEP,WPA等都已经被证明不安全,还有TKIP机制也有大量文献说明其缺陷。WPA2协议是WIFI联盟一直力推的协议,被广泛运用在现在的无线互联网络当中;CCMP(Counter Mode CBC-MAC Protocol )我之前也被推行过很长一段时间,现在有新的GCMP,不过都是基于计数器CTR的,都类似。我下面会以WPA2和CCMP为例解释此次事件。 在WPA2中运用了丰富的密码手段,原因是无线信道的开放性必须有加密措施来保证传输过程的安全。握手协议则是通信双方互相进行一个身份确认的过程。WPA2的四次握手协议是EAPOL(EAP on LAN,即 Extensible Authentication Protocol on LAN)的四次握手协议的落地,,所有的数据包都是使用EAPOL帧进行封装的,EAPOL数据帧的格式可以参考下图: 图1:EAPOL帧结构,来源Mathy Vanhoef团队论文( https://papers.mathyvanhoef.com/ccs2017.pdf ) 关于EAP协议:之前在西电上课刚接触到的时候就理解了好一会

SSL协议详解

好久不见. 提交于 2020-03-04 11:05:15
   背景介绍   最近在看《密码学与网络安全》相关的书籍,这篇文章主要详细介绍一下著名的网络安全协议SSL。   在开始SSl介绍之前,先给大家介绍几个密码学的概念和相关的知识。   1、密码学的相关概念 密码学(cryptography):目的是通过将信息编码使其不可读,从而达到安全性。 明文(plain text):发送人、接受人和任何访问消息的人都能理解的消息。 密文(cipher text):明文消息经过某种编码后,得到密文消息。 加密(encryption):将明文消息变成密文消息。 解密(decryption):将密文消息变成明文消息。 算法:取一个输入文本,产生一个输出文本。 加密算法:发送方进行加密的算法。 解密算法:接收方进行解密的算法。 密钥(key):只有发送方和接收方理解的消息 对称密钥加密(Symmetric Key Cryptography):加密与解密使用相同密钥。 非对称密钥加密(Asymmetric Key Cryptography):加密与解密使用不同密钥。   2、相关的加密算法介绍   DES算法即数据加密标准,也称为数据加密算法。加密过程如下:   在SSL中会用到分组DES、三重DES算法等加密算法对数据进行加密。当然可以选用其他非DES加密算法,视情况而定,后面会详细介绍。   3、密钥交换算法   使用对称加密算法时

TCP协议---三次握手和四次挥手详解 (不看后悔系列)

北城以北 提交于 2020-03-02 10:29:45
一、TCP协议简介 TCP,全称Transfer Control Protocol,中文名为传输控制协议,它工作在OSI的传输层,提供面向连接的可靠传输服务。是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 [1] 定义。 TCP的工作主要是建立连接,然后从应用层程序中接收数据并进行传输。TCP采用虚电路连接方式进行工作,在发送数据前它需要在发送方和接收方建立一个连接,数据在发送出去后,发送方会等待接收方给出一个确认性的应答,否则发送方将认为此数据丢失,并重新发送此数据。 工 作:与IP协议共同使用 下面我们来介绍一下TCP的报头结构和相关工作原理: TCP报头 TCP报头总长最小为20个字节,其报头结构如下图(图1)所示; 源端口:指定了发送端的端口 目的端口:指定了接受端的端口号 序号:指明了段在即将传输的段序列中的位置 确认号:规定成功收到段的序列号,确认序号包含发送确认的一端所期望收到的下一个序号 TCP偏移量:指定了段头的长度。段头的长度取决与段头选项字段中设置的选项 保留:指定了一个保留字段,以备将来使用 标志:SYN、ACK、PSH、RST、URG、FIN SYN: 表示同步 ACK: 表示确认 PSH: 表示尽快的将数据送往接收进程 RST: 表示复位连接 URG: 表示紧急指针 FIN: 表示发送方完成数据发送 窗口

HTTPS中TLS/SSL的握手过程

半城伤御伤魂 提交于 2020-02-27 09:05:09
1,非对称加密技术 非对称加密算法需要两个密钥,公开密钥(publickey)和私有密钥(privatekey);公钥和私钥是成对出现的。 非对称加密例子:B想把一段信息传给A,步骤:1)A把公钥传给B;2)B拿到A的公钥并利用此密钥给信息加密;3)B把加密的信息传给A;4)A利用私有密钥对加密信息进行解密即可得到B想给自己的信息。 (这个过程叫做密码传输,即B把信息加密后传给A) 问题:如果有个捣乱的冒充B,也用A的公钥给一段信息加密,并传给A,A再私钥解密得到的信息就会误认为是B的。 要解决此问题,B需要给A传个验证信息,让A可以验证自己受到的信息是B传的。该验证信息即下面的数字摘要(数字指纹) 2,数字摘要技术 该技术主要利用了哈希函数的两个特性:1)单向性;2)计算结果位数固定 数字摘要是采用单向Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文,这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。“数字摘要“是https能确保数据完整性和防篡改的根本原因。 3,数字签名技术 数字签名技术既利用了数字摘要(数字指纹)技术也利用了非对称加解密技术 。 数字签名过程 :1)B利用哈希函数得到上面传输信息的哈希值;2)B利用私钥给哈希值加密(注意:这里的非对称加密(私钥加密,公钥解密