网络协议
文章平均质量分 79
学习 HTTP1、WebSocket、HTTP2、TLS/SSL、TCP、IP 等协议
爱因诗贤
持之以恒,勇攀技术高峰
展开
-
TCP 协议四次挥手&状态变迁
TCP 协议四次挥手&状态变迁之前介绍了 TCP 三次握手建立连接流程,而 TCP 协议是一个面向 字节流 的协议,它不限制应用层传输消息的长度,但是 网络层、数据链路层 在发送报文时使用的内存是有限的,所有就需要限制报文的长度,TCP 协议就需要把从 应用层 接收到的任意长度的 字节流 切分成许多个报文段,这里边涉及到很多底层复杂的网络编程的知识,如 TCP 是如何切分应用层的消息、慢启动、避免拥塞、超时重试等等,最后会经历一个关闭连接的过程,这篇简单介绍一下TCP 四次挥手 以及 状态变迁。原创 2020-12-29 17:11:31 · 528 阅读 · 1 评论 -
TLS/SSL 协议-数字签名和验签原理
文章目录TLS/SSL 协议-数字签名和验签原理1.数字签名的作用2.证书签发流程图3.证书中的签名和验签流程3.1 签名流程示意图3.2 验签流程示意图TLS/SSL 协议-数字签名和验签原理Alice 有一对公钥(公开)和私钥(保密),若想要给 Alice 发送密文信息,就需要用 Alice 的公钥去加密,但是如何证明这个公钥是 Alice 的,而不是别人伪造的呢?基于这个问题,就需要 Alice 的公钥向第三方权威的认证机构对 Alice 的公钥认证并贴上数字签名,被签过名的 公钥 就可以保证是原创 2020-12-22 17:38:39 · 2934 阅读 · 1 评论 -
TLS/SSL 协议-非对称加密(RSA)原理
TLS/SSL 协议-非对称加密(RSA)原理前面文章学习过 对称加密的原理,在通信双方发送完加密的密文之后,需要发送密钥给对方才能解密,这就要求发送密钥的信息通道安全可靠,才能保证数据的安全性,而非对称加密算法 是一种密钥的保密方法,需要有 公钥(公开密钥)和私钥(私有密钥),这篇文章主要介绍公钥和私钥生成原理,然后围绕公钥和私钥研究和分析加密和解密原理。1.非对称加密工作原理(1)Bob 要向Alice 发送信息,Alice 需要先要产生一对用于加密和解密的公钥和私钥。(2)Alice 的私钥原创 2020-12-21 20:09:35 · 2462 阅读 · 2 评论 -
TLS 协议-对称加密原理
文章目录TLS 协议-对称加密原理1.TLS 设计的目的2.TLS/SSL 发展历史及通用模型3.TLS 协议4.TLS 安全密码套件解读5.对称加密示意图6.基于 XOR 的对称加密原理6.1 XOR 真值表6.2 基于 XOR 的加密示意图6.3 基于 XOR 的解密示意图6.4 填充7.对称加密工作模式7.1 ECB(Electronic codebook) 模式7.2 CBC(Cipher-block chaining)模式7.3 CTR(Counter)模式7.4 GCM 模式8.AES 加密算法原创 2020-12-21 01:29:58 · 1785 阅读 · 0 评论 -
HTTP/2 协议-Stream 的状态变迁
文章目录HTTP/2 协议-Stream 的状态变迁1.Stream 特性2.Message 特性3.GET 消息发送示意图4.POST 消息发送示意图5.Stream 流的状态6.RST_STREAM 帧(type=0x3)7.常见的 RST_STREAM 错误码8.Priority 优先级设置帧9.抓取权重报文HTTP/2 协议-Stream 的状态变迁1.Stream 特性一条 TCP 连接上,可以并发存在多个处于 OPEN 状态的 Stream客户端或者服务器都可以创建新的 Stream原创 2020-12-20 14:25:45 · 1908 阅读 · 0 评论 -
HTTP/2 协议-服务端主动推送消息
HTTP/2 协议-服务端主动推送消息这篇文章介绍一下 HTTP/2 的服务端消息推送功能,它可以很大程度的提升客户的体验,它与之前介绍的 Websocket 消息推送有很大的不同,讨论一下 HTTP/2 协议中的 PUSH_PROMISE 服务端推送帧实现原理。1.服务器推送的意义提前将资源推送到浏览器推送可以基于已发送的请求,例如客户端请求 html,服务端可以主动推送 js、css 文件2.服务端推送的基本实现原理推送资源必须对应一个请求请求由服务端 PUSH_PROMISE 帧发原创 2020-12-20 09:31:22 · 5912 阅读 · 1 评论 -
HTTP/2 协议-HPACK(HTTP2 头部压缩算法)原理介绍
HTTP/2 协议-HPACK(HTTP2 头部压缩算法)原理介绍HTTP/1 协议是一个无状态的协议,这样就导致每次请求都会传输重复的大量 HTTP 头部,使得 HTTP/1 协议的效率非常低下,HTTP/2 使用 HPACK(HTTP头部压缩算法) 解决了这样效率低下的问题,这篇文章简单介绍一下 HPACK 算法原理。1.HPACK 中的三种压缩方式静态字典动态字典压缩算法:Huffman 编码(最高压缩比8:5)1.1 静态字典比如需要传递 GET 这样一个数据,只需要传递它的静态字原创 2020-12-19 21:01:25 · 4496 阅读 · 3 评论 -
HTTP/2 协议(帧、消息、流简单的抓包分析)
HTTP/2 协议(帧、消息、流简单的抓包分析)这篇文章通过 Wireshark 抓包工具逐步分析 HTTP/2 协议中 帧(frame)、消息(message)、流(stream) 三者之间的关系,加深对 HTTP/2 协议的理解。1.HTTP/2 核心概念连接 Connection: 1 个 TCP 连接,包含一个或者多个 Stream。数据流 Stream:一个双向通讯数据流,包含 1 条或者多条 Message。消息 Message:对应 HTTP/1 中的请求或者响应,包含一条或者多条原创 2020-12-18 09:34:05 · 5220 阅读 · 0 评论 -
HTTP/2 协议(抓包分析 HTTP/2 握手是如何被建立的)
HTTP/2 协议(抓包分析 HTTP/2 握手是如何被建立的)这篇文件介绍一下 h2,基于 TLS 协议运行的 HTTP/2 被称为 h2,直接在 TCP 协议之上运行的 HTTP/2 被称为 h2c,通过抓包分析 h2 是如何被建立的。1.TLS 通讯过程1.1 TLS 通讯步骤1.2 TLS 流程示意图Tips:关于 TLS 协议会在后续文章详细介绍,这里只是简单说明一下。2.抓包分析这里以新浪首页 sina.com.cn 为例,抓取到的报文步骤如下:步骤1:Client He原创 2020-12-17 00:46:10 · 2004 阅读 · 0 评论 -
网络协议-Wireshark 捕获和显示过滤器规则
Wireshark 捕获和显示过滤器这篇文章介绍一下 Wireshark 的过滤器,Wireshark 过滤器分为 捕获过滤器 和 显示过滤器,学习它们可以帮助你更好抓取到想要的报文。1.捕获过滤器(BPF 过滤器)捕获过滤器是在报文抓取之前的一种过滤,可以指定抓取满足过滤条件的报文内容:用于减少抓取的报文体积使用 BPF 语法,功能相对有限1.1 捕获过滤器使用方法在 Wireshark 面板点击 选项->捕获出现的窗口下方 capture filter for selected原创 2020-12-16 16:20:23 · 2359 阅读 · 0 评论 -
HTTP/2 协议(Wireshark 抓取浏览器加密的 HTTP2)
HTTP/2 协议介绍1.HTTP/1.1 发明以来发生的变化从几 KB 大小的消息,到几 MB 大小的消息每个页面小于 10 个资源,到每页面 100 多个资源从文本为主的内容,到富媒体(如图片、声音、视频)为主的内容对页面内容实时性要求的应用越来越多2.HTTP/1.1 的高延迟问题高延迟带来页面加载速度的降低随着带宽的增加,延迟并没有显著下降并发连接有限同一连接同时只能在完成一个 HTTP 事务(请求/响应)才能处理下一个事务3.高延迟 VS 高带宽単连接上的串行请求原创 2020-12-15 21:14:55 · 2039 阅读 · 1 评论 -
WebSocket 协议原理(抓包分析)
WebSocket 协议原理抓包分析这篇文章通过抓包分析 WebSocket 协议的细节,学习一下 WebSocket 执行流程。1.WebSocket 流程说明**(1)**客户端和服务器之间完成三次握手建立 TCP 连接(TLS/SSL)握手。**(2)**客户端发起 HTTP 请求和服务器之间建立 WebSocket 握手。(3)WebSocket 连接建立之后,双方通信是基于 TCP 连接的,此后不需要 HTTP 协议了。**(4)**完成 WebSocket 握手之后,就可以发送消息原创 2020-12-14 23:20:00 · 6453 阅读 · 0 评论 -
网络协议-(Wireshark 抓包工具介绍)
Wireshark 抓包工具介绍这篇文章主要介绍一下 Wireshark 这个工具是如何抓包的,学习和使用抓包工具对于学习各种网络协议都很有帮助。1.如何抓取报文(1) 打开 Wireshark 抓包工具之后,点击 捕获->选项:(2)在新打开的 捕获选项 可以看到如下界面:(3)在 捕获选项 界面点击 Output 可以看到如下界面:(4)在 捕获选项 界面点击 选项 可以看到如下界面:(5)选择好 网卡之后点击下面的 开始 即可抓取报文:(6)如下图所示是正在抓取报文的界原创 2020-12-13 21:19:58 · 1054 阅读 · 0 评论 -
网络协议-HTTP 协议(DNS解析和ABNF描述)
网络协议-HTTP 协议(一)HTTP协议 是一种无状态的、应用层的、以请求/应答方式运行的协议,它使用可拓展的语义和自描述消息格式,与基于网络的超文本信息系统灵活地互动。1.HTTP 请求场景示意图2.浏览器发起 HTTP 请求流程图3.DNS 解析流程示意图DNS解析的目的就是把域名字符串对应的 ip地址 拿到,有了这个 ip地址 之后就可以向 ip地址对应的计算机发起通信了:3.1 DNS 解析流程示意图3.2 DNS 解析流程说明图4.构建 HTTP 请求上述步骤拿到 i原创 2020-12-11 00:13:13 · 653 阅读 · 1 评论 -
网络协议-HTTP 协议(抓包实战和网络分层)
网络协议-HTTP 协议(抓包实战和网络分层)这篇文章主要介绍一下 Wireshark 抓包工具获取到的 HTTP协议 相关的数据,然后对这些数据进行简单的分析,主要目的是更深入的理解 HTTP协议,然后了解一下网络为什么要分层, OSI模型和TCP/IP模型的区别。1.HTTP 协议抓包实战(Wireshark)1.1 打开 Wireshark 工具,选中正在使用的网卡 以太网4(以自己电脑实际使用为准),点击原创 2020-12-11 00:12:37 · 1053 阅读 · 0 评论 -
HTTP 协议(包体的传输方式&缓存的工作原理)
HTTP 协议(包体的传输方式&缓存的工作原理)1.HTTP 包体1.1 HTTP 包体格式请求或者响应都可以携带包体,基于 ABNF 描述的格式如下:#message-body = *OCTET:二进制字节流HTTP-message = start-line *(header-field CRLF) CRLF [message-body]1.2 不能携带包体的请求或响应HEAD 方法请求时对应的响应不能携带包体。1xx、204、304 状态码对应的响应。CONNECT 方法对原创 2020-12-11 00:12:00 · 598 阅读 · 0 评论 -
HTTP 协议(上下文介绍和多断点续传原理)
HTTP 协议(上下文介绍和多断点续传原理)HTTP 请求和响应都有一些表示 上下文 的常用头部,所谓 上下文 指的就是某个请求(或响应)从哪里来,或者说某个请求(或响应)对后续请求(或响应)产生哪些影响,后面从 HTTP 协议的角度分析大文件(大的包体)如何做到 断点续传 的,下载大文件(大的包体)的时候是如何做到 多线程 并发下载的。1.请求的上下文 User-AgentUser-Agent 用于指明客户端的用户类型信息,服务器可以根据此类型信息做出对应响应,下面给出基于 ABNF 描述的 Use原创 2020-12-11 00:11:19 · 1126 阅读 · 0 评论