- 博客(116)
- 资源 (1)
- 收藏
- 关注
原创 TCP/IP协议栈socket实现浅析(上) 连接建立相关函数及连接建立过程分析
以陆运运送货物为例子,类比网络分层的作用,此处片面的描述作用范围。经过三层转发时,每次源目的mac全部会变更,而源目的ip是肯定不会变的。首先货物要包装好,然后发件人填写发件人的名字和收件人的名字(源目的端口号),填写收件人和发件人的地址(源目的ip),查看离自己最近的网点(比如某xx驿站)的地址把货物送出(默认路由和目的mac),货物会从网点出发,经过一个个中转站,最终把货物送达最后一个中转站,然后由中转站又到达了某某网点,快递员配送到收件人手中。//code。
2024-07-17 23:16:19 958
原创 内核调试方法
会接管所有的线程,如果你从一个线程切换到另外一个线程, gdb 会马上把原先的线程暂停。一般用 gdb 进行多线程调试,需要注意两个参数: follow-fork-mode 和detach-on-fork。但是在wsl2上尝试全部成功。这步是在编译内核之后进行的,因为有些特性需要在内核编译时就指定,比如kgdb。可以使用串口连接,或者使用socat实现远程gdb连接kgdb,另外还有agent-proxy小工具可用。在用 gdb 来调试内核的时候,由于内核在初始化的时候,会创建很多子线程。
2024-07-11 00:41:54 1031
原创 进程输入输出及终端属性学习
当主进程fork或exec子进程,文件描述符被继承,因此0,1,2句柄也被继承,从而使得telnet等服务,可以做到间接调用别的shell或程序。比如如果是远程登录使用的zsh,那么其会重定向到相应的pts进程在转为守护进程时,可以经0,1,2句柄重定向到/dev/null,做到不输出任何信息。备注:STDOUT_FILENO、STDIN_FILENO是int型的文件描述符,是非负整数,属于没有buffer的I/O;一般定义为0, 1, 2 ,在定义。012。
2024-07-06 16:07:40 341
原创 ebpf学习
先看ebpf.io的介绍,可以设置中文。这里摘录一些我觉得有必要记录的:如何编写 eBPF 程序?在很多情况下,eBPF不是直接使用,而是通过像 Cilium、bcc 或 bpftrace 这样的项目间接使用,这些项目提供了 eBPF 之上的抽象,不需要直接编写程序,而是提供了指定基于意图的来定义实现的能力,然后用 eBPF 实现。如果不存在更高层次的抽象,则需要直接编写程序。Linux 内核期望 eBPF 程序以字节码的形式加载。
2024-01-11 23:33:27 1210
原创 《Learning eBPF》读书笔记
相关章节,标黑的是准备看下的:第1章:介绍第2章:hello world例子以及ebpf程序和ebpf map概念的介绍第3章:ebpf程序以及他们是如何运行在内核中的第4章:探索用户态进程和ebpf程序之间的接口第5章:介绍co-re,即一次编译,任何地方运行第6章:ebpf验证器第7章:介绍许多不同类型的ebpf程序和他们的挂载点第8章:网络特性的ebpf程序介绍第9章:ebpf安全特性应用第10章:许多编程语言应用的概览,用户态进程和epbf程序交互使用的库和框架。第11章:展望。
2024-01-07 17:37:50 1117
原创 函数调用图生成
虽然之前就知道有生成调用图的工具,但是没见过这种,我目前分析代码,都是用的流程图,横向表示调用,纵向表示顺序流程。但是一看上面这种,感觉更清晰一点,然后就去研究了。。2023/12/29 去问了作者本人,他说这个是自己手动整理的。。。。
2023-12-29 23:24:24 492
原创 uboot学习及内核更换&&设备树及rootfs学习
在前面可以自己编译内核并且可以使用uboot之后,下面就研究下怎么能够快捷的更换版本,而不是把sd卡从树莓派一次次插拔,顺便学习下uboot常见命令。
2023-12-29 23:22:41 1264
原创 VsCode备忘
上次简单学习了一下vscode的使用,结果好长时间没用,今天打开又全忘了。。。再记录一下吧Ctrl+Shift+P 命令面板,查找命令,设置等等Ctrl+` 打开集成终端,监视生成输出Ctrl+,打开设置
2023-09-08 00:13:34 886 1
原创 英语语法学习_incomplete
在语言学中,自然语言的语法是说话者或作者在从句、短语和单词的构成上的一套结构约束。1「语法」实际上有两个概念,一是「语法」(也叫「文法」),二是「语法学」。一、语法:客观存在的语言结构规律(词的变化和组词成句规则)。语法研究包括句法、语义、语用三方面。句法包括传统句法及词法。语义包括句法结构隐含的语义成分、语义指向、语义特征。语用包括语境和句调、语气以及句法结构的变化。二、语法学:对语法系统和语法规律的理论总结和说明。包括普通语法学、描写语法学、历史语法学(语法史)、比较语法学、规范语法学、程序语法学
2023-07-02 11:20:01 392
原创 go语言学习_incomplete
rust没咋整明白,再来了解下go语言基础知识,参考资料为菜鸟教程以及go程序设计语言。go语言与google关系匪浅,且发明人之一还是c语言的发明人之一,可以说是很神奇了。
2023-06-22 13:46:14 942 2
原创 rust语言学习_incomplete
我看的是rust官方教程的翻译版(感谢翻译的大佬们),这里记录下学习的过程。cargo是rust的构建系统和包管理器创建项目的过程感觉很新奇,使用cargo new后,会自动创建目录结构,而且还自动创建了git仓库。src里面新建了一个打印helloworld的rs文件看下Cargo.toml里的内容,这里面连版本号都有。编译命令是cargo build,这个看起来没啥,但是好处是开发环境的统一,checkout一个仓库,直接就可以build(甚至不限定目录)。虽然./configure&&make也差
2023-06-22 09:18:13 963
原创 路由转发相关下内核知识整理
netlink可以提供了接口可以向内核增加,删除,查找与接口、地址、路由、arp等相关信息。通过system函数直接下发net-tools或iproute2相关命令下内核。与路由相关的netlink协议族为NETLINK_ROUTE。第二个参数是设备相关的请求码。SIOCSIFVLAN 设置vlan虚接口。SIOCSIFFLAGS 设置接口标志。SIOCGIFFLAGS 获取接口标志。SIOCSIFADDR 设置接口地址。SIOCGIFADDR 获取接口地址。
2023-06-03 09:11:46 488
原创 交叉编译相关知识整理
因为嵌入式设备的特殊性,比如其内存,性能可能相比与通用设备较弱,或者设备上缺少编译工具链等等原因,很多时候想要在嵌入式设备上使用某些程序时,需要在 在通用机器上编译好,而在嵌入式设备上运行,而这两者的cpu架构是不同的,因而需要好好整理下交叉编译。
2023-05-02 17:21:44 1022
原创 源码安装工具checkinstall使用
每当从源码包编译程序时,安装过程很愉快,但当你想删除时,就很费脑筋了,你可能要去找你当时编译的目录执行make unistall,当然更可能的是,你早就把源码包给删除了,对于强迫症来说,这显然不能忍。执行后会交互的让你确定一些信息,默认配置是从 /etc/checkinstallrc 读取的。–addso 把共享库加到/etc/ld.so.conf。-R 生成RPM package.–include 强制包含文件或目录。–inspect 检查包的文件列表。至此,安装的文件可以较好的管理了。
2023-05-02 02:04:39 1098 2
原创 报文转发流程简述
如果设备接收到的报文的目的MAC地址匹配三层接口的MAC地址,则通过设备的三层接口进行三层转发;否则通过设备的二层接口进行二层转发。二层转发根据报文的目的MAC地址查找MAC地址表,得到报文的出接口,然后将报文发送出去。三层转发根据通过路由表优选出的转发表获取下一跳及出接口信息,然后再根据下一跳出接口查邻接表,获取到该下一跳的链路层转发信息,如链路层协议(PPP、HDLC等)及介质类型(P2P、NBMA)、封装报文的链路层头信息等,然后根据此信息对报文进行封装后转发。若在网络层发现报文的目的地址是路由
2023-05-01 14:11:14 1826 1
原创 内部网关路由协议学习
工作以来,接触过的igp协议也有不少了,动态的路由选择协议中,大致分为两类:距离-矢量协议(如rip,eigrp等)及链路状态协议(如isis,ospf)。动态路由协议不仅执行路径决策和路由表更新功能,还要在最优路径不可用时决策下一条最优路径。动态路由协议比静态路由协议的最大优势就在于,动态路由协议能够缓解网络拓扑变化带来的影响。距离-矢量协议,是按照传闻进行路由选择。距离-矢量协议的路由是以矢量(距离,方向)的方式被通告出去的,其中距离是根据度量定义的,方向是根据下一台路由器定义的。比如“目标A在下一
2023-05-01 14:11:11 82
原创 gdb server简单探索
gdb server运行于嵌入式设备,比如arm或arm64体系结构,体积小,占用资源少,相当于一个前端。gdb server可以attach到一个strip的进程。gdb运行于性能更高的主机,如x86设备上,需要有带符号表的相应进程。以下分别以aarch64和x86来指带被调试进程运行设备(也就gdbserver运行设备)和gdb运行的设备。
2023-05-01 02:36:51 1249
翻译 Kernel Build System中文手册_incomplete
- ...每个条目都拥有自己的依赖。这些依赖用来决定一个条目的可见性。任何子条目只有在他的父条目可见时才可见。
2022-11-20 16:03:45 225
原创 macOS编程环境记录
安装后,会多出一个应用程序,并且会自动安装驱动,在我这里安装失败了,需要去设置>安全性与隐私->通用里面,手动批准一下,里面应该有一个安装驱动失败的记录。其他的都参考随驱动一起下载下来的安装指导即可。确认驱动安装成功之后,插入CH340硬件,然后可以按照如下步骤查看硬件是否已经驱动成功。文章底下找到各个平台的驱动,我百度出来这个产品是沁恒开发的,这个就是他们的官网文章。主要应该就靠方法1判断,因为我暂时没发现方法2里在安装前后有啥区别。如果按照方法1没有这个设备,那么就需要安装驱动,可以在。
2022-10-02 19:56:51 256
原创 树莓派交叉编译USB转网卡驱动_incomplete
linux内核源码,交叉编译工具链,驱动源码。背景:之前我用我的树莓派来组网测试,但是一个以太网口不够用,无线不能接入测试网,所以萌生了用空闲usb口来当网口的想法,JD一搜,买了个绿联的USB百兆网卡给我的树莓派用。顺便提一句,编译驱动有两种办法,一种是编译进镜像里,一种是编译出.ko然后用命令安装。官网给出的源码除了给出驱动的编译教程外,还多了个命令行工具ioctl的编译,用于改写eeprom的内容,比如mac地址。使用交叉编绎的原因是,看别人的文档,好像要编挺长时间,所以就交叉编译提高下速度。
2022-09-17 23:21:33 880
原创 macOS快捷键
按住 Option 键并将指针移到窗口左上角的绿色按钮 上方,然后从出现的菜单中选取“将窗口移到屏幕左侧”或“将窗口移到屏幕右侧”。如果 App 打开了多种类型的窗口(例如“邮件”打开了显示窗口和新邮件窗口),则只会合并活跃类型的窗口。滚动浏览所有打开的 App:按住 Command 键,按下 Tab 键,然后按下左箭头键或右箭头键直至导航到您想要的 App。松开 Command 键。切换到另一个 App 并隐藏其他所有 App:按住 Option-Command 键点按想要切换至的 App 图标。
2022-08-24 01:11:47 491
翻译 automake中文手册(部分翻译)
automake是一个根据Makefile.am文件自动生成Makefile.in的工具。每个Makefile.am文件都基本上是由一系列make变量定义组成(偶尔可能也会夹杂规则)。由Makefile.am生成的Makefile.in文件与GNUMakefile标准兼容。Gun的Make标准文档很长,很复杂,又容易变化,而Automake的目标就是将Makefile维护的负担从GNU维护人员身上移除(把他放在automake维护者身上)。最典型的automake输入文件就仅仅是一系列变量定义。......
2022-07-14 23:30:18 1319
原创 FRRouting使用
当刚刚安装好后,启动FRR并不会做任何事情,这是因为守护进程必须在配置文件显式的使能才会运行。FRR的守护进程各自拥有自己的终端接口或VTY。可以通过每个守护进程的端口号去单独的连接他们。我的版本里面,这些端口号已经自动被加进/etc/services里面了systemctl status frr.service如果提示没找到,可以去git仓库拷贝服务文件。我这里是有的。像我在第一步里面已经把vrrp,rip,isis,ospf等全都使能了,所以在这里就能看到。vtysh是FRR的交互性shell:使用s
2022-07-09 16:05:28 1777
原创 树莓派配置
感觉这个树莓派都买了好几年了,一直没用过,现在拿出来再用用了。我的是3B。首先,官网地址。最靠谱的文档。datasheets:地址硬件规格:Quad Core 1.2GHz Broadcom BCM2837 64bit CPU1GB RAMBCM43438 wireless LAN and Bluetooth Low Energy (BLE) on board100 Base Ethernet40-pin extended GPIO4 USB 2 ports4 Pole stereo o
2022-07-09 13:57:16 569
原创 Linux常用网络命令参数整理
NAMEtcpdump - dump traffic on a networkSYNOPSIStcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ][ -c count ][ -C file_size ] [ -G rotate_seconds ] [ -F file ][ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ][ --number ] [ -Q in
2022-06-26 00:09:58 662
原创 整数在内存中的表示方法以及计算机加减法 && 浮点数表示方法_incomplete
有些东西我都是嫌麻烦,上课没认真看,结果实际用到又要到处找。实际这是最最基础的东西了,可以我看了之后,下次要用,又忘了。这次记录一下。
2022-04-29 18:51:46 425
原创 makefile学习笔记
makefile文件,见了不少,但自己不会写,在这里学习一下,看的是一位程序员前辈的博客,好像是2004年写的了,不过对我这种以入门为目的的人来说应该已经足够了。另外贴一下他的新站的网址。这里针对阅读内容做下记录。...............
2022-04-10 15:55:46 877 1
原创 csdn markdown支持与扩展测试
这里写目录标题csdn markdown支持与扩展测试文本样式列表链接代码片表格其他csdn markdown支持与扩展测试文本样式强调文本 强调文本加粗文本 加粗文本标记文本删除文本引用文本H2O is是液体。210 运算结果是 1024。列表项目项目项目项目1项目2项目3 计划任务 完成任务链接链接: link.图片: 带尺寸的图片: 居中的图片: 居中并且带尺寸的图片: 代码片下面展示一些 内联代码片。// A code
2022-03-31 22:12:10 136
原创 python爬取网页
最近想爬csdn的博客,需要对html有所了解,这里记录一下。这里以博客的文章页面的html为参考。参考:文章参考1html网页headlink<link> 标签定义文档与外部资源的关系。rel 属性规定当前文档与被链接文档之间的关系。rel="canonical"属性值 告诉搜索引擎当前网站中的重复或相似的网页中,哪一个页面才是站长想让其抓取与收录的。meat<meat> 提供了 HTML 文档的元数据。元数据不会显示在客户端,但是会被浏览器解析。script
2022-03-28 12:43:06 1135
原创 python文档学习
1. python文档学习1.1. python解释器1.1.1. 传入参数1.1.2. 交互模式的提示符1.2. python数据类型与运算符1.2.1. 数字类型1.2.2. 集合(set)1.2.3. 序列1.2.3.1. 字符串类型(str)1.2.3.2. 列表(list)1.2.3.3. 元组(tuple)1.2.4. 字典(dict)1.2.5. 运算符1.3. 控制流1.3.1. 选择1.3.2. 循环1.3.2.1. 对象方法在循环.
2022-03-28 09:54:22 3098
原创 windows开发环境记录
工具:everythingbeyond comparegithub desktopGit for Windowsgrammarlynotepad++xmind环境Node.JsUbuntu on Windowsvmwaredocker
2022-03-14 11:30:30 133
原创 WSL2简单探索
文章目录前言默认启动路径配置代理服务器配置zsh配置docker前言 为了同时可以受益于windows易操作性(主要是能玩游戏)和linux的生产力环境,我之前尝试装过双系统,但是双系统切换麻烦。用过虚拟机,但是虚拟机总是感觉很累赘。之前也装过docker,也装过wsl,但总是没用利索。尝试这么多的目的就是能够轻量化,快速简洁的创建一套或多套开发环境出来。首先是wsl,即Windows Subsystem for Linux,适用于 Linux 的 Windows 子系统,最简单的安装方法就
2022-03-13 15:40:41 3032
ctb通信库libctb-0.16
2017-06-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人