握手协议

WebSocket

ぃ、小莉子 提交于 2019-12-16 19:20:04
一 . WebSocket原理   1.1.背景 WebSocket 是基于Http 协议的改进,Http 为无状态协议,基于短连接,需要频繁的发起请求,第二 Http 只能客户端发起请求,服务端无法主动请求。   1.2.相同点 1.都是基于TCP的应用层协议。 2.都使用Request/Response模型进行连接的建立。 3.在连接的建立过程中对错误的处理方式相同,在这个阶段WS可能返回和HTTP相同的返回码。 4.都可以在网络中传输数据。   1.3.不同点 1.WS使用HTTP来建立连接,但是定义了一系列新的header域,这些域在HTTP中并不会使用。 2.WS的连接不能通过中间人来转发,它必须是一个直接连接。 3.WS连接建立之后,通信双方都可以在任何时刻向另一方发送数据。 4.WS连接建立之后,数据的传输使用帧来传递,不再需要Request消息。 5.WS的数据帧有序。 6.WebSocket 分为握手和数据传输   1.4.WebSocket的握手 客户端的握手如下: GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Origin: http://example

SSL与TLS的区别以及介绍

旧街凉风 提交于 2019-12-11 23:15:13
作者: hengstart 发布时间: 2014-01-05 13:09 阅读: 131133 次 推荐: 30 原文链接 [收藏]   SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。   TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS记录协议和TLS握手协议。   SSL是Netscape开发的专门用户保护Web通讯的,目前版本为3.0。最新版本的TLS 1.0是IETF(工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本。两者差别极小,可以理解为SSL 3.1,它是写入了RFC的。   SSL (Secure Socket Layer)   为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取。目前一般通用之规格为40 bit之安全标准,美国则已推出128 bit之更高安全标准,但限制出境。只要3.0版本以上之I

Python如何爬取实时变化的WebSocket数据【华为云技术分享】

别来无恙 提交于 2019-12-10 13:47:19
一、前言 作为一名爬虫工程师,在工作中常常会遇到爬取实时数据的需求,比如体育赛事实时数据、股市实时数据或币圈实时变化的数据。如下图: Web 领域中,用于实现数据'实时'更新的手段有轮询和 WebSocket 这两种。轮询指的是客户端按照一定时间间隔(如 1 秒)访问服务端接口,从而达到 '实时' 的效果,虽然看起来数据像是实时更新的,但实际上它有一定的时间间隔,并不是真正的实时更新。轮询通常采用 拉 模式,由客户端主动从服务端拉取数据。 WebSocket 采用的是 推 模式,由服务端主动将数据推送给客户端,这种方式是真正的实时更新。 二、什么是 WebSocket WebSocket是一种在单个TCP连接上进行全双工通信的协议。它使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 WebSocket 优点 较少的控制开销:只需要进行一次握手,携带一次请求头信息即可,后续只传输数据即可,相比 HTTP 每次请求都携带请求头,WebSocket 非常省资源。 更强的实时性:由于服务器可以主动推送消息,这使得延迟变得可以忽略不计,相比 HTTP 轮询的时间间隔,WebSocket 可以在相同的时间内进行多次传输。 二进制支持

TCP连接的状态详解以及故障排查

一个人想着一个人 提交于 2019-12-10 05:27:52
TCP状态 linux查看tcp的状态命令 netstat -nat 查看TCP各个状态的数量 lsof -i:port 可以检测到打开套接字的状况 sar -n SOCK 查看TCP创建的连接数 tcpdump -iany tcp port 9000 对TCP端口9000的进行抓包 网络测试常用命令 1)ping: 检测网络连接的正常与否,主要是测试延时、抖动、丢包率。但是很多服务器为了防止攻击,一般会关闭对ping的相应。so一般作为测试连接通性使用。 ping后会接收到对方发送的回馈信息,其中记录着对方IP和TTL(该字段指定IP被路由器丢弃之前允许通过的最大网段数量)。 TTL是IPv4包头中一个8bit字段,例如IP包在服务器中发送前设置的TTL是64,使用ping后,得到服务器反馈信息,其中TTL为56,说明途中一共经过8道路由器转发,每经过一个路由TTL就减1. 2)traceroute hostname :raceroute跟踪数据包到达网络主机所经过的路由工具 3)pathping www.baidu.com :路由跟踪工具,将 ping 和 tracert 结合二者的 功能 4)mtr : 以结合ping nslookup tracert来判断网络的相关特性 5)nslookup:用于解析域名,一般用来检测本机的DNS设置是否正确 LISTENING

