User Tools

Site Tools


network_stuff:tcpnotes

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
network_stuff:tcpnotes [2023/08/24 16:34] jotasandokunetwork_stuff:tcpnotes [2024/10/14 12:44] (current) jotasandoku
Line 30: Line 30:
 TCP TIMERS: TCP TIMERS:
 \\ \\
-Time Out Timer: sender waiting for the ack. If ack doesn't arrive, TCP rtx. Value of Time Out Timer adapts depending on  the traffic in the network. +  * Time Out Timer: sender waiting for the ack. If ack doesn't arrive, TCP rtx. Value of Time Out Timer adapts depending on  the traffic in the network. 
-Time Wait Timer: used for the orderly close and discard or ports at the end of a session. Sender starts the time wait timer after sending the ACK for the second FIN segment. +  Time Wait Timer: used for the orderly close and discard or ports at the end of a session. Sender starts the time wait timer after sending the ACK for the second FIN segment. 
-Keep Alive Timer: If server stops hearing a customer for 2 hours starts sending 10 probes ev +  Keep Alive Timer: If server stops hearing a customer for 2 hours starts sending 10 probes every 75 seconds. 
-ery 75 seconds. +  Persistent Timer: Used to deal with deal with a zero-widow-size deadlock situation. Keeps sending data for a while even when the receiver has closed the window.
-Persistent Timer: Used to deal with deal with a zero-widow-size deadlock situation. Keeps se +
-nding data for a while even when the receiver has closed the window.+
  
  
Line 45: Line 43:
 \\ \\
 (Reno, Cubic, Tahoe, more recently, BBR + Vegas, , Westwood) (Reno, Cubic, Tahoe, more recently, BBR + Vegas, , Westwood)
-[[https://medium.com/@atoonk/tcp-bbr-exploring-tcp-congestion-control-84c9c11dc3a9]] +\\ 
 +  * BBR (Bottleneck Bandwidth and RTT)Used in QUIC and HTTP/3 protocols. More modern and **doesn't rely on packet loss**, aiming to maximize throughput by actively **probing network capacity**. It's better suited for modern, high-speed networks. 
 +  * CUBIC (cubic function) is default in Linux. It relies on packet loss and a cubic window growth, making it less aggressive than BBR but well-optimized for traditional networks. 
 +  * BBR offers more efficient bandwidth usage and lower latency, especially in unpredictable networks, while CUBIC is robust in traditional high-speed environments. 
 +  
   * sysctl net.ipv4.tcp_congestion_control  # default is usually cubic or reno   * sysctl net.ipv4.tcp_congestion_control  # default is usually cubic or reno
   * sysctl net.ipv4.tcp_available_congestion_control  # list available suites   * sysctl net.ipv4.tcp_available_congestion_control  # list available suites
Line 77: Line 78:
     * An attacker in the middle can disrupt the communication between 2 peers.  [[https://robertheaton.com/2020/04/27/how-does-a-tcp-reset-attack-work/|RST_attack]]     * An attacker in the middle can disrupt the communication between 2 peers.  [[https://robertheaton.com/2020/04/27/how-does-a-tcp-reset-attack-work/|RST_attack]]
   * PUSH: is a flag that informs the receiver that all data has been sent. When we disable Nagle with TCP_NODELAY it also sends the push flag but is not exactly the same. [[http://smallvoid.com/article/winnt-tcp-push-flag.html|External Link]]   * PUSH: is a flag that informs the receiver that all data has been sent. When we disable Nagle with TCP_NODELAY it also sends the push flag but is not exactly the same. [[http://smallvoid.com/article/winnt-tcp-push-flag.html|External Link]]
 +
 +
 +----
 +
 +QUIC NOTES
 +
 +  * You need decryption keys or won't see much [[https://youtu.be/fHBUOlvS3ts]]
 +  * 1 or 0 handshake modes
 +  * Multiplexes hundreds of flows over single connection
 +  * It has a long connection index (each side chooses its counterpart index).
 +  * ^^ allows reuse connection independently underlying protocol (ie IP changes when moving WiFi to 5G)
network_stuff/tcpnotes.1692894872.txt.gz · Last modified: (external edit)