第一章
1.1基本路线和要求
1.本书主要特点
2.socket的概念与意义
3.分析路线
服务器: socket() -->bind()-->listen()-->accept()-->read()-->write()-->close();
客户端: socket()->connect()-->write()-->read()-->close()
4.阅读要求
1.2TCP/IP协议层的划分与基本知识
1.TCP/IP协议层的划分
链路层-->网络层-->传输层-->应用层
2.TCP/UDP协议的基本知识
1.3函数到系统调用的过程
归纳为以下几点:
1. glibc库将socket()函数用weak_alias()定义一个别名__socket(). 在其它地方定义真实的的__socket()函数
如: 在glibc中定义socket()的别名为__socket(), 在glibc-2.14/sysdeps/unix/sysv/linux/i386/socket.S中定义真实的__socket()函数.
2. 函数__socket()的真实版本中, 将__NR_socketcall传递给eax寄存器, SOCKOP_socket传递给ebx寄存器, esp的内容传递给ecx寄存器. 然后进入系统调用int $0x80
3. 进入系统调用用, 以eax为索引执行系统调用表中相应的函数sys_socketcall(). 在此函数中, 以ebx作为转换值跳转到sys_socket()函数中执行执行.
1.4网络文件系统
1. 网络文件系统结构static struct file_system_type sock_fs_type = {...};
2. 初始化过程中会注册register_filesystem(&sock_fs_type)
3. 并安装网络文件系统kern_mount(&sock_fs_type)
4. 安装过程中用到sock_fs_type结构中的get_sb()钩子函数(挂入的是sockfs_get_sb), 其中get_sb_pseudo(fs_type, "socket:", &sockfs_ops, SOCKFS_MAGIC, mnt)完成.
阅读(648) | 评论(0) | 转发(0) |