Networking 理解';结构原型';和';结构原型操作&x27;在内核中
我正在研究tcp/ip实现,特别是套接字层,对于一些结构我还不太了解 我知道“struct proto_ops”用于定义操作,例如bind/connect/accept,每个套接字都有一个指定的proto_ops 另一方面,“struct proto”定义了新的协议,该结构还定义了accept/bind/setsockopt/getsockopt/etc.方法的函数指针 我在$linux/net/中读了很多代码,我不知道它在哪里使用了通过“struct proto”定义的操作,所以我不确定这些方法在代码中是如何使用的 有人能帮我澄清一下吗?Networking 理解';结构原型';和';结构原型操作&x27;在内核中,networking,linux-kernel,Networking,Linux Kernel,我正在研究tcp/ip实现,特别是套接字层,对于一些结构我还不太了解 我知道“struct proto_ops”用于定义操作,例如bind/connect/accept,每个套接字都有一个指定的proto_ops 另一方面,“struct proto”定义了新的协议,该结构还定义了accept/bind/setsockopt/getsockopt/etc.方法的函数指针 我在$linux/net/中读了很多代码,我不知道它在哪里使用了通过“struct proto”定义的操作,所以我不确定这些方
谢谢。你可以这样想象。有三层:
BSD sock->inet sock->tcp/udp sock
相应的行动:
BSD api->proto_ops->proto
如果您阅读sys_socket()和sys_read(),您将得到相同的答案
希望这能帮助您:-)我认为当新手尝试创建新协议时,这个问题是最令人头痛的问题 解释: 这两种结构都有名称相似的成员元素,尽管它们表示不同的函数
- 结构保护操作:用于套接字层和传输层之间的通信
- struct prot:用于与系统调用通信
- 在函数prot_ops_connect()中,我们需要调用sk->sk_prot->connect()
- sk->sk_prot->connect()将自动调用proto_connect()