This work is based on Attribution-ShareAlike 4.0 International License.
TCP is one of the most important contents in current networking protocol stack. Based on personal interests, we hope to learn more knowledge of the implementation of TCP. However, current analysis blogs or articles on the Internet are fragmented and outdated, and it is hard to form a completed system.
Therefore, we are going to analyze part of source codes of TCP implementation inside Linux kernel 4.4.0, and we genuinely hope that this work could help the people that have interest in it.
tcp.pdf Each commit will generate the newest analysis document
tcp.tex The main file of TCP codes analysis
chapters/ Content of each chapter
prepare.tex Basic knowledge (such as RFC)
network_data_structure.tex Core data structure of network sub-system
tcp_output.tex TCP output
tcp_input.tex TCP input
client_connect.tex Active Connection (Client)
server_connect.tex Passive Connection (Server)
congestion_control.tex TCP Congestion Control
congestion_control_engine.tex TCPCongestion Control Engine(include module CUBIC)
active_close.tex Active Close
passive_close.tex Passive Close
non-core-related-code.tex Non-core source code analysis
appendix.tex Appendix(Knowledge of GCC, OS, and Architecture)
images/ Images required by this project
fonts/ Adobe fonts
rfc*.pdf Documetns relevant to RFC
TODO TODO List
Makefile Compile script
This document is written in LaTeX, here are the required packages:
- Adobe fonts
This document uses CTEX environment and applies Adobe's fonts for Chinese characters. To facilitate compilation, those fonts are under fonts
folder; please install them by yourself.
- TeX Live 2015 version or above
A compilation is passed on Tex Live 2015 environment with Ubuntu16.04 distribution, please ensure xelatex is inside searching path.
- pygments
The highlighted part is using minted
macro package; this package depends on pygments
package to highlight source code. Please install pygments
before compilation.
This project provides Makefile
to generate the document.
make clean && make
With our analysis goes into deeper, we found it is hard to finish all of the work with our contribution. We hope more and more people could join us to complete and polish this work together and hope this project could help more people as well.