任何人都可以帮助我在套接字编程中跟踪bind()
系统调用。我想知道在内核空间中调用bind()
时会发生什么。它更新的结构和在较低级别调用的函数
答案 0 :(得分:0)
bind(2)
系统调用只是配置一旦您连接(或sendto(2)
)套接字将使用的本地方的地址参数。如果您不使用它,内核会为其选择默认值,具体取决于底层协议。
以下确切的过程bind(2)
取决于您正在处理的协议系列,因为绑定的行为会有所不同,具体取决于您使用PF_UNIX
,PF_INET
,PF_PACKET
, PF_XNS
等等。
例如,在Unix套接字中,您将获得与文件系统中的inode相关联的套接字(当然是支持unix套接字的inode),因此客户端有一条连接路径(在Unix套接字中,地址是文件系统中的路径)。在TCP / IP套接字中,您可以修复套接字可以侦听的本地IP地址或本地IP端口(接受连接),也可以强制IP地址和/或端口从服务器连接到服务器。
为了更深入地了解网络套接字内部,我建议您阅读WR Stevens " TCP / IP Illustrated Vol 2中的优秀书籍。实现," 描述实现NET2中的BSD套接字。它已经老了,但仍然是有史以来最好的解释。为了更好地介绍BSD套接字系统调用,WRStevens还有一本很好的书(很长一段时间它确实也是BSD unix系统调用的最佳系统调用参考):&# 34; UNIX网络编程,第1卷(2ND Ed):套接字API。" 两者都是每个人都应该在工作中可用的两个珠宝。