TCP发送源码tcp_sendmsg的相关问题

pur_e pur_e 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
小弟最近在研究linux中TCP的相关源码,发送函数tcp_sendmsg中有几个问题搞不明白,来咨询一下:
linux版本3.17.3
1、
1173行 copy = max - skb->len;
这里是判断SKB中是否已经达到数据包的最大限制,如果达到的话新分配SKB来存放。
按这个来理解,一个SKB包就是对应一个数据包,但是后面申请SKB时:
1184行 skb = sk_stream_alloc_skb(sk,
select_size(sk, sg),
sk->sk_allocation);
使用的select_size得到的SKB的大小,为什么不使用size_goal来分配,而使用mss_cache来分配大小??

2、这样的话,如果size_goal大于mss_cache,如网卡支持GSO等,会是mss_cache的整数倍,这样只能去使用SKB的非线性数据,重新分配空间,这样做有什么特殊含意吗?为什么不直接使用线性数据区?
...全文

相关推荐

Linux 4.4.0 内核源码分析 TCP实现

这些结构和函数的具体实现,构成了Linux内核处理TCP连接的基础。关于TCP的输出处理,Linux内核提供了数据发送接口如tcp_sendmsg和tcp_sendmsg_fastopen。

Jayden的日志

RK3588边缘AI视觉项目零拷贝跨进程通信实践

本文围绕RK3588边缘AI视觉项目,深入剖析基于DMA-BUF的零拷贝跨进程通信方案。重点涵盖DMA-BUF fd传递机制、/dev/dma_heap替代ION的现代实践、SCM_RIGHTS socket传fd、缓存同步(dma_buf_begin_cpu_access/end_cpu_access)、mmap页对齐与多plane处理、memfd_create共享内存与无锁环形队列设计,以及实测性能对比与DDR带宽瓶颈分析。强调硬件数据通路协同设计,避免CPU内存拷贝,提升实时性与能效。

weixin_34208283

2026年编程学习指南:AI时代高性价比Coding Plan评估模型

本文提出面向AI时代的四维动态权重评估模型,用于科学甄选Coding Plan:技术债清偿效率(35%)、AI协同生产力增益(30%)、项目资产沉淀价值(20%)、认知带宽保护机制(15%)。强调eBPF实战、AI业务语义理解、可观测性集成、生产级IaC验证及运行时兼容性检查等关键技术能力,聚焦云原生、微服务治理、AI Pair Programming等2026年核心工程实践。

clg10051

tcp/ip yuanma

`tcp_connect()`用于建立连接,`tcp_sendmsg()`处理发送数据,`tcp_rcv_state_process()`处理接收状态。

gname

srt协议的caller模式的c语言源码

- **数据发送**:`srt_sendmsg()`函数用于发送数据,可配合缓冲区管理策略优化性能。 - **错误处理**:源码中应包含错误检查和异常处理机制,确保在遇到问题时能够正确地处理。5.

weixin_41485252
评论
收藏 已收藏
分享
返回顶部
pur_e
Linux_Kernel 4,469 成员 17,458 内容