星巡研究院

渗透视角下的工具底层

同一族套接字系统调用,不同语言在调。 ``` curl → libcurl(C库)→ sys/socket.h → 内核网络栈 python requests → urllib3 → socket模块 → _PYTHON_SOCKET(C扩展)→ sys/socket.h → 内核 Go net/http → net包 → syscall.Socket → 内核(Go 不经 libc,也不经 sys/socket.h) ``` 三段对比,读者明白:不同语言写的工具,底层落到同一族套接字系统调用;Go 不经 libc,C 系语言才经 libc 封装。 ### 4.1 Go 与 C 库:本册最常见的误判 **结论先行:Go(非 cgo)程序在 Linux 上不经 libc,运行时直接发系统调用。** - C / Ruby / Java / Node / Python:经 libc 封装后陷入内核,断面常看到 `sendto(44)` / `recvfrom(45)`。 - Go:runtime 直接陷入;已连接套接字上的读写常表现为 `write(1)` / `read(0)
这是进阶内容

升级理论包获取本册全部章节,从机器本质系统入门