Skip to content

Instantly share code, notes, and snippets.

@breakertt
Forked from BruceChen7/datastructure.md
Created August 26, 2024 00:04
Show Gist options
  • Select an option

  • Save breakertt/5a0c0f343e3f320992a9245ccf825893 to your computer and use it in GitHub Desktop.

Select an option

Save breakertt/5a0c0f343e3f320992a9245ccf825893 to your computer and use it in GitHub Desktop.
[#networking]#networking

如何学习网络协议栈

工具

  • systemtap 几乎无所不能,可以在内核放置探测点,然后执行自己的代码。
  • kprobe:简单的工具,可以快速检验某个函数是否被执行到
  • packetdrill:用于验证 TCP 协议的行为很有用。

数据结构

sk_buff: packet

内核显然需要一个数据结构来表示报文,这个结构就是 sk_buff( socket buffer 的简称),它等同于在<TCP/IP详解 卷2>中描述的 BSD 内核中的 mbuf。

sk_buff结构自身并不存储报文内容,它通过多个指针指向真正的报文内存空间:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment