跳到主要内容

Wireshark数据包分析实战学习笔记一

· 阅读需 13 分钟

捕获过滤器的BPF语法

使用BPF语法创建的过滤器被称为表达式,并且每个表达式包含一个或多个原语。每个原语包含一个或多个限定词,然后跟着一个ID名字或数字

限定词说明例子
类型限定词指出名字或数字所代表的意义host、net、host
传输方向限定词指明传输方向是前往还是来自名字或数字src、dst
协议限定词限定所要匹配的协议ether、ip、tcp、udp、http、ftp

可以使用以下3种逻辑运算符,对原语进行组合,从而创建更高级的表达式

捕获过滤器语法.drawio

PowerShell基于starship打造仿ys主题美化

· 阅读需 4 分钟

背景

Windows现在对开发者越来越友好了,有了WSL2且支持Docker,并且JetBrains的IDE也支持WSL2,开发环境改善了不少,Windows成为最好用的Linux发行版。

Windows的应用商店有一些高颜值的终端,作为传统的cmd与powershell终端的替代,视觉上提升了很多。powershell也有了新版,例如我目前在使用的PowerShell 7.1.5版本。

然而,对于在Linux上常用的oh-my-zsh,Powershell默认状态却并不美观,其命令提示符非常单调,也不能显示git仓库的分支。

效果

在众多oh-my-zsh主题里,我比较喜欢ys主题,主要是因为比较简约,不需要特殊的字体,没有各种花里胡哨的效果,因此可以在各种终端环境下完整地显示。下面是Linux上ys主题与PowerShell基于starshipys主题的对比效果:

screenshot-20211024232952

《Netty实战》读书笔记——编解码器与网络协议

· 阅读需 6 分钟

编解码器

解码器

  • 将字节解码为消息——ByteToMessageDecoderReplayingDecoder
  • 将一种消息类型解码为另一种——MessageToMessageDecoder

screenshot-20211024223038

io.netty.handler.codec.LineBasedFrameDecoder:这个类在Netty 内部也有使用,它使用了行尾控制字符(\n 或者\r\n)来解析消息数据;

io.netty.handler.codec.http.HttpObjectDecoder:一个HTTP 数据的解码器。在io.netty.handler.codec 子包下面,你将会发现更多用于特定用例的编码器和解码器实现。

Netty 提供了TooLongFrameException 类,其将由解码器在帧超出指定的大小限制时抛出。

基于Netty实现简单的Redis服务端

· 阅读需 6 分钟

前言

在上一篇的基于Netty实现简单的Redis客户端 - 木然轩 - 文剑木然的网络日志中我介绍了如何使用Netty来编写一个简单的Redis客户端。在本篇中,将使用Netty实现一个简单的Redis服务端。

目标

完整的Redis服务端的功能是很复杂的,由于是学习目的,这里只实现Redis最基本的一项功能,就是存取字符串,也就是下面的两个命令:

SET key value
GET key

实现

由于Redis的协议在上一篇已经提过了,本篇就不再赘述了,直接上实现的过程。