WebSocket使用教程

▼魔方 西西 提交于 2019-12-10 04:24:12
什么是WebSocket?看过html5的同学都知道,WebSocket protocol 是HTML5一种新的协议。它是实现了浏览器与服务器全双工通信(full-duplex)。HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽并达到实时通讯。现在我们来探讨一下html5的WebSocket 概念 HTML5作为下一代WEB标准,拥有许多引人注目的新特性,如Canvas、本地存储、多媒体编程接口、WebSocket 等等。今天我们就来看看具有“Web TCP”之称的WebSocket. WebSocket的出现是基于Web应用的实时性需要而产生的。这种实时的Web应用大家应该不陌生,在生活中都应该用到过,比如新浪微博的评论、私信的通知,腾讯的WebQQ等。让我们来回顾下实时 Web 应用的窘境吧。 在WebSocket出现之前,一般通过两种方式来实现Web实时用:轮询机制和流技术;其中轮询有不同的轮询,还有一种叫Comet的长轮询。 轮询:这是最早的一种实现实时 Web 应用的方案。客户端以一定的时间间隔向服务端发出请求,以频繁请求的方式来保持客户端和服务器端的同步。这种同步方案的缺点是,当客户端以固定频率向服务 器发起请求的时候,服务器端的数据可能并没有更新,这样会带来很多无谓的网络传输,所以这是一种非常低效的实时方案。 长轮询:是对定时轮询的改进和提高

https是如何防劫持的

时光总嘲笑我的痴心妄想 提交于 2019-12-06 16:46:44
在 HTTP 里,一切都是明文传输的,流量在途中可随心所欲的被控制。而在线使用的 WebApp,流量里既有通信数据,又有程序的界面和代码,劫持简直轻而易举。 HTTPS 虽然不是绝对安全,但运营商要想劫持也不是这么简单的事情。 下面我们来聊一聊 HTTPS 如何做到防劫持。 SSL握手 先来看看 HTTPS 建立连接的过程,相比 HTTP 的三次握手, HTTPS 在三次握手之后多了 SSL 握手。如下图: SSL握手 整个流程大概如下: 1.浏览器将自己支持的一套加密规则发送给网站。 2.网站部署了一组SSL秘钥,分私钥和秘钥。 3.网站从浏览器的加密规则中选出一组加密算法与HASH算法,并将自己的身份信息(公钥)以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。 4.获得网站证书之后浏览器要做以下工作: a) 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。 b) 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。 c) 使用约定好的HASH计算握手消息,并使用生成的随机数对消息进行加密。这个加密过程是非对称加密,即公钥加密,私钥解密。私钥只在网站服务器上存储

linux内核参数sysctl.conf,TCP握手ack,洪水攻击syn,超时关闭wait;

强颜欢笑 提交于 2019-12-06 14:36:38
题记:优化Linux内核sysctl.conf参数来提高服务器并发处理能力 PS:在服务器硬件资源额定有限的情况下,最大的压榨服务器的性能,提高服务器的并发处理能力,是很多运维技术人员思考的问题。要提高Linux系统下的负载能力,可以使用nginx等原生并发处理能力就很强的web服务器,如果使用Apache的可以启用其Worker模式,来提高其并发处理能力。除此之外,在考虑节省成本的情况下,可以修改Linux的内核相关TCP参数,来最大的提高服务器性能。当然,最基础的提高负载问题,还是升级服务器硬件了,这是最根本的。 Linux系统下,TCP连接断开后,会以TIME_WAIT状态保留一定的时间,然后才会释放端口。当并发请求过多的时候,就会产生大量的TIME_WAIT状态的连接,无法及时断开的话,会占用大量的端口资源和服务器资源。这个时候我们可以优化TCP的内核参数,来及时将TIME_WAIT状态的端口清理掉。 本文介绍的方法只对拥有大量TIME_WAIT状态的连接导致系统资源消耗有效,如果不是这种情况下,效果可能不明显。可以使用netstat命令去查TIME_WAIT状态的连接状态,输入下面的组合命令,查看当前TCP连接的状态和对应的连接数量: #netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’

