ARM技术论坛
直播中

CDCNKA

8年用户 1231经验值
擅长:385288
私信 关注
[资料]

Linux内核网络的TCP传输控制块相关资料分享

1、Linux内核网络之传输层接收消息简析
在传输层发送消息时,TCP  发送出去消息后,会跟踪这些数据包,直到得到对方的确认为止。对于接收方来讲,当收到一个报文段时,其会根据情况把这些数据包添加到接收队列或者 prequeue 队列或者后备队列中。
在TCP传输控制块中存在三个队列:接收队列、prequeue队列和后备队列。
当系统启动tcp_low_latency时,TCP 传输控制块在软中断中接收并处理tcp段,然后将其插入到接收队列中。等待用户进程从接收队列中获取TCP段后复制到用户空间,然后删除并释放该段。
当不启用 tcp_low_latency 时能够提高TCP/IP协议栈的吞吐量以及反应速度(因为启用时在软中断中处理tcp段会导致软中断执行过长),TCP 传输控制块在软中断中将 TCP 段添加到 prequeue 队列中,然后立即处理 prequeue 中的段,若用户正在读取数据,则可以直接复制数据到用户缓冲区中,否则添加到接收队列中,然后从软中断中返回。在多数情况下有机会处理 prequeue 队列中的段,但只有当用户进程在进行 recv 类系统调用返回前,才在软中断中复制数据到用户空间。
当用户进程因操作传输控制块将其锁定时,无论是否启用 tcp_low_latency , 都会将未处理的 TCP 段添加到后备队列中,一旦用户解锁后,就会立即处理后备队列,将 TCP 段处理后添加到接收队列中。
TCP 的接收队列为 sock 结构中的 sk_receive_queue。通常情况下,接收的TCP 段都会在缓存在这里,等待用户进程主动读取。
Linux内核网络之传输层接收消息.pdf (1.96 MB)
(下载次数: 1, 2022-6-21 16:50 上传)

原作者:Linux码农

回帖(1)

王栋春

2022-6-21 22:13:38
讲解的不错,围观了解一下。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分