摘要:
1 理论知识先上一张图,TCP/IP详解第18章的这张图描述了一个正常的三次握手和四次挥手的状态迁移,以及seq、ack序号的变化。基本状态看图就能了解,本文主要围绕序号的变化进行讲解。1)seq序号seq的初始值在不同系统实现不一样,一般为随时间增长的值。当seq超过4字节存储空间后从0开始。在某个方向上传输N个字节的数据,序列号就+N,因此seq用于确认在某个方向上传输的字节数。如果传输的数据... 阅读全文
摘要:
1 wiresharkhttps://wiki.wireshark.org/SampleCaptures/2 security-onion一个带有各种安全软件的Linux发行版,文档里有各种报文库的链接https://securityonion.readthedocs.io/en/latest/pcaps.html3 asecuritysitehttps://asecuritysite.com/f... 阅读全文
摘要:
1 前置知识学习1.1 MTUMTU是最大传输单元( Maximum Transmission Unit)的缩写,指一个接口无需分片所能发送的数据包的最大字节数。 MTU范围在46 ~ 1500字节,默认一般都是1500。1)MTU为1500时计算总长度7字节前导码+1字节帧开始定界符+6字节的目的MAC+6字节的源MAC+2字节的帧类型+1500字节IP头及数据+4字节的 FCS = 1526... 阅读全文
摘要:
1 LPM库DPDK LPM库组件为32位的key实现了最长前缀匹配(LPM)表查找方法,该方法通常用于在IP转发应用程序中找到最佳路由匹配。2 LPM API概述LPM组件实例的主要配置参数是要支持的最大规则数。 LPM前缀由一对参数(32位Key,深度)表示,深度范围为1到32。LPM规则由LPM前缀和与该前缀关联的一些用户数据表示。 该前缀用作LPM规则的唯一标识符。 在此实现中,用户数据的... 阅读全文
摘要:
1 Mbuf库Mbuf库提供了分配和释放缓冲区(mbufs)的功能,DPDK应用程序可以使用这些mbufs来存储消息缓冲。 消息缓冲存储在内存池中,使用Mempool库。数据结构rte_mbuf通常用来承载网络数据包buffers,但它实际上可以是任何数据(控制数据、事件……)。rte_mbuf头部 阅读全文
摘要:
0 前置知识学习跳表(SkipList)跳表应具有以下特征:1)一个跳表应该有多个层(level)组成,通常是10-20层。2)跳表的第0层包含所有的元素。3)每一层都是一个有序的链表。层数越高应越稀疏,这样在高层次中能跳过许多不符合条件的数据。4)如果元素x出现在第i层,则所有比i小的层都包含x; 阅读全文
摘要:
0 前言本文主要翻译至DPDK的官方编程指南,在谷歌翻译的基础上根据自己的理解做了一些修改。网上搜索的很多中文翻译大多是翻译后直接黏贴上来,有时候连语句都读不通。希望本文能够对你有所帮助。1 介绍DPDK提供了一个哈希库,用于创建用于快速查找的哈希表。哈希表是一种数据结构,它经过优化,用于搜索由唯一 阅读全文
摘要:
1 前置知识点学习(了解)从CPU到实际的存储节点,依据层级划分:Channel > DIMM > Rank > Chip > Bank > Row /Column1.1 channelCPU到内存的通路是channel,每个channel对应一个CPU的内存控制器,每个channel可以配有多个D 阅读全文
摘要:
目前已有的RAID(Redundant Array of Independent Disks,独立冗余磁盘阵列)技术有很多种,但是RAID0、RAID1、RAID5是最常见的几种方案。1 RAID0RAID0技术把多块(至少两块)物理硬盘设备通过软件或硬件的方式串联在一起,组成一个大的卷组,并将数据依次写入到各个物理硬盘中。这样,在最理想的情况下,硬盘设备的读写性能会提升数倍,但是若任意一块硬盘发... 阅读全文
摘要:
前言之前的工作环境习惯了使用source insight查看函数分析代码,切换到mac下后改用vscode,发现缺少函数调用关系图生成。跨平台的understand可以很好的解决,但是公司没有购买,因此需要寻找一个免费、跨平台的替代工具。doxygen + graphviz是不错的选择。原文参考:h 阅读全文