gpt4 book ai didi

linux - Linux 内核中的 TCP 调用流程

转载 作者:可可西里 更新时间:2023-11-01 02:33:46 26 4
gpt4 key购买 nike

我正在尝试在 Linux 内核中获取 TCP 调用流,版本 3.8 用于不同的用户空间 API,例如连接、绑定(bind)、监听和接受。谁能给我提供流程调用的流程图?我能够使用发送和接收 API 找到数据流。

另一个问题,当客户端连接到服务器时,服务器会为 accept API 返回的特定连接创建一个到该客户端的新套接字。我的问题是 Linux 内核是否在某些哈希绑定(bind)表中维护监听套接字和从中派生的套接字之间的任何关系?

最佳答案

第一个问题:

http://www.danzig.jct.ac.il/tcp-ip-lab/ibm-tutorial/3376c210.html

Haifux的所有讲座都是经典的:

http://www.haifux.org/lectures/172/netLec.pdf

http://www.haifux.org/lectures/217/netLec5.pdf

这是来自 linux 网络的原作者/维护者本人:

http://vger.kernel.org/~davem/skb.html

http://vger.kernel.org/~davem/tcp_output.html

http://vger.kernel.org/~davem/tcp_skbcb.html

第二个问题:是的,所有现有连接都保存在一个关键表中:tcp_hashinfo。它的内存地址可以从/proc/kallsyms 中读取。 “关键”是因为从中读取需要锁定,所以即使您有地址也不要尝试在 table 上走动。使用全局导出的符号,如“inet_lookup_listener”或“inet_lookup_established”来代替表格。

更多信息在这里:

How to identify a specific socket between User Space and Kernel Space?

关于linux - Linux 内核中的 TCP 调用流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25165804/

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