Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Transmission Control Protocol
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Performance == As TCP provides applications with the abstraction of a [[reliable byte stream]], it can suffer from [[head-of-line blocking]]: if [[packet reordering|packets are reordered]] or [[packet loss|lost]] and need to be retransmitted (and thus are reordered), data from sequentially later parts of the stream may be received before sequentially earlier parts of the stream; however, the later data cannot typically be used until the earlier data has been received, incurring [[network latency]]. If multiple independent higher-level messages are [[encapsulation (networking)|encapsulated]] and [[time-division multiplexing|multiplexed]] onto a single TCP connection, then head-of-line blocking can cause processing of a fully-received message that was sent later to wait for delivery of a message that was sent earlier.{{sfn|Briscoe|Brunstrom|Petlund|Hayes|2016|pp=29–30}} [[Web browsers]] attempt to mitigate head-of-line blocking by opening multiple parallel connections. This incurs the cost of connection establishment repeatedly, as well as multiplying the resources needed to track those connections at the endpoints.{{sfn|Marx|2020|loc=HOL blocking in HTTP/1.1}} Parallel connections also have congestion control operating independently of each other, rather than being able to pool information together and respond more promptly to observed network conditions;{{sfn|Marx|2020|loc=Bonus: Transport Congestion Control}} TCP's aggressive initial sending patterns can cause congestion if multiple parallel connections are opened; and the per-connection fairness model leads to a monopolization of resources by applications that take this approach.{{sfn|IETF HTTP Working Group|loc=Why just one TCP connection?}} Connection establishment is a major contributor to latency as experienced by web users.{{sfn|Corbet|2018}}{{sfn|RFC 7413|p=3}} TCP's three-way handshake introduces one RTT of latency during connection establishment before data can be sent.{{sfn|RFC 7413|p=3}} For short flows, these delays are very significant.{{sfn|Sy|Mueller|Burkert|Federrath|2020|p=271}} [[Transport Layer Security]] (TLS) requires a handshake of its own for [[key exchange]] at connection establishment. Because of the layered design, the TCP handshake and the TLS handshake proceed serially; the TLS handshake cannot begin until the TCP handshake has concluded.{{sfn|Chen|Jero|Jagielski|Boldyreva|2021|p=8-9}} Two RTTs are required for connection establishment with [[TLS 1.2]] over TCP.{{sfn|Ghedini|2018}} [[TLS 1.3]] allows for zero RTT connection resumption in some circumstances, but, when layered over TCP, one RTT is still required for the TCP handshake, and this cannot assist the initial connection; zero RTT handshakes also present cryptographic challenges, as efficient, [[replay-safe]] and [[forward secure]] [[non-interactive key exchange]] is an open research topic.{{sfn|Chen|Jero|Jagielski|Boldyreva|2021|p=3-4}} TCP Fast Open allows the transmission of data in the initial (i.e., SYN and SYN-ACK) packets, removing one RTT of latency during connection establishment.{{sfn|RFC 7413|p=1}} However, TCP Fast Open has been difficult to deploy due to protocol ossification; {{as of|2020|lc=y}}, no [[Web browser]]s used it by default.{{sfn|Rybczyńska|2020}} TCP throughput is affected by [[packet reordering]]. Reordered packets can cause duplicate acknowledgments to be sent, which, if they cross a threshold, will then trigger a spurious retransmission and congestion control. Transmission behavior can also become bursty, as large ranges are acknowledged all at once when a reordered packet at the range's start is received (in a manner similar to how head-of-line blocking affects applications).{{sfn|Blanton|Allman|2002|p=1-2}} {{harvtxt|Blanton|Allman|2002}} found that throughput was inversely related to the amount of reordering, up to a threshold where all reordering triggers spurious retransmission.{{sfn|Blanton|Allman|2002|p=4-5}} Mitigating reordering depends on a sender's ability to determine that it has sent a spurious retransmission, and hence on resolving retransmission ambiguity.{{sfn|Blanton|Allman|2002|p=3-4}} Reducing reordering-induced spurious retransmissions may slow recovery from genuine loss.{{sfn|Blanton|Allman|2002|p=6-8}} Selective acknowledgment can provide a significant benefit to throughput; {{harvtxt|Bruyeron|Hemon|Zhang|1998}} measured gains of up to 45%.{{sfn|Bruyeron|Hemon|Zhang|1998|p=67}} An important factor in the improvement is that selective acknowledgment can more often avoid going into slow start after a loss and can hence better use available bandwidth.{{sfn|Bruyeron|Hemon|Zhang|1998|p=72}} However, TCP can only selectively acknowledge a maximum of three blocks of sequence numbers. This can limit the retransmission rate and hence loss recovery or cause needless retransmissions, especially in high-loss environments.{{sfn|Bhat|Rizk|Zink|2017|p=14}}{{sfn|RFC 9002|loc=4.5. More ACK Ranges}} TCP was originally designed for wired networks where packet loss is considered to be the result of [[network congestion]] and the congestion window size is reduced dramatically as a precaution. However, wireless links are known to experience sporadic and usually temporary losses due to [[fading]], shadowing, hand off, [[interference (communication)|interference]], and other radio effects, that are not strictly congestion. After the (erroneous) back-off of the congestion window size, due to wireless packet loss, there may be a congestion avoidance phase with a conservative decrease in window size. This causes the radio link to be underused. Extensive research on combating these harmful effects has been conducted. Suggested solutions can be categorized as end-to-end solutions, which require modifications at the client or server,<ref name="Microsoft Academic Research">{{cite web |title= TCP performance over CDMA2000 RLP |url= http://academic.research.microsoft.com/Paper/3352358.aspx |access-date= 2010-08-30 |url-status= dead |archive-url= https://web.archive.org/web/20110503193100/http://academic.research.microsoft.com/Paper/3352358.aspx |archive-date= 2011-05-03 }}</ref> link layer solutions, such as [[Radio Link Protocol]] in cellular networks, or proxy-based solutions which require some changes in the network without modifying end nodes.<ref name="Microsoft Academic Research"/><ref name="IEEE Computer Society">{{cite book |author1=Muhammad Adeel |author2=Ahmad Ali Iqbal |title=Fourth International Conference on Information Technology (ITNG'07) |chapter=TCP Congestion Window Optimization for CDMA2000 Packet Data Networks |year=2007 |name-list-style=amp |pages=31–35 |doi=10.1109/ITNG.2007.190 |isbn=978-0-7695-2776-5|s2cid=8717768 }}</ref> A number of alternative congestion control algorithms, such as [[TCP Vegas|Vegas]], [[TCP Westwood|Westwood]], Veno, and Santa Cruz, have been proposed to help solve the wireless problem.{{citation needed|date=February 2015}}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)