gpt4 book ai didi

c - Bind 在内核空间内部如何工作?

转载 作者:行者123 更新时间:2023-11-30 17:11:25 24 4
gpt4 key购买 nike

任何人都可以帮我跟踪套接字编程中的bind()系统调用吗?我想知道在内核空间中调用 bind() 时会发生什么。比如它更新了哪些结构以及在较低级别调用了哪些函数

最佳答案

bind(2) 系统调用仅配置本地端的地址参数,套接字在连接后将使用这些参数(或 sendto(2))。如果您不使用它,内核会根据底层协议(protocol)为其选择默认值。

bind(2) 遵循的具体过程取决于您正在使用的协议(protocol)族,因为如果您使用 PF_UNIX,bind 的行为会有所不同PF_INETPF_PACKETPF_XNS

例如,在 Unix 套接字中,您将获得与文件系统中的 inode 关联的套接字(当然,支持 unix 套接字的 inode),因此客户端有一个连接路径(在 Unix 套接字中,地址是文件系统中的路径)。在 TCP/IP 套接字中,您可以固定套接字可以监听(以接受连接)的本地 IP 地址或本地 IP 端口,也可以强制从服务器连接到服务器的 IP 地址和/或端口。

为了更深入地了解网络套接字的内部结构,我建议您阅读 W.R. Stevens 的优秀著作“TCP/IP Illustrated Vol 2. Theimplementation”,其中描述了 NET2 中 BSD 套接字的实现。它很旧,但仍然是有史以来最好的解释。为了很好地介绍 BSD 套接字系统调用的使用,还有 W.R.Stevens 写的一本很棒的书(在很长一段时间内它确实也是 BSD unix 系统调用的最佳系统调用引用书):《UNIX 网络编程,卷》 1(第二版):套接字 API。” 两者都是每个人在工作中都应该拥有的两颗 gem 。

关于c - Bind 在内核空间内部如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32273581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com