引用
- 万字详文:TCP 拥塞控制详解
- 彻底弄懂TCP协议:从三次握手说起
- 不为人知的网络编程(十二):彻底搞懂TCP协议层的KeepAlive保活机制
- 这一篇TCP总结请收下
- 提高带宽利用率!为什么要Pacing?
- 彻底实现Linux TCP的Pacing发送逻辑-普通timer版
- 彻底实现Linux TCP的Pacing发送逻辑-高精度hrtimer版
- TCP协议疑难杂症全景解析
- 多核心Linux内核路径优化的不二法门之-多核心平台TCP优化
- 排队系统拥塞控制的位置
- TCP拥塞控制图解(不包括RTO,因为它太简单了)
- TCP拥塞控制算法-从BIC到CUBIC
- 令人躁动一时且令人不安的TCP BBR算法
- 漫谈TCP BBR的收敛动力学(convergence dynamics)
- TCP和UDP在网络层实现的不同--基于linux内核
- tcp的效率性和公平性
- linux的流量控制
- linux关于tcp协议ack以及乱序报文暂存的实现--立即ack/延迟ack/捎带ack
- 用文字描述TCP的流量控制和拥塞控制
- 评价linux协议栈tcp实现中的prequeue
- linux内核中协议栈--tcp实现的一点细节
- TCP校验值的伪头以及校验值计算
- TCP的syn-cookie以及SHA1摘要算法的实现
- TCP的FIN/RST Cookie
- TCP/IP模型背后的内涵(一)
- TCP/IP模型背后的内涵(二)
- 我对TCP协议的一点形而上的看法
- Linux 4.15内核TCP的重传队列变成红黑树了
- Linux FQ 队列实现原理浅析
- tcp传输层解析
- 从流量控制算法谈网络优化-TCP核心原理理解
- 来自Google的TCP BBR拥塞控制算法解析
- prequeue
- linux-network-performnce-prameters
一. Overall
二. LLD
两个接收队列:
- 接收队列 sk->sk_receive_queue
- 后备队列 sk->sk_backlog
- 最新的linux tcp/ip stack已经删除了prequeue队列
两个发送队列:
- 发送队列 sk->sk_write_queue
- 重传队列 sk->tcp_rtx_queue
涉及文件:
- include/linux/tcp.h: 定义tcp_options_received,tcp_request_sock,tcp_sock,tcp_timewait_sock等格式,主要是和socket层相关的结构体定义。
- include/net/tcp.h: 定义tcp_skb_cb,tcp_ca_event,tcp_congestion_ops等tcp协议内部的结构。
- include/uapi/linux/tcp.h: 定义tcphdr等结构
- include/net/inet_connection_sock.h: 定义inet_connection_sock_af_ops, inet_connection_sock等 面向连接的协议信息。
- include/net/inet_hashtables.h: 定义sock相关的hash表。例如,listen, establish的hash表。
- net/ipv4/tcp.c: 传输层和socket层之间的接口实现。
- net/ipv4/tcp_ipv4.c: tcp基于ipv4相关的接口实现。
- net/ipv4/tcp_output.c: tcp发送相关接口实现。
- net/ipv4/tcp_input.c: tcp接收相关接口实现。
- net/ipv4/tcp_timer.c: tcp的各类定时器实现