<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>协议 on 蓝尾蜂鸟</title><link>https://clibing.com/posts/protocol/</link><description>Recent content in 协议 on 蓝尾蜂鸟</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>Copyright © 2011-2026 clibing. All Rights Reserved.</copyright><atom:link href="https://clibing.com/posts/protocol/index.xml" rel="self" type="application/rss+xml"/><item><title>RFC 翻译记录</title><link>https://clibing.com/posts/protocol/rfc/</link><pubDate>Wed, 02 Nov 2022 19:00:36 +0800</pubDate><guid>https://clibing.com/posts/protocol/rfc/</guid><description>&lt;p>RFC 翻译记录&lt;/p></description></item><item><title>整理一些协议说明</title><link>https://clibing.com/posts/protocol/distributed/</link><pubDate>Tue, 24 Aug 2021 15:17:56 +0800</pubDate><guid>https://clibing.com/posts/protocol/distributed/</guid><description>&lt;p>分布式一致性协议 Paxos ZAB Raft Gossip&lt;/p></description></item><item><title>TCP UDP 优缺点以及原理和引用</title><link>https://clibing.com/posts/protocol/tcp_udp/</link><pubDate>Sat, 22 Aug 2020 08:41:39 +0800</pubDate><guid>https://clibing.com/posts/protocol/tcp_udp/</guid><description><![CDATA[<h3 id="tcp-udp-优缺点" data-numberify>TCP UDP 优缺点<a class="anchor ms-1" href="#tcp-udp-优缺点"></a></h3>
<ul>
<li>tcp:面向连接点到点、可靠、无结构的字节流，全双工</li>
<li>udp:支持1:n,1:1,n:1,没有阻塞控制。尽最大努力交付不可靠，报文</li>
</ul>

<h5 id="tcp-可靠稳定" data-numberify>TCP: 可靠、稳定。<a class="anchor ms-1" href="#tcp-可靠稳定"></a></h5>
<p>使用场景：数据必须准确无误的传输，不允许丢失。基于tcp的协议有http、https、ftp文件协议、smtp邮件协议、ssh协议</p>]]></description></item><item><title>SSL TLS 单向认证流程图</title><link>https://clibing.com/posts/protocol/ssl-tls-single/</link><pubDate>Mon, 27 Apr 2020 10:47:46 +0800</pubDate><guid>https://clibing.com/posts/protocol/ssl-tls-single/</guid><description><![CDATA[<h3 id="单向认证流程" data-numberify>单向认证流程<a class="anchor ms-1" href="#单向认证流程"></a></h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="ln"> 1</span><span class="cl">Title: SSL/TLS单向认证流程
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">Client-&gt;Server: (1) Client Hello (随机数、client端支持的加密算法)
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">Server-&gt;Client: (2) Server Hello (随机数、选择一个client支持的算法)
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">Server-&gt;Client: 下发Server证书
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">Client-&gt;Client: (3) 验证证书
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">Client-&gt;Server: (4) Client Key Exchange (用Server公钥加密Pre-Master key(通过Client Server协商后得到的key))
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">Client-&gt;Server: (5) Change Cipher Spec (通过Server参数协商完成)
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">Client-&gt;Server: Finish handshake (Encrypted Handshake Message)
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">Server-&gt;Client: Cipher spec + Finish handshake
</span></span><span class="line"><span class="ln">10</span><span class="cl">
</span></span><span class="line"><span class="ln">11</span><span class="cl">Client-&gt;Server: ...
</span></span><span class="line"><span class="ln">12</span><span class="cl">Server-&gt;Client: ...
</span></span></code></pre></div>
<h3 id="详情" data-numberify>详情<a class="anchor ms-1" href="#详情"></a></h3>
<ul>
<li>
<p>(1). <strong>client_hello</strong></p>]]></description></item><item><title>HTTP请求头</title><link>https://clibing.com/posts/protocol/http_header/</link><pubDate>Thu, 16 Apr 2020 17:18:56 +0800</pubDate><guid>https://clibing.com/posts/protocol/http_header/</guid><description><![CDATA[<h3 id="http请求头" data-numberify>HTTP请求头<a class="anchor ms-1" href="#http请求头"></a></h3>

