Linux内核--网络协议栈深入分析(五)--套接字的绑定、监听、连接和断开

2014-11-24 10:17:08 · 作者: · 浏览: 1

本文分析基于Linux Kernel 3.2.1


1、套接字的绑定


创建完套接字服务器端会在应用层使用bind函数惊醒套接字的绑定,这时会产生系统调用,sys_bind内核函数进行套接字。


系统调用函数的具体实现


首先调用函数sockfd_lookup_light()函数通过文件描述符来查找对应的套接字sock。


上面函数中先调用fget_light函数通过文件描述符返回对应的文件结构,然后调用函数sock_from_file函数返回该文件对应的套接字结构体地址,它存储在file->private_data属性中。


再回到sys_bind函数,在返回了对应的套接字结构之后,调用move_addr_to_kernel将用户地址空间的socket拷贝到内核空间。


然后调用INET协议族的操作集中bind函数inet_bind函数将socket地址(内核空间)和socket绑定。


这样套接字绑定结束。