首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

前端也需要了解通信协议

IP 地址; 2.建立TCP连接(三次握手); 3.浏览器发出读取文件(URL 中域名后面部分对应文件)HTTP 请求,该请求报文作为 TCP 三次握手第三个报文数据发送给服务器; 4.服务器对浏览器请求作出响应...,使用三次握手协议建立连接。...首部压缩 HTTP 2.0 在客户端和服务器端使用“首部表”来跟踪和存储之前发送键-值对,对于相同数据,不再通过每次请求和响应发送;通信期间几乎不会改变通用键-值对(用户代理、可接受媒体类型,等等...所以应充分利用两者各自优势,将多种方法组合起来用于通信。在交换密钥环节使用公开密钥加密方式,之后建立通信交换报文阶段则使用共享密钥加密方式。...在取得服务器响应后,建立连接会将HTTP升级从HTTP协议交换为WebSocket协议。 webSocket原理:在TCP连接第一次握手时候,升级为ws协议。后面的数据交互都复用这个TCP通道。

1.1K10

你需要知道http协议

服务器无法处理请求 5XX 服务器错误状态码 服务器处理请求出错 2. 2XX成功 200: OK:正常处理 204: No Content,服务器接受请求成功处理,但返回但响应报文不包含主体部分...首部字段分类 通用首部字段:请求和响应使用字段 请求首部字段:客户端信息,请求附加信息等 响应首部字段:响应附加信息 实体首部字段:请求和响应实体部分使用字段 3....使用ssl时,http先和ssl通信,再由ssl和tcp通信 3.2 常用加密方式 共享密钥加密 也叫对称密钥加密,加密和解密用同一个密钥 缺点:无法安全密钥发送给接收方 公开密钥加密 使用一对非对称密钥...不仅连接开销小,且首部信息很少,减少通信量 4. websocket通信机制 在http建立连接后,需要完成一次“握手”步骤 附加头信息中添加"Upgrade: WebSocket",表明这是一个申请协议升级...HTTP 请求 Sec-WebSocket-Key:记录握手过程中键值 Sec-WebSocket-Protocol:记录使用子协议 参考文献 《图解http》

66551
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    为什么我们要熟悉这些通信协议?

    使用三次握手协议建立连接。...首部压缩 HTTP 2.0 在客户端和服务器端使用“首部表”来跟踪和存储之前发送键-值对,对于相同数据,不再通过每次请求和响应发送;通信期间几乎不会改变通用键-值对(用户代理、可接受媒体类型,等等...所以应充分利用两者各自优势,将多种方法组合起来用于通信。在交换密钥环节使用公开密钥加密方式,之后建立通信交换报文阶段则使用共享密钥加密方式。...所谓响应头,请求头,其实都可以自己添加字段,只要前后端给对应处理机制即可 Node.js代码实现响应设置 if (config.cache.expires) {...在取得服务器响应后,建立连接会将HTTP升级从HTTP协议交换为WebSocket协议。 webSocket原理: 在TCP连接第一次握手时候,升级为ws协议。

    98841

    深入探索WebSockets

    引用RFC: 此协议未规定服务器在WebSocket握手期间可以对客户端进行身份验证任何特定方式。...响应。 “状态行”告诉客户端HTTP状态代码(如果没有问题,通常为200),并提供解释状态代码简短“原因”文本描述。...响应时,服务器必须将特殊GUID值258EAFA5-E914-47DA-95CA-C5AB0DC85B11附加到密钥,生成结果字符串SHA-1哈希值,然后将其包含为Secbase-64编码值。...要完成握手,请将适当HTTP响应头写入客户端套接字。...必须单独实现对不同子协议或消息传递通道等附加功能支持。 生成和解析WebSocket消息帧 一旦将握手响应发送到客户端,客户端和服务器就可以使用他们选择子协议(如果有的话)开始通信。

    1.3K20

    面试官问了一下三次握手,我甩出这张脑图,他服了!

    每当其他任何通信使用HTTPS(包括API调用和HTTPS查询上 DNS)时,也会发生TLS握手。 通过 TCP 握手打开 TCP 连接后,会发生TLS 握手。 TLS 握手期间会发生什么? ?...通过服务器公钥和 SSL 证书颁发机构数字签名来验证服务器身份 握手完成后,生成会话密钥使用对称加密 加密套件决定握手方式:: 摘自:《HTTPS 篇之 SSL 握手过程详解》[1] 在TLS中有两种主要握手类型...握手完成,后续通过主密钥加解密。 只有加密套件,讲解的话需要有抓包基础。改天,改天我一定讲。。。 ? 4. WebSocket握手 ? WebSocket协议实现起来相对简单。...它使用HTTP协议进行初始握手。成功握手之后,就建立了连接,WebSocket基本上使用原始 TCP 读取/写入数据。 《图解HTTP》一书中图讲比较清楚: ?...: 13 Origin: http://example.com 服务端响应: HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection

    1.4K60

    记录一次迁移wss WebSocket事故

    WebSocket   简单来说,WebSocket减少了客户端与服务器端建立连接次数,减轻了服务器资源开销,只需要完成一次HTTP握手。...response code: 400   看到这个错误信息后,确定这是服务端返回400响应。...WebSocket 和 HTTP 是两种不同协议,但是 WebSocket握手和 HTTP 中握手兼容,它使用 HTTP 中 Upgrade 协议头将连接从 HTTP 升级到 WebSocket...所以,当 Nginx 代理服务器拦截到一个客户端发来 Upgrade 请求时,需要我们显式配置Connection、Upgrade头信息,并使用 101(交换协议)返回响应,在客户端、代理服务器和后端应用服务之间建立隧道来支持...使用Ping、Pong解决方法有额外好处,如:可以发现连接是否被意外关闭等。

    4.3K10

    【面试题】HTTP知识点整理(附答案)

    ,HTTP1.1请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会400错误 HTTP2.0和HTTP1.X相比新特性 HTTP1.x存在问题: TCP连接数限制 对于同一个域名...以发送密钥就有被窃听风险,但不发送,对方就不能解密。 公开密钥加密(非对称加密):使用一对非对称密钥。一把叫做私有密钥,另一把叫做公开密钥加密。...可以解决共享密钥加密问题:发送密文一方使用对方公开密钥进行加密处理,对方收到被加密信息后,再使用自己私有密钥进行解密。...在交换密钥环节使用公开密钥加密方式,之后建立通信交换报文阶段则使用共享密钥加密方式 认证:证明公开密钥正确性证书 使用数字证书认证机构(CA)和其他相关机关颁发公开密钥证书 三次握手,四次挥手,为什么是三次和四次...webSocket传输数据包相对于http而言很小,很适合移动端使用 没有同源限制,可以跨域共享资源 WebSocket 教程[7] Ajax, Fetch, Axios ajax const xhr

    1.4K30

    《透视http协议》笔记

    “403 Forbidden”实际上不是客户端请求出错,而是表示服务器禁止访问资源。...权重最大值是 1,最小值是 0.01,默认值是 1,如果值是0就表示拒绝具体形式是在数据类型或语言代码后面加一个“;”,然后是“q=value” 例如下面的 Accept 字段:它表示浏览器最希望使用是...WebSocket 没有使用 TCP “IP 地址 + 端口号”,而是使用兼容 HTTP URI 来发现服务,但定义了新协议名“ws”和“wss”,端口号也沿用了 80 和 443 WebSocket...使用二进制帧,结构比较简单,特殊地方是有个“掩码”操作,客户端发数据必须掩码,服务器则不用 WebSocket 利用 HTTP 协议实现连接握手,发送 GET 请求要求“协议升级”,握手过程中有个非常简单认证机制...“意外”识别成 WebSocket握手消息还增加了两个额外认证用头字段(所谓“挑战”,Challenge) Sec-WebSocket-Key:一个 Base64 编码 16 字节随机数,作为简单认证密钥

    47820

    跟我一起探索HTTP-协议升级机制

    在发送 101 状态码之后,服务器可以使用新协议,并根据需要执行任何额外特定于协议握手。实际上,一旦这次升级完成了,连接就变成了双向管道。并且可以通过新协议完成启动升级请求。...当不安全(HTTP)客户端希望升级时,可以使用该标头,以提供一定程度防止滥用保护。密钥值是使用 WebSocket 规范中定义算法计算,因此不提供安全性。...该标头由选择使用客户端自动添加;它不能使用 XMLHttpRequest.setRequestHeader() 方法添加。 Sec-WebSocket-Key: key key此请求升级密钥。...如果客户端愿意,则添加它,服务器将在响应中包含一个自己密钥,客户端将在向你发送升级响应之前验证该密钥。 服务器响应 Sec-WebSocket-Accept 标头将基于指定 key 计算值。...仅响应标头 来自服务器响应可能包含这些。 Sec-WebSocket-Accept 当服务器愿意发起 WebSocket 连接时,其包含在打开握手过程中来自服务器响应消息中。

    28920

    那些年与面试官交手过HTTP问题

    从淡黄长裙和蓬松头发我察觉到,面前坐着这位女面试官属实是有点东西。我自我介绍也变得声情并茂起来。Skr~~~ 在此期间,小姐姐面无改色看着我简历。不过无所谓,这些都不重要。...ECDHE 算法利用了椭圆曲线和离散对数等思想,按照当下计算机算力,很难在短时间进行破解。且每次握手时生成都是一对临时公钥和私钥,这样就保证每次密钥对也不同。...虽然可以使用轮询来不停向服务器发送 HTTP 请求,但是缺点也很大,反复无效请求占用了大量带宽和 CPU 资源。所以,WebSocket 应运而生。...精确度更高),需要预先在服务端响应报文里设置,配合条件请求使用。...202 Accepted:服务器接受并开始处理请求,但请求未处理完成 206 Partial Content:使用range协议时返回部分响应内容时响应码 3xx 请查阅上文重定向部分,这里不再赘述

    40330

    那些年与面试官交手过HTTP问题

    从淡黄长裙和蓬松头发我察觉到,面前坐着这位女面试官属实是有点东西。我自我介绍也变得声情并茂起来。Skr~~~ 在此期间,小姐姐面无改色看着我简历。不过无所谓,这些都不重要。...ECDHE 算法利用了椭圆曲线和离散对数等思想,按照当下计算机算力,很难在短时间进行破解。且每次握手时生成都是一对临时公钥和私钥,这样就保证每次密钥对也不同。...虽然可以使用轮询来不停向服务器发送 HTTP 请求,但是缺点也很大,反复无效请求占用了大量带宽和 CPU 资源。所以,WebSocket 应运而生。...精确度更高),需要预先在服务端响应报文里设置,配合条件请求使用。...202 Accepted:服务器接受并开始处理请求,但请求未处理完成 206 Partial Content:使用range协议时返回部分响应内容时响应码 3xx 请查阅上文重定向部分,这里不再赘述

    43821

    Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets

    在这个小节中,我们将展示如何使用OWASP_ZAP来监控、拦截和修改WebSockets通信,就像我们在渗透测试期间处理普通请求一样。...发起websocket通信请求包括Sec-WebSocket-Key报头和base64编码值。此密钥不是身份验证机制;它只帮助确保服务器不接受来自非websockets客户端连接: ?...服务器响应是101交换协议代码,其中包括一个头Sec-WebSocket-Accept,其目的与客户机使用键类似。 4....原理剖析 WebSocket通信是客户端通过JavaScript中WebSocket类发起。当创建WebSocket实例时,客户机启动与服务器握手。...当服务器响应握手并建立连接时,HTTP连接随后被WebSocket连接替换,它就变成了一个双向二进制协议,不一定与HTTP兼容。 WebSockets是纯文本,HTTP也是。

    1.2K20

    HTML5(十二)——一文读懂 WebSocket 原理

    2.1、建立连接 客户端去与服务器建立 TCP 连接,客户端生成 websocket 对象,然后使用 API 建立连接,代码如下: let ws= new WebSocket('ws://localhost...:8888') ws.onopen = function(){ console.log("连接") } 2.2、握手阶段 客户端与服务器建立连接之后,客户端发送握手请求,随后服务器发送握手响应即完成握手阶段...ya9Lkv+tsUtXLXQ==', 'Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits', 服务器握手响应如下...Masking-key域数据即是掩码密钥,用于解码PayloadData。客户端发出数据帧需要进行掩码处理,所以此位是1。...Masking-key:0到4字节,如果MASK位设为1则有4个字节掩码解密密钥,否则就没有。 Payload data:任意长度数据。

    1.3K30

    HTML5(十二)——一文读懂 WebSocket 原理

    2.1、建立连接 客户端去与服务器建立 TCP 连接,客户端生成 websocket 对象,然后使用 API 建立连接,代码如下: let ws= new WebSocket('ws://localhost...:8888') ws.onopen = function(){ console.log("连接") } 2.2、握手阶段 客户端与服务器建立连接之后,客户端发送握手请求,随后服务器发送握手响应即完成握手阶段...ya9Lkv+tsUtXLXQ==', 'Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits', 服务器握手响应如下...Masking-key域数据即是掩码密钥,用于解码PayloadData。客户端发出数据帧需要进行掩码处理,所以此位是1。...Masking-key:0到4字节,如果MASK位设为1则有4个字节掩码解密密钥,否则就没有。 Payload data:任意长度数据。

    1.4K30

    解密与探究:理解WebSocket协议与报文格式

    如果存在不合法请求头,那么服务端应该发送 400 响应(“Bad Request”),并且立即关闭套接字。通常情况下,服务端可以在 HTTP 响应体中提供握手失败原因 。...2.2 服务端握手响应当服务端收到握手请求时,将发送一个特殊响应,该响应表明协议将从 HTTP 变更为 WebSocket。...下面的 Python 代码根据Sec-WebSocket-Key请求头生成Sec-WebSocket-Accept响应值:import typingfrom hashlib import sha1import...所有扩展必须指定"扩展数据"长度,或者如何计算该长度,并且在开始握手期间,必须协商扩展使用方式。如果存在,那么“扩展数据”包含在总有效载荷长度中。...下图是握手过程中服务端响应报文:可见,客户端和服务端协商使用扩展“permessage-deflate”,也就是对每条消息使用 deflate 压缩。

    1.8K11

    HTML5(十二)——一文读懂 WebSocket 原理

    2.1、建立连接 客户端去与服务器建立 TCP 连接,客户端生成 websocket 对象,然后使用 API 建立连接,代码如下: let ws= new WebSocket('ws://localhost...:8888') ws.onopen = function(){ console.log("连接") } 2.2、握手阶段 客户端与服务器建立连接之后,客户端发送握手请求,随后服务器发送握手响应即完成握手阶段...ya9Lkv+tsUtXLXQ==', 'Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits', 服务器握手响应如下...Masking-key域数据即是掩码密钥,用于解码PayloadData。客户端发出数据帧需要进行掩码处理,所以此位是1。...Masking-key:0到4字节,如果MASK位设为1则有4个字节掩码解密密钥,否则就没有。 Payload data:任意长度数据。

    1.1K20
    领券