<h4 id="常用请求头" data-numberify>常用请求头<a class="anchor ms-1" href="#常用请求头"></a></h4>
<table>
  <thead>
      <tr>
          <th>请求头</th>
          <th>描述</th>
          <th>备注</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Accept</td>
          <td>告诉web服务器自己接收什么媒体类型。</td>
          <td></td>
      </tr>
      <tr>
          <td>Accept-Charset</td>
          <td>浏览器接收内容的字符集，通常是utf-8。</td>
          <td></td>
      </tr>
      <tr>
          <td>Accept-Encoding</td>
          <td>浏览器接收的编码方法。例如指定是否压缩，若支持压缩的话支持压缩方式，具体如常见的Accept-Encoding: gzip, deflate.</td>
          <td></td>
      </tr>
      <tr>
          <td>Accept-Language</td>
          <td>浏览器接收的语言。</td>
          <td></td>
      </tr>
      <tr>
          <td>Accept-Ranges</td>
          <td>Web服务器表明自己是否接受获取某个实体的一部分（比如文件的一部分）请求，这里主要用于部分文件的传输，bytes字段表示接受传输多大长度内容，none表示不接受。</td>
          <td></td>
      </tr>
      <tr>
          <td>Allow</td>
          <td>设置服务器接受的请求的方法，例如GET、POST、PUT,如果不支持，则返回405。</td>
          <td></td>
      </tr>
      <tr>
          <td>Authorization</td>
          <td>当客户端接收到来自web服务器的WWW-Authenticate响应时，后面可以用该头部来携带自己的身份验证信息给web服务器直接进行认证。</td>
          <td></td>
      </tr>
      <tr>
          <td>Cache-Control</td>
          <td>用来申明强缓存</td>
          <td></td>
      </tr>
      <tr>
          <td>no-cache</td>
          <td>不使用缓存实体，要求去web服务器去请求数据。</td>
          <td></td>
      </tr>
      <tr>
          <td>max-age</td>
          <td>设置的缓存过期的时间。</td>
          <td></td>
      </tr>
      <tr>
          <td>no-store</td>
          <td>不缓存。</td>
          <td></td>
      </tr>
      <tr>
          <td>Connection</td>
          <td>长连接（持续连接）相关设置。节省TCP连接时间开销。常用设置如下：</td>
          <td></td>
      </tr>
      <tr>
          <td>close</td>
          <td>告诉web服务器，在完成本次请求响应后断开连接，无需等待后续请求。</td>
          <td></td>
      </tr>
      <tr>
          <td>keep-alive</td>
          <td>保持连接一段时间，等待后续请求，如果浏览器请求保持连接，则头部表明需要web服务器保持连接的时长（以秒为单位），例如：keep-alive: 200。http1.1中会默认设置开启长连接。</td>
          <td></td>
      </tr>
      <tr>
          <td>Content-Encoding</td>
          <td>与请求头的Accept-Encoding相互呼应，web服务器表明返回内容是按何种方式压缩，例如：Content-Encoding: gzip。</td>
          <td></td>
      </tr>
      <tr>
          <td>Content-Language</td>
          <td>与请求头中的Accept-Language相呼应，告诉浏览器响应的媒体对象的语言。</td>
          <td></td>
      </tr>
      <tr>
          <td>Content-length</td>
          <td>Web服务器告诉浏览器请求内容的长度。</td>
          <td></td>
      </tr>
      <tr>
          <td>Content-Range</td>
          <td>Web服务器表明响应包含的部分对象的为整个对象的哪个部分。</td>
          <td></td>
      </tr>
      <tr>
          <td>Content-Type</td>
          <td>与请求头的Accept相呼应，表明web服务器告诉浏览器相应内容的类型。</td>
          <td></td>
      </tr>
      <tr>
          <td>Etag</td>
          <td>对象的标志值。一个文件如果被修改了，其Etag值也会被修改。Etag和Last-Modified都是设置的协商缓存。例如前一次请求某个js文件时获取了服务器相应传回来的Etag字段，当再次请求该文件时会在If-None-Match字段中带上Etag的值。web服务器会根据这个Etag值判断文件和先前比是否改变了。</td>
          <td></td>
      </tr>
      <tr>
          <td>Expires</td>
          <td>http1.1之前时代设置强缓存的字段。是web服务器告诉客户端的一个具体过期的时间点（服务器时间），需要客户端和服务端时间同步，若客户端时间不准确，可能现没有利用缓存的情况，所以http1.1中建议设置Cache-control。例如：Expires：Sat,23 May 2009 10:02:12 GMT。</td>
          <td></td>
      </tr>
      <tr>
          <td>Host</td>
          <td>客户端指定自己访问的web服务器的域名/IP地址及端口号。例如：Host: <a href="https://www.baidu.com" target="_blank" rel="noopener noreferrer">www.baidu.com<i class="fas fa-external-link-square-alt ms-1"></i></a>。</td>
          <td></td>
      </tr>
      <tr>
          <td>If-None-Match</td>
          <td>对应Etag，是客户端发送给服务端的。为上一次web服务器响应的Etag值。</td>
          <td></td>
      </tr>
      <tr>
          <td>If-Modified-Since</td>
          <td>对应Last-Modified, 是客户端发送给服务器的，为上一次web服务器响应的Last-modified的值。</td>
          <td></td>
      </tr>
  </tbody>
</table>
<p><a href="https://www.jianshu.com/p/35aa5f80485d" target="_blank" rel="noopener noreferrer">摘自<i class="fas fa-external-link-square-alt ms-1"></i></a></p>]]></description></item><item><title>Coap</title><link>https://clibing.com/posts/protocol/coap/</link><pubDate>Thu, 16 Apr 2020 10:26:45 +0800</pubDate><guid>https://clibing.com/posts/protocol/coap/</guid><description><![CDATA[<h2 id="coap协议简介" data-numberify>COAP协议简介<a class="anchor ms-1" href="#coap协议简介"></a></h2>
<p>Coap（Constrained Application Protocol）是一种在物联网世界的类web协议，它的详细规范定义在 RFC 7252。COAP名字翻译来就是“受限应用协议”，顾名思义，使用在资源受限的物联网设备上。物联网设备的ram，rom都通常非常小，运行TCP和HTTP是不可以接受的。</p>]]></description></item></channel></rss>