MTU与IP分片MTU的作用Maximum Transmission Unit(MTU):最大传输单元 一个标准的以太网数据帧最大为1518,其中源MAC 6字节,目的MAC 6个字节,Type 2个字节,FCS 4个字节(前导码不算在内,在物理层就已经去2022-06-17 NetworkNetwork 通过 openvpn 分析 tun 实现隧道的数据流程本文转载自 骏马金龙 提醒: 网上大多文章在这方面的分析都是错的,认为是 openvpn 对数据进行额外的封装和解封。 但实际上,在不绕过内核的情况下,网络数据的封装和解封由内核负责,用户空间的程序无法对数据进行封装和解封。 以 O2022-05-23 NetworkNetwork OpenVPN OpenSSL生成自签名证书第一种方式(使用命令)生成私钥 openssl genrsa -out server.key 1024 使用私钥生成自签名的cert证书文件,以下是通过参数只定证书需要的信息 openssl req -new -x509 -days 362022-05-08 LinuxLinux OpenSSL Linux 虚拟网卡设备 tun/tap本文转载自 骏马金龙 物理网卡收发数据的流程物理网卡可以接收和发送数据: 收:外界向该物理网卡发送数据时,外界发送到网卡的数据最终会传输到内核空间的网络协议栈中 发:本机要从物理网卡发送数据时,数据将从内核的网络协议栈传输到网卡,网卡负责2022-04-18 NetworkTUN/TAP 布隆过滤器简介布隆过滤器(Bloom Filter)是1970年由布隆(Burton Howard Bloom)提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都2022-04-16 RedisRedis 标准差和方差标准差 标准差是数值分散的测量 标准差的符号是 σ (希腊语字母 西格马,英语 sigma) 公式很简单:方差的平方根 方差 离平均的平方距离的平均 按照以下的步骤来计算方差: 求数值的 平均 从每一个数值减去平均,然后求差的平方 求2022-04-01 数学数学 物理网卡、网卡接口、内核、IP属性的关系本文转载自 骏马金龙 我想很多人都对它们产生过迷惑,物理网卡明明是一块小板子,为什么和eth0 (或 Windows 下的本地连接) 是对应的呢,为什么还可以给物理网卡配置 IP 地址呢,为什么还有那么多属性呢,等等谜之问题。 一个类比2022-03-17 NetworkNetwork HTTP协议HTTP1HTTP1.0 浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接(TCP连接的新建成本很高,因为需要客户端和服务器三次握手),服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去2022-03-06 HTTPHTTP QUIC协议简介 QUIC(Quick UDP Internet Connection)是谷歌制定的一种互联网传输层协议,它基于UDP传输层协议,同时兼具TCP、TLS、HTTP/2等协议的可靠性与安全性,可以有效减少连接与传输延迟,更好地应对当前传输2022-03-05 HTTPQUIC IPVS简介 要了解 IPVS,不得不谈到 Linux 虚拟服务器项目(Linux Virtual Server, LVS)。Linux 虚拟服务器技术是为了解决服务器承受的日益增长的访问压力,它通过部署虚拟服务器,使真实服务器集群使用同一个地址对2022-02-19 NetworkIPVS RAIDRAID 磁盘阵列(Redundant Arrays of Independent Drives,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。磁盘阵列是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加2022-02-11 计算机RAID Redis LFU算法Redis LFU算法LRU有一个缺陷,一个访问不频繁的数据,恰好在淘汰前访问,导致没有被淘汰,而访问比它频繁的,反而因为访问时间在前面一点而被淘汰 Redis作者曾想改进LRU算法,但发现Redis的LRU算法受制于随机采样数maxmem2022-02-02 RedisRedis Redis LRU淘汰策略Redis LRU淘汰策略Redis会删除过期键以释放空间,过期键的删除策略有两种: 惰性删除:每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,就返回该键 定期删除:每隔一段时间,程序就对数据库进行2022-02-01 RedisRedis RabbitMQ 学习RabbitMQ 高级消息队列(Advanced Message Queuing)模型,RabbitMQ 实现了 AMQP 协议 RabbitMQ概念Broker机节点,中文翻译是代理/中介,因为 MQ 服务器帮助我们做的事 情就是存储2022-01-10 消息中间件RabbitMQ Golang Patch 实现Golang单元测试 Mock本文转自https://bou.ke/blog/monkey-patching-in-go/ 前提使用go build -gcflags=-l来构建,禁用内联。对于本文,假设架构是 64 位,并且使用的是基于 Unix 的操作系统,如 Ma2022-01-05 GolangGolang P2P技术与NAT穿越P2P技术与NAT穿越 P2P即点对点通信,或称为对等联网,与传统的服务器客户端模式有着明显的区别,在即时通讯方案中应用广泛(比如IM应用中的实时音视频通信、实时文件传输甚至文字聊天等) NAT技术和P2P技术作为经典的两项网络技术,在现2021-12-27 NetworkNAT P2P Redis 数据结构底层实现Redis 数据结构底层实现 String 如果一个字符串对象保存的是整数值,并且这个整数值可以用long类型来表示,那么字符串对象会将整数值保存在字符串对象结构的ptr属性里面(将 void* 转换成 long ),并将字符串对象的编2021-12-23 RedisRedis linux Uboot简介 Uboot 属于bootloader的一种,是用来引导启动内核的,它的最终目的就是,从flash中读出内核,放到内存中,启动内核,需要具有读写flash的能力 Flash flash是存储芯片的一种,通过特定的程序可以修改里面2021-11-21 LinuxLinux