工程目录
目录 | 文件 | Description |
---|---|---|
app | 内嵌shell的网络命令 | |
ping.c | 网络请求命令 | |
snc.c | 网络监听命令 | |
arp | arp_cache.c | 地址数据缓存 |
arp.c | 地址解析处理逻辑 | |
doc | 工程文档 | |
… | … | |
include | 头文件 | |
… | … | |
ip | 网络层 | |
icmp.c | 网际控制报文协议 | |
ip_forward.c | 报文重定向 | |
ip_in.c | 收到ip数据报,交给运输层 | |
ip_out.c | 发送ip数据报,从运输层来 | |
raw.c | 读取链路层数据 | |
route.c | 路由寻找下一跳 | |
lib | 静态库文件 | |
cbuf.c | 环型缓冲数据结构 | |
checksum.c | 加和检查完整性 | |
lib.c | 打印、内存分配方法等 | |
net | 物理层、数据链路层 | |
loop.c | 事件轮询 | |
net.c | 数据链路层 | |
netdev.c | 网络设备相关 | |
pkb.c | 数据报相关 | |
tap.c | 操作tap设备 | |
veth.c | 虚拟网络,用户态处理的起点 | |
shell | 交互界面 | |
main.c | 程序启动入口 | |
net_command.c | 网络命令交互 | |
ping_command.c | ping命令交互 | |
shell.c | ||
socket | ||
inet.c | 绑定上层运输层协议 | |
raw_sock.c | 默认网络帧处理 | |
sock.c | 底层套接字 | |
socket.c | 上层套接字 | |
tcp | 模拟传输控制协议 | |
tcp_in.c | tcp报文接收处理 | |
tcp_out.c | tcp报文发送处理 | |
tcp_reass.c | 分配数据段? | |
tcp_sock.c | tcp套接字相关 | |
tcp_state.c | 状态处理 RFC 793 | |
tcp_text.c | 滑动窗口收发数据 | |
tcp_timer.c | 超时计时器 | |
udp | 模拟用户数据报协议 | |
udp_sock.c | udp套接字相关 | |
udp.c | udp报文接收处理 |
编译过程
外层Makefile
配置调试选项、网络拓扑选项
执行make
命令时,先用下层Makefile
构建各个模块.o
文件
各模块.o
文件链接为目标文件xxx_obj.o
各模块目标文件,构建为可执行文件tapip
1 | LD = ld |
ld
链接器gcc
编译器-Wall
选项可以打印出编译时所有的错误或者警告信息-I
选项指定寻找头文件的路径-pthread
执行多线程选项-g
选项是指可以用gdb调试