当前位置: 首页 > news >正文

【linux】内核源码TCP->IP->L2层函数调用继续摸索中

日志打印的时候,把行数也打印了: 

 登录 - Gitee.comicon-default.png?t=N7T8https://gitee.com/r77683962/linux-6.9.0/commit/b847489a9910f68b9581fd8788807c697c82cdbd

上回基于应用层wget操作找到TCP调用的一些接口,并且已经到IP层的一些接口,当前基于TCP的这根藤一直往下摸瓜,当前测试到L2层,但是不知道是不是正确的,添加的日志打印:

登录 - Gitee.comicon-default.png?t=N7T8https://gitee.com/r77683962/linux-6.9.0/commit/ae06f0b767833040f7fc84eb433893431fe8048e行日志如下:

https://gitee.com/r77683962/linux-6.9.0/raw/ae06f0b767833040f7fc84eb433893431fe8048e/test_log/kern_tcp_ip_l2_2.log

我们先从日志找找,看看有没有觉得有用些的信息(这里有个小插曲,wget这个命令主要是下载,因为要看一个包从TCP到IP再到L2的函数调用流程,要找的是包在内核的发送流程(有的会问,那乍不把包是如何封装的过程也搞上呢,这。。。。主干流程都找到了,这种封包添加包头,加包尾什么的,应该也可以摸索出来的),要注意下,在实际添加打印日志的时候,也是自已根据阅读内核源码,感觉代码可能执行到哪里了,凭感觉走,不太确定,所以添加打印日志,验证自已的想法,因为代码里边会有各种分支流程什么的,在函数里边要学会找主流程,分支的一些参数设置、参数判断,一些宏处理什么这类非主干的流程要适当的放下,类似找项目的关键路径):

 接下来,我们一起看看上图这个红色方框,从代码级看是什么样子的:

这边也没有接上。。。。。

这边好像没有接上。。。。有点尴尬了。。。

注意,这个调用关系可能有问题。。函数调用的层级很多。。

下边这部分是按照代码流程猜测的。。。可能也不对。。

这个函数有两个分支,不知道是走的哪个分支。。。

正常的理解,操作系统从TCP调用IP,然后从IP调用L2这是正常的流程。 

其实到这里,如果自学能跟上的话,可以按照自已的想法提出假设,修改代码,重新编译内核,重启电脑,wget xxxx,查看日志,就可以验证自已的假设是否正确。

网络TCP操作这块到这里基本上结束了,下一个部分想想从哪方面入手。

相关文章:

  • win10修改远程桌面端口号,在Windows 10中修改远程桌面端口号的步骤
  • 数据库新技术【分布式数据库】
  • 信息安全、网络安全、网络空间安全傻傻分不清?
  • python18 正则表达式
  • ubuntu查看当前系统版本
  • Spring Security——结合JWT实现令牌的验证与授权
  • 八、yolov8模型预测和模型导出(目标检测)
  • 如何用GO语言实现冒泡排序算法?
  • LeetCode---402周赛
  • Win11 删除文件时提示“找不到该项目,请重试”的解决办法
  • 人工智能--搭建人工神经网络
  • Scala学习笔记14: 模式匹配和样式类
  • 酷瓜云课堂(内网版)v1.1.5 发布,局域网在线学习+考试系统
  • 5步快速了解电商渠道数字化管理||电商API数据采集|数据分析
  • Redis—List数据类型及其常用命令详解
  • 分享的文章《人生如棋》
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • Android交互
  • C++入门教程(10):for 语句
  • exif信息对照
  • gcc介绍及安装
  • Intervention/image 图片处理扩展包的安装和使用
  • Java 内存分配及垃圾回收机制初探
  • javascript面向对象之创建对象
  • java小心机(3)| 浅析finalize()
  • Python 反序列化安全问题(二)
  • REST架构的思考
  • web标准化(下)
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 分布式任务队列Celery
  • 给初学者:JavaScript 中数组操作注意点
  • 机器学习学习笔记一
  • 基于axios的vue插件,让http请求更简单
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 聊聊directory traversal attack
  • 小试R空间处理新库sf
  • 硬币翻转问题,区间操作
  • 正则与JS中的正则
  • AI算硅基生命吗,为什么?
  • FaaS 的简单实践
  • 仓管云——企业云erp功能有哪些?
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​Java并发新构件之Exchanger
  • ​如何防止网络攻击?
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • # include “ “ 和 # include < >两者的区别
  • #数据结构 笔记三
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • ${ }的特别功能
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)