【网络知识之五】TCP

吃可爱长大的小学妹 提交于 2019-12-06 12:16:29
TCP协议:传输控制协议。 一、TCP保证可靠性的机制 1、校验和 TCP报头有16位检验和: 由发送端填充, 检验形式有CRC校验等. 如果接收端校验不通过, 则认为数据有问题. 此处的校验和不光包含TCP首部, 也包含TCP数据部分. 2、序列号(按序到达) 序列号:TCP将每个字节的数据都进行了编号, 即为序列号。 3、确认应答 每一个ACK都带有对应的确认序列号, 意思是告诉发送者, 我已经收到了哪些数据,下一次你要从哪里开始发. 比如, 客户端向服务器发送了1005字节的数据, 服务器返回给客户端的确认序号是1003, 那么说明服务器只收到了1-1002的数据,1003, 1004, 1005都没收到.此时客户端就会从1003开始重发. 4、超时重传 两种场景: (a)客户端发给服务端时失败:客户端在一个特定时间间隔内没有收到服务端发来的确认应答, 就会进行重发; (b)服务端返回客户端确认失败:服务端可能会收到很多重复数据,通过序列号区分重复数据并且把重复的丢弃; 5、连接管理 5.1 建立连接-三次握手: 三次握手状态变化: 客户端发送SYN包给服务器,客户端进入SYN-SEND状态:CLOSED-->SYN-SEND; 服务器收到SYN包后将建立连接的SYN包和应答包一起发送给客户端,并且进入SYN-RCVD状态:LISTEN-->SYN-RCVD;

学习笔记:TCP握手及抓包

浪尽此生 提交于 2019-12-06 09:16:39
学习笔记:TCP握手及抓包 1.基础认识 TCP: 属于面向连接服务 每次发送数据前先建立TCP连接,传输数据完毕再断开连接 TCP包头字段: 序号:Seq ,为每个数据进行唯一编号 确认号:ACK,对每个报文进行确认,确认方式采用seq+1 首部长度:20-60字节 控制位: URG:紧急位:代表应用层有紧急数据,配合紧急指针使用 ACK:确认位,为0时代表不确认,为1,代表确认信息,ack有效 PSH:推送位:为1代表需要向应用层推送数据,为0代表不需要 RST:重置位:代表请求强制断开 SYN: 请求建立连接位 FIN:请求断开连接位 窗口大小:流量控制 校验和:校验四五层 思考:什么是SYN半连接?SYN flooding(泛洪攻击)攻击使用什么原理,如何实现的?如何防御?(后接详细介绍) 基于TCP的协议: HTTP HTTPS FTP DNS Telnet SSH SMTP POP3 SERVER 80 443 20/21 53 23 22 25 110 445 UDP协议: 1.无连接服务,不可靠 2.花费的开销小,传输效率比TCP高 基于UDP的协议: DNS TFTP SERVER DHCP 53 69 445 67/68 2.TCP连接 TCP建立连接的过程称为三次握手 TCP断开连接的四次握手 来源: CSDN 作者: 路慢修远兮 链接: https:/

TCP 三次握手与四次握手

☆樱花仙子☆ 提交于 2019-12-06 05:47:35
TCP是什么 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、 基于IP的传输层协议。 TCP有6种标示:SYN(建立联机) ACK(确认) PSH(传送) FIN(结束) RST(重置) URG(紧急) TCP的三次握手 第一次握手:客户端向服务器发送请求报文,这时报文首部中的同部位SYN=1,并生成一个随机序列值seq=n。客户端进入syn-sent(同步已发送)状态,等待服务器确认 第二次握手:TCP服务器收到请求报文后,如果同意连接,则发出确认报文。确认报文中应该 ACK=1,SYN=1,确认号ACK=n+1,同时自己也随机生成一个seq=m,此时服务器进入SYN-RCVD(同步收到)状态。 第三次握手:TCP客户端进程收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=m+1, TCP的三次握手抓包 使用nc -l localhost 8088 监听8088端口 客户端使用nc -v localhost 8088 连接8088端口 再开个终端使用 tcpdump -i lo -vv -nnn tcp port 8088 抓包8088 端口tcp连接 抓包数据 为什么需要三次握手 端口 client发送了一个请求连接的报文,但是网络不好,这个请求没有立即达到服务端