0%

由于最近接触到的一个项目数据有些敏感,所以需要通过加密算法保证数据的安全性。由于公司之前有一套自定义传输协议并且有配套的公共代码导致客户端人员不太愿意使用 WWS 协议。且之前的协议没有协议层的数据加密。所以想参考HTTPS的加密机制使用数据加密来保证传输安全性。遂产生本篇博客。

什么是握手?

像两个人沟通一样,握手是表示一个回话的开始。对于SSL/TLS来说,通过握手建立连接,交换客户端与服务器之间的信息从而生成会话秘钥(主秘钥),用来加密之后的消息。

阅读全文 »

1. 简介

Squash是为微服务架构专门设计的调试工具,支持远程单步跟踪。

微服务架构下,应用程序的调试是困难的,其状态跨越多个微服务传播,你很难得到应用程序的整体状态。Tracing可以协助开发人员了解事务的整体流程、Istio等服务网格可以监控网络,定位延迟为她。但是,直接在运行时干预应用程序执行的工具一直缺失。

阅读全文 »

TCP 状态有几种?

通常情况下我们说的 TCP 包状态实际上是 TCP 标志位,目前TCP标志位主要有以下有6种:

名称 英文 中文 详细说明
SYN synchronous 同步 建立连接,同步状态
ACK acknowledgement 确认 确认上一个包已收到(确认收到)
PSH push 发送数据
FIN finish 结束 连接结束,不需要发送数据了
RST reset 重置 重置连接状态(重新连接)
URG urgent 紧急 TCP 带外数据相关,基本不会用到
其中URG在实际使用中属于百年一见的类型,所以我们就不与介绍了,主要介绍这些常见的TCP标志位。
# 一次正常的TCP连接都会发送那些包?
接下来,我们通过看一个完整的TCP交互都有哪些流程,对应包又是什么样。
upload successful
1. 建立连接
客户端操作 方向
:– :– :– :–
connect SYN >>>>>>
connect <<<<<< SYN,ACK
connect_end ACK >>>>>>
2. 服务器读,客户端写
客户端操作 方向
:– :– :– :–
write PSH >>>>>>
write_end <<<<<< ACK
3. 客户端读,服务器写
客户端操作 方向
:– :– :– :–
<<<<<<
ACK >>>>>>
read
4. 服务端断开连接
客户端操作 方向
:– :– :– :–
<<<<<<
ACK >>>>>>
6. 客户端断开连接
客户端操作 方向
:– :– :– :–
shutdown FIN >>>>>>
<<<<<<
7. 服务器,客户端双方释放本地资源(内存,句柄等)
客户端操作 方向
:– :– :– :–
close(释放资源)
阅读全文 »

前言

在我们使用git的时候用的更新代码是git fetchgit pull这两条指令。但是有没有小伙伴去思考过这两者的区别呢?有经验的人总是说最好用git fetch+git merge,不建议用git pull。也有人说git pull=git fetch+git merge,真的是这样吗?为什么呢?既然如此为什么git还要提供这两种方式呢?

1. 相同点

阅读全文 »