协议
文章平均质量分 85
焱齿
tencent
展开
-
wiresharks抓包分析(tcpdump抓包并还原请求体)
前言:先说下今天遇到的一个问题。和外部门同学对接消息记录拉取,采用的是pb协议,接口机的L5暴露给对方用以拉取。对方请求后表示IO超时没有收到对应回包,于是对方质疑我方有问题。现需要排查原因,更准确说如何找证据打脸对方。分析:我方业务是相对成熟的,这种问题大概率是对方发过来的请求不对,例如缺少某些字段导致接口机无法将请求转发给后方业务机。注:经过沟通发现对方不能打印请求体(具体原因也不管了)。思路无非如下(其中第二点是此次研究的重点):①首先tcpdump抓包看看我方究竟有没有收到对方的请求;.原创 2022-06-15 20:46:32 · 1007 阅读 · 2 评论 -
同源策略与跨域
前言:最近业务上前端同学多次联系说访问腾讯云cos资源的时候因为跨域的问题访问不到。大致看了下腾讯云关于设置跨域访问的教程,按照前端同学给的域名等选项就给配了,而且测试下来也是好的。但是呢一直不知道什么是跨域这里就做一个简单的学习记录。一、同源策略同源策略(Same Origin Policy)是一种约定,它是浏览器最核心也是最基本的安全功能。同源策略会阻止一个域的javascrip脚本和另一个域的内容进行交互,是用于隔离潜在恶意文件的关键安全机制;关于这一点我们后面会举例说明。...原创 2021-11-21 18:12:59 · 19477 阅读 · 8 评论 -
对称加密与非对称加密
更多关于AES参见这里:https://blog.csdn.net/qq_28205153/article/details/55798628在计算机领域加密是经常用到的技术。1、加密算法的种类大致来讲加密算法分为 散列算法、对称加密、非对称加密 三大类。(1)散列算法:通常用于验证消息的完整性,散列(hash)函数提供了这一功能。他对不同长度的输入消息产生固定长度的输出,常见的算法有MD5、SHA、HMAC等。(2)对称加密:双方采用同样的秘钥进行加密和解密。秘钥是控制加密及解密过程..原创 2021-07-18 13:13:55 · 2316 阅读 · 0 评论 -
JWT(Json Web Token)介绍
前言:JWT(JSON Web token)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。JWT是REST API中经常使用的一种机制。JWT是一种由Header、PayLoad和Key计算并组合得到的数字令牌。简单点说就是一个字符串,由三部分组成,分别是:头部(Header)、载荷(PayLoad)、签名(sign)。一、各部分介绍及使用体验Header:Header为JSON格式,用于描述关于该JWT的最基本的信息,例如类型以及签名采用的算法.原创 2021-04-25 15:21:13 · 1745 阅读 · 0 评论 -
base64与base64url编码
注意:这是两种编码base64和base64url,不要混为一谈。(注:不过两者的区别确实不大)关于base64可以参考这篇文章:https://blog.csdn.net/mijichui2153/article/details/106629860总的来说就是选用"A-Z、a-z、0-9、+、/" 64个可打印字符来表示不可见字符(注:另外可能还有补齐用的"=")。诶,,好像出现了一些奇怪的字符。参见这篇文章https://blog.csdn.net/mijichui2153/arti..原创 2021-04-25 14:54:35 · 3069 阅读 · 0 评论 -
go语言中的json与map相互转换
主要是引入"encoding/json" 包;用到的也就是其中的两个函数json.Marshal和json.Unmarshal。1、json.Marshal#函数定义位于GOROOT or GOPATH的/src/encoding/json/encode.go 中func Marshal(v interface{}) ([]byte, error) { e := newEncodeState() err := e.marshal(v, encOpts{es..原创 2021-02-09 19:00:43 · 2338 阅读 · 0 评论 -
protobuf根据DebugString字串反解pb对象(及基于此的简单配置实现)
这里面主要用到的是protobuf的TextFormat 这个类;其c++源码位于pb源码中的text_format.h /text_format.cc 文件中。这个类主要包含了以“text format”打印协议消息、反解“text format”字串为pb对象 相关的方法。其下都是静态方法,可以以 类名::方法名 的方式调用。本篇文章要解决的问题是 :如何根据DebugString() 或ShortDebugString()方法打印的字符串反解得到原pb对象?基于同样的技术点衍生出其...原创 2021-01-29 11:51:50 · 3908 阅读 · 0 评论 -
protobuf编码原理及其在schema格式转换的应用
关于protobuf的编码原理网上有很多,例如参见 这里这里主要实现的是深入protobuf编码原理,通过修改pb编码来实现不同pb schema间的格式转换。一、具体来看下我们希望实现的效果:1、CS协议的ReqBody → Inner协议的ReqBody如下为cs协议的ReqBodymessage ReqBody{ optional CcTestReqBody msg_cc_test_req_body = 10001; // 10001命令字对应的子ReqBody}m原创 2020-12-24 23:02:48 · 1583 阅读 · 0 评论 -
Protobuf编码规则详解
一、基础1、序列化与反序列化序列化:指将结构化的数据按一定的编码规范转成指定格式的过程;反序列化:指将转成指定格式的数据解析成原始的结构化数据的过程;举个例子:Person是一个表示人的对象类型,person是一个Person类型的对象,将person存到一个对应的XML文档中的过程就是一种序列化,而解析XML生成对应Person类型对象person的过程,就是一个反序列化的过程。在这里结构化数据指的就是Person类型的数据,一定的编码规范指的就是XML文档的规范。XML是一种简单的序列化原创 2020-12-23 20:57:17 · 8017 阅读 · 4 评论 -
一篇文章弄懂Base64编码原理
Base64的由来目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一。在做支付系统时,系统之间的报文交互都需要使用Base64对明文进行转码,然后再进行签名或加密,之后再进行(或再次Base64)传输。那么,Base64到底起到什么作用呢?在参数传输的过程中经常遇到的一种情况:使用全英文的没问题,但一旦涉及到中文就会出现乱码情况。与此类似,网络上传输的字符并不全是可打印的字符,比如二进制文件、图片等。Base64的出现就是为了解决此问题,它是基于64个可打印的字符来表示二进制的数转载 2020-06-08 22:12:06 · 1070 阅读 · 1 评论 -
网址URL特殊字符编码
一、URL中的特殊字符及其对应的编码网址URL中特殊字符转义编码字符 - URL编码值空格 - %20" - %22# - %23% - %25& - %26( - %28) - %29+ ...原创 2020-04-08 22:08:16 · 7440 阅读 · 0 评论 -
Http head详解
HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。注意:客户端与服务器的角色不是固定的,一端充当客户端,也可能在某次请求中充当服务器。这取决与请求的发起端。HTTP协议属于应用层,建立在传输层协议TCP之上。客户端通过与服务器建立TCP连接,之后发送HTTP请求与接收HTT...转载 2020-03-24 19:36:11 · 5435 阅读 · 0 评论 -
openssl做HMAC实例(C++)
1、HMAC简介(1)MAC(Message Authentication Code,消息认证码算法),可以将其认为是含有秘钥的散列(Hash)函数算法;即兼容了MD和SHA算法,并在此基础上加上了秘钥。因此MAC算法也经常被称作HMAC算法。当然HMAC就是“基于Hash的消息认证码”英文(Hash-based Message Authentication Code)的缩写。我个人理解它主要......原创 2020-03-08 22:13:37 · 5858 阅读 · 1 评论 -
Linux下编译安装Jsoncpp及应用实例
安装JsonCpp需要下载JsonCpp和Scon还需要机器上有pythonscons又是一个牛叉的工具,功能和GNU make一样,又比make简单多了。scons是python工具,需要先安装好python。验证python是否安装以及安装版本的指令为:python --version0、scons简介:Scons是一个开放源码、以Python语言编码的自动化构建工具,可用来替...原创 2019-09-27 10:48:47 · 4946 阅读 · 0 评论 -
linux环境下protobuf的安装与使用
一、protobuf的下载安装1、protobuf的下载:这里。此处下载的是protobuf-cpp-3.9.1.tar.gz。2、安装准备:安装protobuf前确保以下软件都已经被安装。方法也很简单yum -y install XXXX即可。autoconfautomake libtool make g++ unzip注:值得注意的是我们要将g++设为默认使...............原创 2019-08-22 00:34:20 · 24634 阅读 · 1 评论 -
Python 操作 protobuf 常见用法
ProtoBuf: 是一套完整的 IDL(接口描述语言),出自Google,基于 C++ 进行的实现,开发人员可以根据 ProtoBuf 的语言规范生成多种编程语言(Golang、Python、Java 等)的接口代码,本篇只讲述 Python 的基础操作。据说 ProtoBuf 所生成的二进制文件在存储效率上比 XML 高 3~10 倍,并且处理性能高 1~2 个数量级,这也是选择 ProtoB...原创 2019-08-14 17:03:56 · 18954 阅读 · 4 评论