- 博客(302)
- 资源 (20)
- 收藏
- 关注
原创 SSL/TLS专栏目录导航
专栏的初衷是:深入学习SSL/TLS协议。在工作过程中做了2年的IPSecVPN, 在此过程中经常遇到将IPSe与SSL对比的情景:包括各自的协议异同、应用场景、协议本身复程度以及用户易用性等各个方面。在做IPSec的这段时间并没有详细接触SSL协议,因此对上述的问题并没有多少了解和认识。但是做ipsec的我面试时,老被问TLS........也是没谁了。痛定思痛,IPSec和SSL协议作为安全协议中的杰出代表,还是很有必要深入研究学习下,即使我不再面试,也为了后面的面试人做准备吧。...
2021-09-13 22:00:20 1288
原创 DPDK源码学习之 LPM路由匹配算法
1. 初衷我学习dpdk的初衷非常简单,长期的目标是学习DPDK的优化原理,并在此基础上对现有的工作代码进行优化;短期目标是为了面试,因为实在是问的太多了,而我也仅仅是看了《深入浅出DPDK》这本书的前几个章节,基本上面试官深入询问,便不知道所以然。面试官还经常问另一个问题:DPDK源码你看过多少?既然如此,那我就裸辞在家,开始撸DPDK源码。并将学习笔记整理出来,供大家一起讨论学习。早些时候,只看过DPDK中的无锁队列,在实现上确实很优秀,通过学习无锁队列,真正意义上接触到了缓存.
2021-07-22 15:57:12 4646 19
原创 IPSec 专栏目录锦集(openswan)
为了方便查阅现有的文章,特准备一个目录页供后续查询使用1. openswan任务调度基础知识之信号
2020-12-23 00:09:46 40734 17
原创 Linux内核学习之2号进程kthreadd
Author : Toney Email : vip_13031075266@163.com Date : 2020.12.02 Copyright: 未经同意不得转载!!! Version : Linux-4.19.y Reference:https://www.linux.org/目录一、Linux的2号进程二、kthreadd进程的创建三、kthreadd进程执行体四、create_kthread函数五、小结...
2020-12-03 23:55:31 11179
原创 Linux内核学习之工作队列
Author : Toney Email : vip_13031075266@163.com Date : 2020.12.02 Copyright: 未经同意不得转载!!! Version : Linux-2.6.12 Reference:https://www.linux.org/ ...
2020-12-03 00:02:09 6788 1
原创 DPDK 无锁环形队列(Ring)详解
DPDK 无锁环形队列(Ring)此篇文章主要用来学习和记录DPDK中无锁环形队列相关内容,结合了官方文档说明和源码中的实现,供大家交流和学习。Author : ToneyEmail : vip_13031075266@163.comDate : 2020.11.8Copyright : 未经同意不得转载!!!version : dpdk-2.2.0文章目录DPDK 无锁环形队列(Ring)@[TOC]1. DPDK中的环形数据结构2. 环形队列:单生产者/单消费者模式2
2020-11-08 22:18:57 14254 2
原创 Linux 内核:匠心独运之无锁环形队列kfifo
Linux 内核:匠心独运之无锁环形队列Kernel version Linux 2.6.12 Author Toney Email vip_13031075266@163.com Date 2020.11.8 目录Linux 内核:匠心独运之无锁环形队列1. 前言2. Kfifo简介3. Kfifo初始化3.1 判断一个数是否为2的幂次方3.2 求不小于某个数2的整数次幂3.3 为什么要求2的幂...
2020-11-08 14:54:06 11286 5
原创 什么是内存屏障? Why Memory Barriers ?
要了解如何使用memory barrier,最好的方法是明白它为什么存在。CPU硬件设计为了提高指令的执行速度,增设了两个缓冲区(store buffer, invalidate queue)。这个两个缓冲区可以避免CPU在某些情况下进行不必要的等待,从而提高速度,但是这两个缓冲区的存在也同时带来了新的问题。1. cache一致性问题Cache 一致性问题出现的原因是在一个多处理器系统中,每个处理器核心都有独占的Cache 系统(比如一级 Cache 和二级 Cache),而导致一个...
2020-10-24 10:25:16 37585 14
原创 通用双向循环链表操作函数集:你能想到、不能想到的都在这里了
前言双向链表操作由于涉及多个指针,很容易出错。而我们在工作中有不可避免的会使用到,为了一劳永逸的解决问题,特意将Linux源码中的list.h略作整理,并结合多个项目中的实现,最终整理了一份很全面的双向链表操作函数的头文件,以后再遇到双向链表的问题,应该不用再发愁了。我们只需要专注我们自己的功能实现即可,无需再花费很多时间来写双向链表操作函数。头文件/****************************************************************************
2020-06-21 17:39:32 4597
转载 知乎大佬图文并茂的epoll讲解,看不懂的去砍他
select、poll、epoll的文章很多,自己也看过不少经典好文。不过第一次看到讲的如此通俗易懂、又图文并茂的。因此拿来分享下,供后续翻看学习。原文链接:https://zhuanlan.zhihu.com/p/63179839下面开始划重点:因为epoll的重要性,不少游戏公司(如ssjj小游戏)在招聘服务端同学时,可能会问及epoll相关的问题。比如epoll和select的区别是什么?epoll高效率的原因是什么?如果只靠背诵,显然算不上深刻的理解。网上虽然也有不少讲解epol
2020-06-17 00:42:17 10858 2
原创 kernel_thread()和kthread_run()/kthread_create()的根本区别
1. 函数的作用首先要说明的是:这几个函数都是用来创建内核线程的。先看一下几个函数关系:这里有两个长得很像的函数:create_kthread() 和 kthread_create()。(这不是长得像,根本就是一样的好吧,有点难记),这里只是函数封装的很像,但本质上还是kernel_thread() 和 **kthread_create()**这两个函数的区别。从上面的函数调用便可以看出:...
2019-10-21 23:14:58 14832 3
转载 select、poll、epoll之间的区别
select、poll、epoll之间的区别:(1)select==>时间复杂度O(n)它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。(2)poll==>时间复杂度O(n...
2019-07-27 18:13:12 6360 1
原创 交换机之vlan详解
一、为什么需要VLAN1.1、什么是VLAN?VLAN(Virtual LAN),翻译成中文是“虚拟局域网”。LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。VLAN所指的LAN特指使用路由器分割的网络——也就是广播域。在此让我们先复习一下广播域的概念。广播域,指的是广播帧(目标MAC地址全部为1)所能传递到的范围,亦即能够直接通信的范围。严...
2019-05-23 22:34:32 65673 12
原创 Linux原始套接字抓取底层报文
1.原始套接字使用场景 我们平常所用到的网络编程都是在应用层收发数据,每个程序只能收到发给自己的数据,即每个程序只能收到来自该程序绑定的端口的数据。收到的数据往往只包括应用层数据,原有的头部信息在传递过程中被隐藏了。某些情况下我们需要执行更底层的操作,比如监听所有本机收发的数据、修改报头等,而像SOCK_STREAM、SOCK_DGRAMZ则通常用于应用层,并不能满足该需求。...
2018-12-16 00:08:09 9239 13
原创 container of()函数简介
在linux 内核编程中,会经常见到一个宏函数container_of(ptr,type,member), 但是当你通过追踪源码时,像我们这样的一般人就会绝望了(这一堆都是什么呀? 函数还可以这样定义??? 怎么还有0呢??? 哎,算了,还是放弃吧。。。)。 这就是内核大佬们厉害的地方,随便两行代码就让我们怀疑人生,凡是都需要一个过程,慢慢来吧。 其实,原理很简单: ...
2018-02-25 21:15:45 95127 51
原创 Kernel lockdown is enabled and set to ‘confidentiality‘.
Kernel lockdown is enabled and set to 'confidentiality'. Lockdown mode blocksparts of BPF which makes it impossible for bpftrace to function. Please seehttps://github.com/iovisor/bpftrace/blob/master/INSTALL.md#disable-lockdownfor more details on lockdo
2022-10-30 10:04:02 774
原创 Go中TLS源码学习(6)之Server端第3次TLS握手
本文的初衷是:**深入学习SSL/TLS协议**。在工作过程中做了2年的IPSecVPN, 在此过程中经常遇到将IPSe与SSL对比的情景:包括各自的协议异同、应用场景、协议本身复程度以及用户易用性等各个方面。在做IPSec的这段时间并没有详细接触SSL协议,因此对上述的问题并没有多少了解和认识。但是做ipsec的我面试时,老被问TLS........也是没谁了。痛定思痛,IPSec和SSL协议作为安全协议中的杰出代表,还是很有必要深入研究学习下,即使我不再面试,也为了后面的面试人做准备吧。...
2022-06-18 16:27:53 1215
原创 Go中TLS源码学习(5)之Server端第二次TLS握手
本文的初衷是:**深入学习SSL/TLS协议**。在工作过程中做了2年的IPSecVPN, 在此过程中经常遇到将IPSe与SSL对比的情景:包括各自的协议异同、应用场景、协议本身复程度以及用户易用性等各个方面。在做IPSec的这段时间并没有详细接触SSL协议,因此对上述的问题并没有多少了解和认识。但是做ipsec的我面试时,老被问TLS........也是没谁了。痛定思痛,IPSec和SSL协议作为安全协议中的杰出代表,还是很有必要深入研究学习下,即使我不再面试,也为了后面的面试人做准备吧。......
2022-06-18 16:08:23 1000 1
原创 程序员的超大文件下载方法
场景超大文件现在还是蛮常用的,尤其使用第三方数据库(集)资料时,都需要先进行下载。这不一个朋友就遇到了这个需求:100多个G,先不说电脑内存,就是硬盘一般人的办公电脑估计都得腾点空间出来,更别提下载了。即使能达到网速1M/s且保持不便,那也得30个小时吧,但是现实是几乎不太现实,因为网速很不稳定,如果网断了,没办法续传,需要重头开始下载,这就很难搞。so针对这种方式该怎么下载呢?迅雷什么的是否可以下载我倒没有尝试? 不过看到过一个下载工具internetdownloadmanager(30天免费),
2022-05-28 13:58:41 11045 1
原创 IKE协商过程中Commit位的作用
Commit位的作用在ISAKMP协议的头部中有一个commit标记位, 这个commit位是干什么用的?这个问题比较有意思, 虽然做了2年的IPsec,但是这个标志位我并没有注意过。问题来源是这样的:我看到第一张图的时候,注意到报文发送之间差了将近10s, 因此第一感觉是报文丢了(没更具体到最后一个包),重发导致的。但是当我看到第二个图的时候,好像出问题了:这个明显不是由于报文丢弃重发的。不过这个时候,我依然没有上心,只是感觉可能是环境或者抓包出错导致的;因为我以前也遇到过更奇葩的情况,例
2022-05-28 00:31:35 510
原创 openswan性能初步分析
openswan性能初步分析这里相对openswan的性能做个简单的说明。为什么要介绍这个话题呢?其实最主要的原因还是想openswan的性能到底如何、极限是多少隧道、会有哪些瓶颈等等? 比如某个项目,客户需要设备支持1000条隧道,那么首先要考虑自己的产品能否支持到这么多?也就是说需要知道自己的实力。如果不考虑这些实际的问题,只一味的接项目,那么最可能的结果就是白白投入这么多的人力物力时间,最终对于公司来说收效甚微。另一个原因:openswan的官方也没有给出明确的性能参数,比如说最大能支持多少
2022-05-19 22:18:00 950 2
原创 TLS模板测试
💖SSL/TLS专栏目录导航💖专栏包括的内容:💥1. SSL/TLS原理知识💥2. Go源码中TLS实现💥3. openssl中TLS实现💥4. SSL卸载💥5. SSL代理💥6. SSL V.P.N💥7. SSL 与 IPSec💥8. 其他font color=“#0000ff”>获取PDF版本请搜索关键字:“TLS详解”...
2022-05-04 22:57:43 275
原创 Go性能分析工具:pprof
1. 简介pprof 是profile(画像)的缩写,是Go中很常用的获取数据、分析数据的工具。pprof有很多优点:可视化,除此之外,go原生,简单方便,很容易上手。go tool pprof 是对应的命令行指令。它的源数据既可以是一个http地址,也可以是已经获取到的profile文件。使用go tool pprof命令时,既可以采用交互式终端,也可以采用web进行可视化分析,除此之外可以直接将数据生成svg图片,进行静态的分析。pprof可以分析以下9中数据:这9项对应的内容如下:
2022-04-13 23:10:48 7914
原创 Go 交叉编译x86, arm架构上的Linux可执行程序
1. Golang的交叉编译说明????????????golang中交叉编译非常简单。????????????直接在windows上设置几个Go环境变量便可以编译多种架构多个操作系统的可执行程序。https>go envset GO111MODULE=autoset GOARCH=amd64set GOBIN=set GOCACHE=C:\Users\Admin\AppData\Local\go-buildset GOENV=C:\Users\Admin\AppData\Roamin
2022-01-25 23:15:30 11284 9
原创 面向CSDN编程之:数据库字符串类型按数值大小排序(order by)
数据库字符串类型按数值大小排序(order by)1. 需求别人提供了一个数据库中的表,需要对某一列进行排序。这个问题直接使用order by命令可以,不过由于不是数值类型,导致按ASCII码顺序进行排序。比如说:在表中我使用string类型存储年龄age,然后根据age进行排序:可以看出,根本不是按数值大小排序的。2. 解决方法使用cast命令转换数据类型。...
2022-01-22 11:41:51 1876
原创 Wireshark中TLS版本显示说明
关于Wireshark中的TLS版本显示问题:wireshark标注tls所属版本,并不是通过当前报文来标注的,而是类似于会话的方式进行标注。目前ClientHello报文,需要兼容TLS1.3, TLS1.2,…等多个版本,仅从ClientHello无法判断出当前的版本。TLS版本是在ServerHello中确定的。1. TLS1.2 ServerHello报文:2. TLS1.3 ServerHello报文:3. 说明从这两张图上应该可以看出:TLS1.2与TLS1.3 的握手报文中v
2022-01-22 10:36:06 3138
原创 Golang中TLS版本设置
Golang中TLS版本设置文章目录Golang中TLS版本设置1. Go源码中的TLS2. https服务端修改TLS支持版本3. 抓包验证1. Go源码中的TLS最近在看Go源码中的http框架和tls实现框架实现,go中的TLS实现了TLS1.0, TLS1.1, TLS1.2, TLS1.3 四个版本,还有SSL3.0版本, 不过代码中已经明确说明不再支持SSL3.0版本。const ( VersionTLS10 = 0x0301 VersionTLS11 = 0x0302 Ver
2022-01-22 10:31:56 3959
原创 Wireshark 解密 TLS报文
文章目录第一步 配置Chrome浏览器TLS握手日志环境变量第二步 重启Chrome浏览器第三步 配置wireshark TLS首选项参数第四步 使用wireshark抓包实时查看解密后的报文信息以前使用wireshark解密过ipsec报文,那个流程还是蛮复杂的,需要从debug信息中找到各种密钥信息;今天尝试了下wireshark解密tls报文,没想象到操作很容易…不过操作完毕后也没学到啥东西,哈哈哈。第一步 配置Chrome浏览器TLS握手日志环境变量第二步 重启Chrome浏览器重启浏览
2022-01-18 23:33:31 3946 1
原创 面向CSDN编程之:golang判断文件是否存在
golang判断文件是否存在1. 背景周末花了两天写了一个爬取、并解析HMDB数据库的工具。这个网站搜索功能特别难用:响应时间特别长,此外经常出现错误,搜索失败。因此为了尽可能多的下载只能多运行几遍程序,此时就要求:如果网页已经下载了,那么就无需再次下载。这个小小的需求应用而生,功能虽然很小很简单,但是为了对得其这个文章的标题:面向CSDN编程, 我还是果断的去csdn搜索了,然后再放上来,正所谓:从群众来,到群众去2. 实现func FileExist(path string) bool { _
2022-01-17 23:27:27 792
原创 面向CSDN编程之:golang逐行读取文件内容
golang逐行读取文件内容1. 背景周末花了两天写了一个爬取、并解析HMDB数据库的工具,为了能够根据下载定义HMDB-ID的数据信息,我特意将涉及到的HMDB-ID存储到一个list.txt文件中,然后逐行读取list.txt文件,将读取到的接口拼接完成的URL后进行访问、下载。 文件中可以根据需要放很多ID,几百上千条是没有问题的。2. 实现以下代码中创建了很多的gorouting, 通过chan来判断是否结束。不过今天看书,书上说推荐使用WaitGroup变量来解决这种问题。有时间再试试w
2022-01-17 23:18:46 1447
原创 HMDB网站 爬取工具
HDMB网站有一个特别不友好的地方是: 搜索相应太慢,成功率还低,这个简直太不爽了。不过白天体验明显好于晚上体验…原因自己品吧效果图工具使用部分效果根据HMDBID下载结果设置搜索条件搜索结果解析成Excel文件...
2022-01-17 22:25:30 1322
原创 面向CSDN编程之:golang读取json文件,并序列化为字符串
golang读取JSON文件1. 背景周末花了两天写了一个爬取、并解析HMDB数据库的工具,为了能够根据需要修改关键搜索参数,我使用了配置文件的方式进行配置。配置文件当时为了快速省事,直接采用了json文件。在程序启动时,读取配置文件中的参数,然后使用这部分参数从HMDB网站获取数据,也算是比较灵活方便了。2. 实现由于配置文件比较小,这里我直接读取了整个文件内容;然后将其解析成对应的结构体type ReqParam struct { SearchMode string `js
2022-01-17 21:59:24 1541
原创 RSA 算法图解+数学证明
1. RSA交互流程我下面以使用最为广泛的RSA算法(三位发明者名字的缩写)为例来介绍公钥密码的原理,并通过数学公式做一个简要的证明。当然这个需要的数学定理和公式有点多,我也不太擅长高等数学┭┮﹏┭┮,哦,高等数学中也没有讲mod运算呀,它是数论的概念,也是数论里的最重要的工具。2. RSA的加密RSA的加密过程可以通过一个公式来表示: 加密过程中用到了两个数:E, N。他们是什么呢?从上面的加密公式可以看出,加密报文只需要知道E,N便可以完成,因此只需要知道
2022-01-09 09:26:11 10087 3
原创 面向CSDN编程之:go mod更新指定版本
兵在精而不在多更新某最新版本go get -u gorm.io/gorm更新指定tag版本v0.0.1go get gorm.io/gorm@v0.0.1更新某一分支最新版本go get gorm.io/gorm@branch1
2022-01-08 21:48:12 3109
原创 面向CSDN编程之:postgres数据库 模糊搜索功能
postgres进行模糊搜索时,搜索内容不能包含正则表达式相关的字符。例如:为了测试,数据库中有一个名字叫做:欧阳(娜娜)postgres=# SELECT name FROM "3年A班" WHERE id=2 and name ~ '(娜娜)'; ----------------------------------------------------欧阳(娜娜)(1 row)postgres=# SELECT name FROM "3年A班" WHERE.
2022-01-08 21:45:48 801
IBM z/OS诊断手册
2022-05-27
网络安全协议值IPSec协议介绍
2022-05-19
ipsec抓包.rar
2021-10-03
windows虚拟网卡驱动.zip
2021-06-02
L2TP协议学习文档.docx
2021-05-12
LeetCode刷题模板.pdf
2021-04-05
IPSec加密流程学习笔记.pdf
2020-11-30
330684-006intelqatapiprogrammersguide.pdf
2020-08-19
330687qatperformanceoptimizationguiderev007us.pdf
2020-08-09
IPSec中pluto框架和函数接口
2020-03-29
TCP/IP 协议 卷2
2018-07-14
TCP/IP协议 卷1
2018-07-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人