gongxucheng 2010-07-11
Linux TCP/IP协议栈对应于ISO七层参考模型分别为:
应用层-------------应用系统
表示层-------------BSD Socket层 socket.c
会话层-------------INET Socket层 af_inet.c
传输层-------------TCP/UDP tcp.c/udp.c
网络层-------------IP层 ip.c
链路层-------------设备接口层 dev.c
物理层-------------物理接口层
Linux通过int $0x80it调用进入sys_socketcall(int call,unsigned long *args),函数做为协议栈统一的接口。sys_socketcall()根据参数call跳转到相应不同的入口,完成TCP/IP 相应的功能。
Linux把系统调用号socketcall保存在寄存器eax中,把第一,第二个参数保存到ebx和ecx中。然后call *%eax调用sys_socketcall()。