Knowledge

Transmission Control Protocol

Source 📝

1488:
length of the option, and Option-Data contains data associated with the option, if applicable. For example, an Option-Kind byte of 1 indicates that this is a no operation option used only for padding, and does not have an Option-Length or Option-Data fields following it. An Option-Kind byte of 0 marks the end of options, and is also only one byte. An Option-Kind byte of 2 is used to indicate Maximum Segment Size option, and will be followed by an Option-Length byte specifying the length of the MSS field. Option-Length is the total length of the given options field, including Option-Kind and Option-Length fields. So while the MSS value is typically expressed in two bytes, Option-Length will be 4. As an example, an MSS option field with a value of
2893:(MPTCP) is an ongoing effort within the IETF that aims at allowing a TCP connection to use multiple paths to maximize resource usage and increase redundancy. The redundancy offered by Multipath TCP in the context of wireless networks enables the simultaneous use of different networks, which brings higher throughput and better handover capabilities. Multipath TCP also brings performance benefits in datacenter environments. The reference implementation of Multipath TCP was developed in the Linux kernel. Multipath TCP is used to support the Siri voice recognition application on iPhones, iPads and Macs. 1988:
of FIN and ACK segments from each TCP endpoint. After the side that sent the first FIN has responded with the final ACK, it waits for a timeout before finally closing the connection, during which time the local port is unavailable for new connections; this state lets the TCP client resend the final acknowledgment to the server in case the ACK is lost in transit. The time duration is implementation-dependent, but some common values are 30 seconds, 1 minute, and 2 minutes. After the timeout, the client enters the CLOSED state and the local port becomes available for new connections.
2209:
RTTs, spurious timeouts can occur: if the RTT is under-estimated, then the RTO fires and triggers a needless retransmit and slow-start. After a spurious retransmission, when the acknowledgments for the original transmissions arrive, the sender may believe them to be acknowledging the retransmission and conclude, incorrectly, that segments sent between the original transmission and retransmission have been lost, causing further needless retransmissions to the extent that the link truly becomes congested; selective acknowledgement can reduce this effect.
3126:, 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, link layer solutions, such as Radio Link Protocol ( 1980: 1759: 2114:
Linux Kernel to adopt heuristic methods to scale the duplicate acknowledgment threshold. Recently, there have been efforts to completely phase out dupack based fast-retransmissions and replace them with timer based ones. (Not to be confused with the classic RTO discussed below). The time based loss detection algorithm called Recent Acknowledgment (RACK) has been adopted as the default algorithm in Linux and Windows.
3102:. Reordered packets can cause duplicate acknowledgments to be sent, which, if they cross the threshold, will then trigger a spurious retransmission and congestion control. Transmission behaviour can also become less smooth and more bursty, as large ranges are acknowledged all at once when a reordered packet at the range's start is received (in a similar manner to how head-of-line blocking affects applications). 3170:, which intercepts TCP traffic on a network link, can be useful in debugging networks, network stacks, and applications that use TCP by showing the user what packets are passing through a link. Some networking stacks support the SO_DEBUG socket option, which can be enabled on the socket using setsockopt. That option dumps all the packets, TCP states, and events on that socket, which is helpful in debugging. 2428:
2,999) is lost during transmission. In a pure cumulative acknowledgment protocol, the receiver can only send a cumulative ACK value of 2,000 (the sequence number immediately following the last sequence number of the received data) and cannot say that it received bytes 3,000 to 10,999 successfully. Thus the sender may then have to resend all data starting with sequence number 2,000.
2106:
as a signal for packet loss. That is, if the sender receives three duplicate acknowledgments, it retransmits the last unacknowledged packet. A threshold of three is used because the network may reorder segments causing duplicate acknowledgements. This threshold has been demonstrated to avoid spurious retransmissions due to reordering. Some TCP implementations use
3154:
sender on the basis of the acknowledgments received by it. The acceleration node splits the feedback loop between the sender and the receiver and thus guarantees a shorter round trip time (RTT) per packet. A shorter RTT is beneficial as it ensures a quicker response time to any changes in the network and a faster adaptation by the sender to combat these changes.
3057:
independently of each other, rather than being able to pool information together and respond more promptly to observed network conditions; 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.
2578:(OOB) and tells the receiving program to process it immediately. When finished, TCP informs the application and resumes the stream queue. An example is when TCP is used for a remote login session where the user can send a keyboard sequence that interrupts or aborts the remotely running program without waiting for the program to finish its current transfer. 1972: 4208:
adaptor on the wire will have valid checksums. This issue can also occur when monitoring packets being transmitted between virtual machines on the same host, where a virtual device driver may omit the checksum calculation (as an optimization), knowing that the checksum will be calculated later by the VM host kernel or its physical hardware.
944:, pink background in table). The data section follows the header and is the payload data carried for the application. The length of the data section is not specified in the segment header; it can be calculated by subtracting the combined length of the segment header and IP header from the total IP datagram length specified in the IP header. 2278: 2019:
perform a lookup on this table to find the destination process. Each entry in the table is known as a Transmission Control Block or TCB. It contains information about the endpoints (IP and port), status of the connection, running data about the packets that are being exchanged and buffers for sending and receiving data.
2439:, which allows the receiver to acknowledge discontinuous blocks of packets that were received correctly, in addition to the sequence number immediately following the last sequence number of the last contiguous byte received successively, as in the basic TCP acknowledgment. The acknowledgment can include a number of 3251:(SCTP) is another protocol that provides reliable stream-oriented services similar to TCP. It is newer and considerably more complex than TCP, and has not yet seen widespread deployment. However, it is especially designed to be used in situations where reliability and near-real-time considerations are important. 2999:. One measurement found that a third of paths across the Internet encounter at least one intermediary that modifies TCP metadata, and 6.5% of paths encounter harmful ossifying effects from intermediaries. Avoiding extensibility hazards from intermediaries placed significant constraints on the design of 1336:. The minimum size header is 5 words and the maximum is 15 words thus giving the minimum size of 20 bytes and maximum of 60 bytes, allowing for up to 40 bytes of options in the header. This field gets its name from the fact that it is also the offset from the start of the TCP segment to the actual data. 3310:
The checksum field is the 16-bit ones' complement of the ones' complement sum of all 16-bit words in the header and text. The checksum computation needs to ensure the 16-bit alignment of the data being summed. If a segment contains an odd number of header and text octets, alignment can be achieved by
2606:
tries to group small messages into a single packet). This wait creates small, but potentially serious delays if repeated constantly during a file transfer. For example, a typical send block would be 4 KB, a typical MSS is 1460, so 2 packets go out on a 10 Mbit/s Ethernet taking ~1.2 ms
2459:
A TCP sender may interpret an out-of-order segment delivery as a lost segment. If it does so, the TCP sender will retransmit the segment previous to the out-of-order packet and slow its data delivery rate for that connection. The duplicate-SACK option, an extension to the SACK option that was defined
2105:
If a single segment (say segment number 100) in a stream is lost, then the receiver cannot acknowledge packets above that segment number (100) because it uses cumulative ACKs. Hence the receiver acknowledges packet 99 again on the receipt of another data packet. This duplicate acknowledgement is used
6904:
Checksum offloading often causes confusion as the network packets to be transmitted are handed over to Wireshark before the checksums are actually calculated. Wireshark gets these "empty" checksums and displays them as invalid, even though the packets will contain valid checksums when they leave the
4207:
that are unaware or uncertain about the use of checksum offload to report invalid checksums in outbound packets that have not yet reached the network adapter. This will only occur for packets that are intercepted before being transmitted by the network adapter; all packets transmitted by the network
3182:
For many applications TCP is not appropriate. One problem (at least with normal implementations) is that the application cannot access the packets coming after a lost packet until the retransmitted copy of the lost packet is received. This causes problems for real-time applications such as streaming
3114:
measured gains of up to 45%. 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. However, TCP can only selectively acknowledge a maximum of three blocks of sequence numbers. This
2742:
by the malicious packet. Unlike in connection hijacking, the connection is never desynchronized and communication continues as normal after the malicious payload is accepted. TCP veto gives the attacker less control over the communication but makes the attack particularly resistant to detection. The
2724:
was easily guessable. The earlier implementations allowed an attacker to blindly send a sequence of packets that the receiver would believe came from a different IP address, without the need to intercept communication through ARP or routing attacks: it is enough to ensure that the legitimate host of
2708:
An attacker who is able to eavesdrop on a TCP session and redirect packets can hijack a TCP connection. To do so, the attacker learns the sequence number from the ongoing communication and forges a false segment that looks like the next segment in the stream. A simple hijack can result in one packet
2427:
Relying purely on the cumulative acknowledgment scheme employed by the original TCP can lead to inefficiencies when packets are lost. For example, suppose bytes with sequence number 1,000 to 10,999 are sent in 10 different TCP segments of equal size, and the second segment (sequence numbers 2,000 to
2217:
ensures that a good RTT estimate will be produced—eventually—by waiting until there is an unambiguous acknowledgment before adjusting the RTO. After spurious retransmissions, however, it may take significant time before such an unambiguous acknowledgment arrives, degrading performance in
804:
of lost data, rearranges out-of-order data and even helps minimize network congestion to reduce the occurrence of the other problems. If the data still remains undelivered, the source is notified of this failure. Once the TCP receiver has reassembled the sequence of octets originally transmitted, it
4167:
The final destination; if the IPv6 packet doesn't contain a Routing header, TCP uses the destination address in the IPv6 header, otherwise, at the originating node, it uses the address in the last element of the Routing header, and, at the receiving node, it uses the destination address in the IPv6
3106:
found that throughput was inversely related to the amount of reordering, up to a limit where all reordering triggers spurious retransmission. Mitigating reordering depends on a sender's ability to determine that it has sent a spurious retransmission, and hence on resolving retransmission ambiguity.
2737:
An attacker who can eavesdrop and predict the size of the next packet to be sent can cause the receiver to accept a malicious payload without disrupting the existing connection. The attacker injects a malicious packet with the sequence number and a payload size of the next expected packet. When the
2513:
The window scale option is used only during the TCP 3-way handshake. The window scale value represents the number of bits to left-shift the 16-bit window size field when interpreting it. The window scale value can be set from 0 (no shift) to 14 for each direction independently. Both sides must send
2084:
Acknowledgments (ACKs) are sent with a sequence number by the receiver of data to tell the sender that data has been received to the specified byte. ACKs do not imply that the data has been delivered to the application, they merely signify that it is now the receiver's responsibility to deliver the
2026:
before sending the first SYN to the server. This port remains allocated during the whole conversation and effectively limits the number of outgoing connections from each of the client's IP addresses. If an application fails to properly close unrequired connections, a client can run out of resources
1987:
The connection termination phase uses a four-way handshake, with each side of the connection terminating independently. When an endpoint wishes to stop its half of the connection, it transmits a FIN packet, which the other end acknowledges with an ACK. Therefore, a typical tear-down requires a pair
1962:
Steps 1 and 2 establish and acknowledge the sequence number for one direction (client to server). Steps 2 and 3 establish and acknowledge the sequence number for the other direction (server to client). Following the completion of these steps, both the client and server have received acknowledgments
3157:
Disadvantages of the method include the fact that the TCP session has to be directed through the accelerator; this means that if routing changes, so that the accelerator is no longer in the path, the connection will be broken. It also destroys the end-to-end property of the TCP ack mechanism; when
2331:
Acknowledgments for data sent, or the lack of acknowledgments, are used by senders to infer network conditions between the TCP sender and receiver. Coupled with timers, TCP senders and receivers can alter the behavior of the flow of data. This is more generally referred to as congestion control or
1938:
Before a client attempts to connect with a server, the server must first bind to and listen at a port to open it up for connections: this is called a passive open. Once the passive open is established, a client may establish a connection by initiating an active open using the three-way (or 3-step)
2294:
situation that could arise if a subsequent window size update from the receiver is lost, and the sender cannot send more data until receiving a new window size update from the receiver. When the persist timer expires, the TCP sender attempts recovery by sending a small packet so that the receiver
2208:
Accurate RTT estimates are important for loss recovery, as it allows a sender to assume an unacknowledged packet to be lost after sufficient time elapses (i.e., determining the RTO time). Retransmission ambiguity can lead a sender's estimate of RTT to be imprecise. In an environment with variable
2113:
Retransmission ambiguity can cause spurious fast retransmissions and congestion avoidance if there is reordering beyond the duplicate acknowledgment threshold. In the last two decades more packet reordering has been observed over the Internet which led TCP implementations, such as the one in the
2018:
Most implementations allocate an entry in a table that maps a session to a running operating system process. Because TCP packets do not include a session identifier, both endpoints identify the session using the client's address and port. Whenever a packet is received, the TCP implementation must
3153:
Since TCP is a rate-adaptive protocol, the rate at which the TCP sender injects packets into the network is directly proportional to the prevailing load condition within the network as well as the processing capacity of the receiver. The prevalent conditions within the network are judged by the
2585:
pointer only alters the processing on the remote host and doesn't expedite any processing on the network itself. The capability is implemented differently or poorly on different systems or may not be supported. Where it is available, it is prudent to assume only single bytes of OOB data will be
2261:
protocol to avoid having the sender send data too fast for the TCP receiver to receive and process it reliably. Having a mechanism for flow control is essential in an environment where machines of diverse network speeds communicate. For example, if a PC sends data to a smartphone that is slowly
1487:
Options have up to three fields: Option-Kind (1 byte), Option-Length (1 byte), Option-Data (variable). The Option-Kind field indicates the type of option and is the only field that is not optional. Depending on Option-Kind value, the next two fields may be set. Option-Length indicates the total
4540:
We are screwing up in our design of internet protocols by violating the principle of layering. Specifically we are trying to use TCP to do two things: serve as a host level end to end protocol, and to serve as an internet packaging and routing protocol. These two things should be provided in a
2530:
in 1992, can help TCP determine in which order packets were sent. TCP timestamps are not normally aligned to the system clock and start at some random value. Many operating systems will increment the timestamp for every elapsed millisecond; however, the RFC only states that the ticks should be
2455:
being a contiguous range that the receiver correctly received. In the example above, the receiver would send an ACK segment with a cumulative ACK value of 2,000 and a SACK option header with sequence numbers 3,000 and 11,000. The sender would accordingly retransmit only the second segment with
3056:
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. Parallel connections also have congestion control operating
6875:
Wireshark captures packets before they are sent to the network adapter. It won't see the correct checksum because it has not been calculated yet. Even worse, most OSes don't bother initialize this data so you're probably seeing little chunks of memory that you shouldn't. New installations of
2092:
When a TCP segment is retransmitted, it retains the same sequence number as the original delivery attempt. This conflation of delivery and logical data ordering means that, when acknowledgment is received after a retransmission, the sender cannot tell whether the original transmission or the
3149:
The idea of a TCP accelerator is to terminate TCP connections inside the network processor and then relay the data to a second connection toward the end system. The data packets that originate from the sender are buffered at the accelerator node, which is responsible for performing local
2517:
Some routers and packet firewalls rewrite the window scaling factor during a transmission. This causes sending and receiving sides to assume different TCP window sizes. The result is non-stable traffic that may be very slow. The problem is visible on some sites behind a defective router.
2055:
Flow control: limits the rate a sender transfers data to guarantee reliable delivery. The receiver continually hints the sender on how much data can be received. When the receiving host's buffer fills, the next acknowledgment suspends the transfer and allows the data in the buffer to be
864:
message as it receives the data. The sender keeps a record of each packet it sends and maintains a timer from when the packet was sent. The sender re-transmits a packet if the timer expires before receiving the acknowledgment. The timer is needed in case a packet gets lost or corrupted.
2809:
source ports when contacting servers, but they can also identify named services that have been registered by a third party. Dynamic or private ports can also be used by end-user applications, however, these ports typically do not contain any meaning outside a particular TCP connection.
835:
TCP is optimized for accurate delivery rather than timely delivery and can incur relatively long delays (on the order of seconds) while waiting for out-of-order messages or re-transmissions of lost messages. Therefore, it is not particularly suitable for real-time applications such as
872:– the individual units of data transmission that a message is divided into for efficient routing through the network. For example, when an HTML file is sent from a web server, the TCP software layer of that server divides the file into segments and forwards them individually to the 2009:
state, in which case one side has terminated the connection, but the other has not. The side that has terminated can no longer send any data into the connection, but the other side can. The terminating side should continue reading the data until the other side terminates as well.
186:, meaning that sender and receiver firstly need to establish a connection based on agreed parameters; they do this through three-way handshake procedure. The server must be listening (passive open) for connection requests from clients before a connection is established. Three-way 2482:
discouraged such behavior, but did not prohibit it to allow receivers the option of reneging if they, for example, ran out of buffer space. The possibility of reneging leads to implementation complexity for both senders and receivers, and also imposes memory costs on the sender.
8319:
Papastergiou, Giorgos; Fairhurst, Gorry; Ros, David; Brunstrom, Anna; Grinnemo, Karl-Johan; Hurtig, Per; Khademi, Naeem; Tüxen, Michael; Welzl, Michael; Damjanovic, Dragana; Mangiante, Simone (2017). "De-Ossifying the Internet Transport Layer: A Survey and Future Perspectives".
3090:
is an open research topic. 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. However, TCP Fast Open has been difficult to deploy due to protocol ossification; as of 2020, no
2553:. PAWS is used when the receive window crosses the sequence number wraparound boundary. In the case where a packet was potentially retransmitted, it answers the question: "Is this sequence number in the first 4 GB or the second?" And the timestamp is used to break the tie. 2497:
For more efficient use of high-bandwidth networks, a larger TCP window size may be used. A 16-bit TCP window size field controls the flow of data and its value is limited to 65,535 bytes. Since the size field cannot be expanded beyond this limit, a scaling factor is used. The
2002:, implement a half-duplex close sequence. If the host actively closes a connection, while still having unread incoming data available, the host sends the signal RST (losing any received data) instead of FIN. This assures that a TCP application is aware there was a data loss. 1320:
If the ACK flag is set then the value of this field is the next sequence number that the sender of the ACK is expecting. This acknowledges receipt of all prior bytes (if any). The first ACK sent by each end acknowledges the other end's initial sequence number itself, but no
2607:
each followed by a third carrying the remaining 1176 after a 197 ms pause because TCP is waiting for a full buffer. In the case of telnet, each user keystroke is echoed back by the server before the user can see it on the screen. This delay would become very annoying.
3039:
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
3078:
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,
2273:
field the amount of additionally received data (in bytes) that it is willing to buffer for the connection. The sending host can send only up to that amount of data before it must wait for an acknowledgment and receive window update from the receiving host.
3150:
retransmissions in the event of packet loss. Thus, in case of losses, the feedback loop between the sender and the receiver is shortened to the one between the acceleration node and the receiver which guarantees a faster delivery of data to the receiver.
2987:. While this transparency is useful to network operators and researchers, information gathered from protocol metadata may reduce the end-user's privacy. This visibility and malleability of metadata has led to TCP being difficult to extend—a case of 3060:
Connection establishment is a major contributor to latency as experienced by web users. TCP's three-way handshake introduces one RTT of latency during connection establishment before data can be sent. For short flows, these delays are very significant.
2122:
When a sender transmits a segment, it initializes a timer with a conservative estimate of the arrival time of the acknowledgment. The segment is retransmitted if the timer expires, with a new timeout threshold of twice the previous value, resulting in
884:. When the client program on the destination computer receives them, the TCP software in the transport layer re-assembles the segments and ensures they are correctly ordered and error-free as it streams the file contents to the receiving application. 3672:
The length of the TCP header and data (measured in octets). For example, let's say we have IPv4 packet with Total Length of 200 bytes and IHL value of 5, which indicates a length of 5 × 32 bits = 160 bits = 20 bytes. We can compute the TCP length as
2362:(RTT) between the sender and receiver, as well as the variance in this round-trip time. There are subtleties in the estimation of RTT. For example, senders must be careful when calculating RTT samples for retransmitted packets; typically they use 3069:
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. Two RTTs are required for connection establishment with
2281:
TCP sequence numbers and receive windows behave very much like a clock. The receive window shifts each time the receiver receives and acknowledges a new segment of data. Once it runs out of sequence numbers, the sequence number loops back to
2769:
port numbers, providing 65,536 possible values for each of the source and destination ports. The dependency of connection identity on addresses means that TCP connections are bound to a single network path; TCP cannot use other routes that
7974:
Briscoe, Bob; Brunstrom, Anna; Petlund, Andreas; Hayes, David; Ros, David; Tsang, Ing-Jyh; Gjessing, Stein; Fairhurst, Gorry; Griwodz, Carsten; Welzl, Michael (2016). "Reducing Internet Latency: A Survey of Techniques and Their Merits".
1377:
If the SYN flag is unset (0), a packet with the Congestion Experienced flag set (ECN=11) in its IP header was received during normal transmission. This serves as an indication of network congestion (or impending congestion) to the TCP
2324:, a gridlock situation where network performance is severely degraded. These mechanisms control the rate of data entering the network, keeping the data flow below a rate that would trigger collapse. They also yield an approximately 1952:: In response, the server replies with a SYN-ACK. The acknowledgment number is set to one more than the received sequence number i.e. A+1, and the sequence number that the server chooses for the packet is another random number, B. 927:
Processes transmit data by calling on the TCP and passing buffers of data as arguments. The TCP packages the data from these buffers into segments and calls on the internet module to transmit each segment to the destination TCP.
650:
The Transmission Control Program incorporated both connection-oriented links and datagram services between hosts. In version 4, the monolithic Transmission Control Program was divided into a modular architecture consisting of the
3288:(MTP/IP) is patented proprietary software that is designed to adaptively achieve high throughput and transaction performance in a wide variety of network conditions, particularly those where TCP is perceived to be inefficient. 2394:, which can lead to packet loss and excessive retransmissions. To accomplish this, typically the MSS is announced by each side using the MSS option when the TCP connection is established. The option value is derived from the 1412:
Synchronize sequence numbers. Only the first packet sent from each end should have this flag set. Some other flags and fields change meaning based on this flag, and some are only valid when it is set, and others when it is
3311:
padding the last octet with zeros on its right to form a 16-bit word for checksum purposes. The pad is not transmitted as part of the segment. While computing the checksum, the checksum field itself is replaced with zeros.
1958:: Finally, the client sends an ACK back to the server. The sequence number is set to the received acknowledgment value i.e. A+1, and the acknowledgment number is set to one more than the received sequence number i.e. B+1. 4199:
prior to transmission onto the network or upon reception from the network for validation. This may relieve the OS from using precious CPU cycles calculating the checksum. Hence, overall network performance is increased.
5656: 2176: 3771:
Any transport or other upper-layer protocol that includes the addresses from the IP header in its checksum computation must be modified for use over IPv6, to include the 128-bit IPv6 addresses instead of 32-bit IPv4
3236:
and checksums that TCP does, but does not handle streams or retransmission, giving the application developer the ability to code them in a way suitable for the situation, or to replace them with other methods like
2076:
that may occur. The sequence number of the first byte is chosen by the transmitter for the first packet, which is flagged SYN. This number can be arbitrary, and should, in fact, be unpredictable to defend against
855:
delivery service that guarantees that all bytes received will be identical and in the same order as those sent. Since packet transfer by many networks is not reliable, TCP achieves this using a technique known as
2088:
Reliability is achieved by the sender detecting lost data and retransmitting it. TCP uses two primary techniques to identify loss. Retransmission timeout (RTO) and duplicate cumulative acknowledgments (DupAcks).
2373:
Enhancing TCP to reliably handle loss, minimize errors, manage congestion and go fast in very high-speed environments are ongoing areas of research and standards development. As a result, there are a number of
3701: 1306:
If the SYN flag is set (1), then this is the initial sequence number. The sequence number of the actual first data byte and the acknowledged number in the corresponding ACK are then this sequence number plus
2645:
TCP may be attacked in a variety of ways. The results of a thorough security assessment of TCP, along with possible mitigations for the identified issues, were published in 2009, and was pursued within the
2738:
legitimate packet is ultimately received, it is found to have the same sequence number and length as a packet already received and is silently dropped as a normal duplicate packet—the legitimate packet is
2413:. Two completely independent values of MSS are permitted for the two directions of data flow in a TCP connection, so there is no need to agree on a common MSS configuration for a bidirectional connection. 2464:, solves this problem. Once the TCP receiver detects a second duplicate packet, it sends a D-ACK to indicate that no segments were lost, allowing the TCP sender to reinstate the higher transmission rate. 777:
of the transmission medium. At the transport layer, TCP handles all handshaking and transmission details and presents an abstraction of the network connection to the application typically through a
5619: 1991:
It is also possible to terminate the connection by a 3-way handshake, when host A sends a FIN and host B replies with a FIN & ACK (combining two steps into one) and host A replies with an ACK.
2832:
TCP is a complex protocol. However, while significant enhancements have been made and proposed over the years, its most basic operation has not changed significantly since its first specification
761:
The Transmission Control Protocol provides a communication service at an intermediate level between an application program and the Internet Protocol. It provides host-to-host connectivity at the
3122:
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,
2844:, published in October 1989, clarified a number of TCP protocol implementation requirements. A list of the 8 required specifications and over 20 strongly encouraged enhancements is available in 2743:
only evidence to the receiver that something is amiss is a single duplicate packet, a normal occurrence in an IP network. The sender of the vetoed packet never sees any evidence of an attack.
2781:(IANA) and are typically used by system-level processes. Well-known applications running as servers and passively listening for connections typically use these ports. Some examples include: 6144: 3320:. The sum is then bitwise complemented and inserted as the checksum field. A pseudo-header that mimics the IPv4 packet header used in the checksum computation is shown in the table below. 3731: 3052:
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.
2226:
Sequence numbers allow receivers to discard duplicate packets and properly sequence out-of-order packets. Acknowledgments allow senders to determine when to retransmit lost packets.
2943:(TCPCT) is an extension proposed in December 2009 to secure servers against denial-of-service attacks. Unlike SYN cookies, TCPCT does not conflict with other TCP extensions such as 6059: 2903:(SSL), tcpcrypt itself does not provide authentication, but provides simple primitives down to the application to do that. The tcpcrypt RFC was published by the IETF in May 2019. 2899:
is an extension proposed in July 2010 to provide transport-level encryption directly in TCP itself. It is designed to work transparently and not require any configuration. Unlike
2467:
The SACK option is not mandatory and comes into operation only if both parties support it. This is negotiated when a connection is established. SACK uses a TCP header option (see
1361:
Congestion window reduced (CWR) flag is set by the sending host to indicate that it received a TCP segment with the ECE flag set and had responded in congestion control mechanism.
5793: 5649: 1905:
Waiting for an acknowledgment of the connection termination request previously sent to the remote TCP (which includes an acknowledgment of its connection termination request).
2390:(MSS) is the largest amount of data, specified in bytes, that TCP is willing to receive in a single segment. For best performance, the MSS should be set small enough to avoid 2072:
to identify each byte of data. The sequence number identifies the order of the bytes sent from each computer so that the data can be reconstructed in order, regardless of any
5823: 2670:
SYN packets, followed by many ACK packets, attackers can cause the server to consume large amounts of resources keeping track of the bogus connections. This is known as a
1342:
For future use and should be set to zero; senders should not set these and receivers should ignore them if set, in the absence of further specification and implementation.
2971:(TOE). The main problem of TOEs is that they are hard to integrate into computing systems, requiring extensive changes in the operating system of the computer or device. 2402:
to infer the minimum MTU along the network path between the sender and receiver, and use this to dynamically adjust the MSS to avoid IP fragmentation within the network.
581: 2618:
overrides the default 200 ms send delay. Application programs use this socket option to force output to be sent after writing a character or line of characters.
8550: 6876:
Wireshark 1.2 and above disable IP, TCP, and UDP checksum validation by default. You can disable checksum validation in each of those dissectors by hand if needed.
5054: 4986: 3751: 6802: 2909:
is an extension to speed up the opening of successive TCP connections between two endpoints. It works by skipping the three-way handshake using a cryptographic
2196: 2625:
push bit as "a message to the receiving TCP stack to send this data immediately up to the receiving application". There is no way to indicate or control it in
1734:
The remaining Option-Kind values are historical, obsolete, experimental, not yet standardized, or unassigned. Option number assignments are maintained by the
2765:, destination address, and destination port. Port numbers are used to identify different services, and to allow multiple connections between hosts. TCP uses 892:
Transmission Control Protocol accepts data from a data stream, divides it into chunks, and adds a TCP header creating a TCP segment. The TCP segment is then
341: 2562:
Recent Statistics show that the level of TCP timestamp adoption has stagnated, at ~40%, owing to Windows Server dropping support since Windows Server 2008.
2218:
the interim. TCP timestamps also resolve the retransmission ambiguity problem in setting the RTO, though they do not necessarily improve the RTT estimate.
5627: 3268:
works very well for ad-hoc environments where the data sender is not known in advance. If the environment is predictable, a timing-based protocol such as
4375: 2932:
threshold as possible. The algorithm is designed to improve the speed of recovery and is the default congestion control algorithm in Linux 3.2+ kernels.
2852:, TCP Congestion Control, one of the most important TCP-related RFCs in recent years, describes updated algorithms that avoid undue congestion. In 2001, 8322: 7977: 5844: 2709:
being erroneously accepted at one end. When the receiving host acknowledges the false segment, synchronization is lost. Hijacking may be combined with
2556:
Also, the Eifel detection algorithm uses TCP timestamps to determine if retransmissions are occurring because packets are lost or simply out of order.
2110:(SACKs) to provide explicit feedback about the segments that have been received. This greatly improves TCP's ability to retransmit the right segments. 1499:
Some options may only be sent when SYN is set; they are indicated below as . Option-Kind and standard lengths given as (Option-Kind, Option-Length).
2777:
Port numbers are categorized into three basic categories: well-known, registered, and dynamic or private. The well-known ports are assigned by the
6892: 6136: 2983:
of TCP provides significant information-gathering and modification opportunities to on-path observers, as the protocol metadata is transmitted in
2130: 1484:
field. The TCP header padding is used to ensure that the TCP header ends, and data begins, on a 32-bit boundary. The padding is composed of zeros.
880:. The internet layer software encapsulates each TCP segment into an IP packet by adding a header that includes (among other data) the destination 8555: 5596: 5769: 5686: 2298:
If a receiver is processing incoming data in small increments, it may repeatedly advertise a small receive window. This is referred to as the
1861:
Waiting for a connection termination request from the remote TCP, or an acknowledgment of the connection termination request previously sent.
1394:
Indicates that the Acknowledgment field is significant. All packets after the initial SYN packet sent by the client should have this flag set.
8498: 8479: 8458: 6778: 5974: 5753: 5724: 5082: 5030: 4730: 574: 301: 2022:
The number of sessions in the server side is limited only by memory and can grow as new connections arrive, but the client must allocate an
1946:: The active open is performed by the client sending a SYN to the server. The client sets the segment's sequence number to a random value A. 3248: 3242: 2682:
is a similar attack, that might be mitigated with system resource management. An advanced DoS attack involving the exploitation of the TCP
2570:
It is possible to interrupt or abort the queued stream instead of waiting for the stream to finish. This is done by specifying the data as
2472: 431: 426: 396: 2249:
frame. However, introduction of errors in packets between CRC-protected hops is common and the 16-bit TCP checksum catches most of these.
1310:
If the SYN flag is unset (0), then this is the accumulated sequence number of the first data byte of this segment for the current session.
5879: 2778: 1735: 256: 6736: 6089: 3676: 3217:
servers) the complexity of TCP can be a problem. Finally, some tricks such as transmitting data between two hosts that are both behind
8560: 6291: 5930: 5452: 3265: 2375: 2340: 624: 503: 446: 371: 4680: 4651: 7427: 7364: 6174: 4427: 4358: 3285: 2302:, since it is inefficient to send only a few bytes of data in a TCP segment, given the relatively large overhead of the TCP header. 513: 483: 183: 144: 4195:
Many TCP/IP software stack implementations provide options to use hardware assistance to automatically compute the checksum in the
3115:
can limit the retransmission rate and hence loss recovery or cause needless retransmissions, especially in high-loss environments.
1633:
These first two bytes are followed by a list of 1–4 blocks being selectively acknowledged, specified as 32-bit begin/end pointers.
769:. An application does not need to know the particular mechanisms for sending data via a link to another host, such as the required 1781:
A TCP connection is managed by an operating system through a resource that represents the local end-point for communications, the
6863: 5819: 5272: 3275: 3187:(VoIP) where it is generally more useful to get most of the data in a timely fashion than it is to get all of the data in order. 2857: 2752: 2586:
reliably handled. Since the feature is not frequently used, it is not well tested on some platforms and has been associated with
1371: 567: 498: 291: 2506:, is an option used to increase the maximum window size to 1 gigabyte. Scaling up to these larger window sizes is necessary for 2471:
for details). The use of SACK has become widespread—all popular TCP stacks support it. Selective acknowledgment is also used in
1850:
An open connection, data received can be delivered to the user. The normal state for the data transfer phase of the connection.
2928:(PRR) is a TCP extension developed by Google engineers. PRR ensures that the TCP window size after recovery is as close to the 861: 2398:(MTU) size of the data link layer of the networks to which the sender and receiver are directly attached. TCP senders can use 2366:
or TCP timestamps. These individual RTT samples are then averaged over time to create a smoothed round trip time (SRTT) using
8280: 7784:
Considerations around Transport Header Confidentiality, Network Operations, and the Evolution of Internet Transport Protocols
2703: 2078: 806: 801: 316: 306: 222: 191: 148: 8531:
John Kristoff's Overview of TCP (Fundamental concepts behind TCP and how it is used to transport data between two endpoints)
6830: 1454:
field is used for error-checking of the TCP header, the payload and an IP pseudo-header. The pseudo-header consists of the
5466: 1472:
If the URG flag is set, then this 16-bit field is an offset from the sequence number indicating the last urgent data byte.
436: 366: 2967:
One way to overcome the processing power requirements of TCP is to build hardware implementations of it, widely known as
2478:
Selective acknowledgements can be 'reneged', where the receiver unilaterally discards the selectively acknowledged data.
5908: 4982: 4847: 3130:) in cellular networks, or proxy-based solutions which require some changes in the network without modifying end nodes. 3123: 3087: 2198:
is the clock granularity. This guards against excessive transmission traffic due to faulty or malicious actors, such as
1433:, which specifies the number of window size units that the sender of this segment is currently willing to receive. (See 1333: 841: 356: 351: 346: 207: 3261:
that is designed to replace TCP transparently to overcome perceived inefficiencies related to wireless data transport.
3007:. Another source of ossification is the difficulty of modification of TCP functions at the endpoints, typically in the 2824:, thereby allowing many IP addresses (and their ports) on the subnet to be serviced by a single public-facing address. 159:(bytes) between applications running on hosts communicating via an IP network. Major internet applications such as the 6806: 4223: 3218: 2813: 2291: 1463: 533: 493: 361: 6761:
Muhammad Adeel & Ahmad Ali Iqbal (2007). "TCP Congestion Window Optimization for CDMA2000 Packet Data Networks".
1839:
Waiting for a confirming connection request acknowledgment after having both received and sent a connection request.
5423:
Proceedings of the conference on Applications, Technologies, Architectures, and Protocols for Computer Communication
4527: 5953:
John T. Hagen; Barry E. Mullins (2013). "TCP veto: A novel network attack and its Application to SCADA protocols".
4228: 3269: 3254: 3049: 3045: 2762: 1345:
From 2003 to 2017, the last bit (bit 103 of the header) was defined as the NS (Nonce Sum) flag by the experimental
893: 789: 5134:
Mathis; Mathew; Semke; Mahdavi; Ott (1997). "The macroscopic behavior of the TCP congestion avoidance algorithm".
8290: 7915:
NOSSDAV'17: Proceedings of the 27th Workshop on Network and Operating Systems Support for Digital Audio and Video
3158:
the ACK is received by the sender, the packet has been stored by the accelerator, not delivered to the receiver.
2925: 2587: 2107: 825: 774: 8016:
Bruyeron, Renaud; Hemon, Bruno; Zhang, Lixa (April 1998). "Experimentations with TCP selective acknowledgment".
1475:
Options (TCP Option): Variable 0–320 bits, in units of 32 bits; size(Options) == (DOffset - 5) * 32
4218: 3238: 3062: 2900: 2726: 2559:
TCP timestamps are enabled by default in Linux, and disabled by default in Windows Server 2008, 2012 and 2016.
2202: 2199: 1788: 683: 386: 326: 218: 176: 8169:. IEEE INFOCOM 2003. Twenty-second Annual Joint Conference of the IEEE Computer and Communications Societies. 5193:"An Overview of Packet Reordering in Transmission Control Protocol (TCP): Problems, Solutions, and Challenges" 4402: 3706: 2367: 7913:
Bhat, Divyashri; Rizk, Amr; Zink, Michael (June 2017). "Not so QUIC: A Performance Study of DASH over QUIC".
6237: 5555: 2262:
processing received data, the smartphone must be able to regulate the data flow so as not to be overwhelmed.
5851: 3279: 3008: 2940: 2499: 2492: 2242: 2234: 1697: 553: 543: 336: 251: 235: 132: 128: 6114: 3107:
Reducing reordering-induced spurious retransmissions trades off against speedy recovery from genuine loss.
8187: 6071: 5430: 5143: 3229: 3195: 2929: 2782: 2336: 2311: 2039: 845: 817: 421: 271: 214: 203: 4595: 8051: 3028: 2988: 2299: 2073: 797: 548: 321: 187: 164: 8525: 6888: 2059:
Congestion control: lost packets (presumed due to congestion) trigger a reduction in data delivery rate
1916:
Waiting for enough time to pass to be sure that all remaining packets on the connection have expired.
7854: 7826: 7798: 7770: 7742: 7714: 7686: 7655: 7627: 7599: 7571: 7543: 7511: 7475: 7447: 7415: 7384: 7352: 7324: 7292: 7264: 7236: 7204: 7173: 7137: 7109: 7078: 7043: 7012: 6981: 6950: 6211: 4298:
Window size is relative to the segment identified by the sequence number in the acknowledgment field.
3258: 3191: 3024: 2996: 2603: 2387: 852: 331: 152: 106: 8192: 8182:
Hesmans, Benjamin; Duchene, Fabien; Paasch, Christoph; Detal, Gregory; Bonaventure, Olivier (2013).
6076: 5588: 2650:
through 2012. Notable vulnerabilities include denial of service, connection hijacking, TCP veto and
639:, and Carl Sunshine, and published in December 1974. It contains the first attested use of the term 5716: 5435: 5148: 5068: 4848:"Change RFC 3540 "Robust Explicit Congestion Notification (ECN) Signaling with Nonces" to Historic" 4467:'Industrial Legislatures': Consensus Standardization in the Second and Third Industrial Revolutions 3127: 2691: 2663: 2363: 2321: 2258: 2214: 2124: 2030:
Both endpoints must also allocate space for unacknowledged packets and received (but unread) data.
8045:
Chen, Shan; Jero, Samuel; Jagielski, Matthew; Boldyreva, Alexandra; Nita-Rotaru, Cristina (2021).
5682: 5240: 1979: 8444: 8389: 8349: 8307: 8070: 8033: 8004: 7962: 7926: 7153: 7089: 6784: 5980: 5458: 5161: 5048: 3214: 3119: 3012: 2968: 2713:
or other routing attacks that allow an attacker to take permanent control of the TCP connection.
2399: 2317: 908: 785: 538: 266: 2951:, where servers have to handle large numbers of short-lived TCP connections. In 2016, TCPCT was 2233:
for details. The TCP checksum is a weak check by modern standards and is normally paired with a
4421:"Designed for Change: End-to-End Arguments, Internet Innovation, and the Net Neutrality Debate" 3225:
or similar systems) are far simpler without a relatively complex protocol like TCP in the way.
8494: 8475: 8454: 6774: 6287: 5970: 5787: 5749: 5720: 5448: 5078: 5036: 5026: 4726: 4354: 3791: 3334: 3118:
TCP was originally designed for wired networks. Packet loss is considered to be the result of
3099: 3032: 2046:
Ordered data transfer: the destination host rearranges segments according to a sequence number
1758: 1444: 1213: 958: 616: 466: 242: 156: 136: 8491:
TCP/IP Illustrated, Volume 3: TCP for Transactions, HTTP, NNTP, and the UNIX Domain Protocols
5648:
David Murray; Terry Koziniec; Sebastian Zander; Michael Dixon; Polychronis Koutsakis (2017).
3003:, and difficulties caused by intermediaries have hindered the deployment of TCP Fast Open in 8425: 8399: 8339: 8331: 8299: 8265: 8238: 8197: 8170: 8147: 8117: 8060: 8025: 7994: 7986: 7954: 7918: 7899: 7889: 7844: 7816: 7788: 7760: 7732: 7704: 7676: 7645: 7638:
Cheng, Yuchung; Cardwell, Neal; Dukkipati, Nandita; Jha, Priyaranjan, eds. (February 2021).
7617: 7589: 7585:
Moving Outdated TCP Extensions and TCP-Related Documents to Historic or Informational Status
7561: 7533: 7501: 7465: 7437: 7405: 7374: 7342: 7314: 7282: 7254: 7226: 7194: 7163: 7127: 7099: 7068: 7033: 7002: 6971: 6940: 6766: 6740: 6201: 6081: 5962: 5807:
Survey of Security Hardening Methods for Transmission Control Protocol (TCP) Implementations
5708: 5440: 5204: 5153: 4577: 4496: 4394: 3777:
A pseudo-header that mimics the IPv6 header for computation of the checksum is shown below.
3317: 2651: 2630: 2575: 2395: 2391: 2286:
When a receiver advertises a window size of 0, the sender stops sending data and starts its
1349:, ECN-nonce. ECN-nonce never gained widespread use and the RFC was moved to Historic status. 770: 731: 612: 226: 8376:
Sy, Erik; Mueller, Tobias; Burkert, Christian; Federrath, Hannes; Fischer, Mathias (2020).
8161: 5806: 940:
section. The segment header contains 10 mandatory fields, and an optional extension field (
8222: 7666: 6834: 5875: 4672: 4643: 4420: 4308: 4248: 4204: 4196: 3210: 3206: 3041: 2771: 2678:
and cryptographic puzzles, though SYN cookies come with their own set of vulnerabilities.
2451:(the sequence number immediately following the last sequence number of the block), with a 2359: 2344: 1783: 920: 829: 762: 608: 407: 195: 172: 98: 6166: 5709: 3736: 8530: 2213:
specifies that implementations must not use retransmitted segments when estimating RTT.
1235:
Padded with zeroes to a multiple of 32 bits, since Data Offset counts words of 4 octets.
8469: 5072: 3167: 3084: 2944: 2817: 2806: 2667: 2634: 2611: 2266: 2181: 2049:
Retransmission of lost packets: any cumulative stream not acknowledged is retransmitted
2023: 873: 813: 778: 766: 457: 160: 38: 8535: 8047:"Secure Communication Channel Establishment: TLS 1.3 (Over TCP Fast Open) versus QUIC" 2917:, which was not widely adopted due to security issues. TCP Fast Open was published as 8544: 8448: 8074: 8008: 7554:
Cheng, Yuchung; Chu, Jerry; Radhakrishnan, Sivasankar; Jain, Arvind (December 2014).
7523: 7058: 7023: 6859: 5742: 4718: 4581: 3199: 3184: 2906: 2890: 2348: 2052:
Error-free data transfer: corrupted packets are treated as lost and are retransmitted
2006: 1787:. During the lifetime of a TCP connection, the local end-point undergoes a series of 1722: 1553:
This may be used to align option fields on 32-bit boundaries for better performance.
877: 837: 168: 8311: 8037: 7966: 7930: 5984: 4568:
Cerf, Vinton G; Cain, Edward (October 1983). "The DoD internet architecture model".
1770:
is a multi-step handshake process that establishes a connection before entering the
8353: 7491: 7054: 6788: 5462: 5165: 3233: 3138: 3066: 3053: 3004: 2880: 2786: 2710: 2325: 821: 750: 376: 135:. It originated in the initial network implementation in which it complemented the 7939: 4465: 2541:
a 4-byte echo reply timestamp value (the most recent timestamp received from you).
2038:
The Transmission Control Protocol differs in several key features compared to the
2027:
and become unable to establish new TCP connections, even from other applications.
1828:
Waiting for a matching connection request after having sent a connection request.
1466:
for the TCP protocol (6) and the length of the TCP headers and payload (in bytes).
8155:. Next Generation Teletraffic and Wired/Wireless Advanced Networking (NEW2AN'04). 4311:
for the source and destination, each of which is made up of an address and a port
1894:
Waiting for a connection termination request acknowledgment from the remote TCP.
8520: 8413: 8174: 8143: 8130: 7873: 7857: 7838: 7829: 7810: 7801: 7782: 7773: 7754: 7745: 7726: 7717: 7698: 7689: 7670: 7658: 7639: 7630: 7611: 7602: 7583: 7574: 7555: 7546: 7527: 7514: 7495: 7478: 7459: 7450: 7431: 7418: 7399: 7395: 7387: 7368: 7355: 7336: 7327: 7308: 7304: 7295: 7276: 7267: 7248: 7239: 7220: 7216: 7207: 7188: 7184: 7176: 7157: 7149: 7140: 7121: 7112: 7093: 7081: 7062: 7046: 7027: 6930: 6827: 6214: 6195: 4961: 4619: 4243: 3092: 3080: 3036: 2675: 1701: 1672: 1367:
ECN-Echo has a dual role, depending on the value of the SYN flag. It indicates:
793: 636: 199: 111: 8335: 8065: 8046: 7990: 7613:
Services Provided by IETF Transport Protocols and Congestion Control Mechanisms
7015: 6996: 6984: 6965: 6953: 6934: 5418: 5192: 4490: 4478:
Vinton G. Cerf (October 1980). "Protocols for Interconnected Packet Networks".
3141:, Veno, and Santa Cruz, have been proposed to help solve the wireless problem. 2514:
the option in their SYN segments to enable window scaling in either direction.
903:
appears in both informal and formal usage, whereas in more precise terminology
735: 8253: 8134: 8121: 7487: 6992: 6961: 5966: 4517: 4398: 4238: 4233: 2952: 2821: 2679: 2626: 2507: 2422: 881: 524: 8404: 8377: 7120:
Mathis, Matt; Mahdavi, Jamshid; Floyd, Sally; Romanow, Allyn (October 1996).
6936:
Specification of Internet Transmission Control Program, December 1974 Version
5900: 5271:
Cheng, Yuchung; Cardwell, Neal; Dukkipati, Nandita; Jha, Priyaranjan (2017).
5040: 4351:
Location-Based Information Systems Developing Real-Time Tracking Applications
3278:(UDT) has better efficiency and fairness than TCP in networks that have high 2995:') can make decisions based on that metadata or even modify it, breaking the 8218: 8201: 7922: 7904: 6926: 6085: 5845:"Some insights about the recent TCP DoS (Denial of Service) vulnerabilities" 4554: 3316:
In other words, after appropriate padding, all 16-bit words are added using
3213:, and servers that serve simple requests from huge numbers of clients (e.g. 3134: 2992: 2984: 2980: 2884: 2872: 2671: 2171:{\displaystyle {\text{smoothed RTT}}+\max(G,4\times {\text{RTT variation}})} 742: 600: 93: 56: 6137:"How Hard Can It Be? Designing and Implementing a Deployable Multipath TCP" 5208: 2820:
the flow of traffic that is passing between a public network and a private
2295:
responds by sending another acknowledgment containing the new window size.
1400:
Push function. Asks to push the buffered data to the receiving application.
8429: 8270: 8257: 8243: 8226: 8029: 7958: 7894: 7877: 7526:; Eddy, Wesley M.; Blanton, Ethan; Zimmermann, Alexander (February 2015). 6770: 6135:
Raiciu; Paasch; Barre; Ford; Honda; Duchene; Bonaventure; Handley (2012).
5444: 5157: 5020: 4521: 3110:
Selective acknowledgment can provide a significant benefit to throughput;
2816:(NAT), typically uses dynamic port numbers, on the public-facing side, to 2269:
flow control protocol. In each TCP segment, the receiver specifies in the
703:
Specification of Internetwork Transmission Control Program TCP Version 3 (
699: 8288:
Paasch, Christoph; Bonaventure, Olivier (1 April 2014). "Multipath TCP".
8258:"The Eifel algorithm: making TCP robust against spurious retransmissions" 7610:
Fairhurst, Gorry; Trammell, Brian; Kuehlewind, Mirja, eds. (March 2017).
7529:
A Roadmap for Transmission Control Protocol (TCP) Specification Documents
4983:"Transmission Control Protocol (TCP) Parameters: TCP Option Kind Numbers" 2955:
in favor of TCP Fast Open. The status of the original RFC was changed to
2896: 2876: 2868: 2725:
the impersonated IP address is down, or bring it to that condition using
2246: 1451: 746: 690: 620: 604: 210: 60: 4746: 4744: 4742: 2774:
have available, and connections break if an endpoint's address changes.
2320:. TCP uses a number of mechanisms to achieve high performance and avoid 809:
the application's communication from the underlying networking details.
17: 8367: 8103: 8088: 6233: 5242:
RACK: a time-based fast loss detection for TCP draft-cheng-tcpm-rack-00
3171: 3075: 3071: 2602:
Normally, TCP waits for 200 ms for a full packet of data to send (
2591: 2238: 686:(IEN) documents describe the evolution of TCP into the modern version: 2867:, but many alternative algorithms have since been proposed (including 2805:(80). Registered ports are typically used by end-user applications as 1971: 694:
Specification of Internet Transmission Control Program TCP Version 2 (
659:. This resulted in a networking model that became known informally as 8344: 8227:"Improving round-trip time estimates in reliable transport protocols" 7999: 7849: 7821: 7793: 7765: 7737: 7709: 7681: 7650: 7622: 7594: 7566: 7538: 7506: 7470: 7442: 7410: 7379: 7347: 7319: 7287: 7259: 7231: 7199: 7168: 7132: 7104: 7073: 7038: 7007: 6976: 6945: 6206: 4794: 4792: 4790: 4501: 4321: 2948: 2790: 2766: 2687: 812:
TCP is used extensively by many internet applications, including the
487: 381: 280: 260: 140: 8303: 6060:"Improving datacenter performance and robustness with multipath TCP" 5650:"An Analysis of Changing Enterprise Network Traffic Characteristics" 5223: 4723:
Internetworking with TCP/IP: Principles, Protocols, and Architecture
8394: 8362: 8098: 8083: 7582:
Zimmermann, Alexander; Eddy, Wesley M.; Eggert, Lars (April 2016).
7278:
Robust Explicit Congestion Notification (ECN) Signaling with Nonces
7190:
An Extension to the Selective Acknowledgement (SACK) Option for TCP
6763:
Fourth International Conference on Information Technology (ITNG'07)
6229: 4349:
Labrador, Miguel A.; Perez, Alfredo J.; Wightman, Pedro M. (2010).
2729:. This is why the initial sequence number is now chosen at random. 2370:. This SRTT value is what is used as the round-trip time estimate. 2335:
Modern implementations of TCP contain four intertwined algorithms:
896:
into an Internet Protocol (IP) datagram, and exchanged with peers.
8116:. 2019 Network Traffic Measurement and Analysis Conference (TMA). 5955:
2013 IEEE PES Innovative Smart Grid Technologies Conference (ISGT)
5655:. The 23rd Asia-Pacific Conference on Communications (APCC 2017). 5547: 3000: 2914: 2798: 2758: 2276: 1999: 1995: 1978: 1970: 1883:
Waiting for a connection termination request from the local user.
1872:
Waiting for a connection termination request from the remote TCP.
1757: 508: 286: 7187:; Mahdavi, Jamshid; Mathis, Matt; Podolsky, Matthew (July 2000). 6477: 6414: 3696:{\displaystyle {\text{Total Length}}-{\text{IPv4 Header Length}}} 3305:, the method used to compute the checksum is defined as follows: 868:
While IP handles actual delivery of the data, TCP keeps track of
6110: 5770:"Security Assessment of the Transmission Control Protocol (TCP)" 4426:. Information Technology and Innovation Foundation. p. 11. 4325: 4253: 3763: 3302: 3222: 2802: 2794: 2716:
Impersonating a different IP address was not difficult prior to
2647: 1817:
Waiting for a connection request from any remote TCP end-point.
1459: 1455: 476: 471: 441: 391: 311: 276: 8210: 6731: 6729: 3133:
A number of alternative congestion control algorithms, such as
7433:
TCP Extensions for Multipath Operation with Multiple Addresses
5025:. Keith W. Ross (7th ed.). Harlow, England. p. 286. 4249:
Transport layer § Comparison of transport layer protocols
3813: 3356: 2277: 1693: 980: 296: 8515: 8378:"Enhanced Performance and Privacy for TLS over TCP Fast Open" 8114:
A Bottom-Up Investigation of the Transport-Layer Ossification
7458:
Mathis, Matt; Dukkipati, Nandita; Cheng, Yuchung (May 2013).
6058:
Raiciu; Barre; Pluntke; Greenhalgh; Wischik; Handley (2011).
5274:
RACK: a time-based fast loss recovery draft-ietf-tcpm-rack-02
4962:"Protection of BGP Sessions via the TCP MD5 Signature Option" 4596:"The TCP/IP Guide – TCP/IP Architecture and the TCP/IP Model" 2863:
The original TCP congestion avoidance algorithm was known as
139:(IP). Therefore, the entire suite is commonly referred to as 7398:; Allman, Mark; Chu, H.K. Jerry; Sargent, Matt (June 2011). 7222:
The Addition of Explicit Congestion Notification (ECN) to IP
6501: 1778:
closes the connection and releases all allocated resources.
213:
service that prioritizes time over reliability. TCP employs
4174:
The length of the TCP header and data (measured in octets).
27:
Principal protocol used to stream data across an IP network
6612: 6588: 6461: 6459: 6357:, 2. Current Uses of Transport Headers within the Network. 1766:
TCP protocol operations may be divided into three phases.
1696:
authentication (option 19) originally designed to protect
7275:
Spring, Neil; Weatherall, David; Ely, David (June 2003).
6828:"An Analysis of AIMD Algorithm with Decreasing Increases" 6576: 6450: 2097:. TCP incurs complexity due to retransmission ambiguity. 675:. Later, it became the part of, and synonymous with, the 5959:
Innovative Smart Grid Technologies (ISGT), 2013 IEEE PES
5191:
Leung, Ka-cheong; Li, Victor O.k.; Yang, Daiqin (2007).
3264:
TCP also has issues in high-bandwidth environments. The
2229:
To assure correctness a checksum field is included; see
663:, although formally it was variously referred to as the 194:, and error detection adds to reliability but lengthens 8281:"Head-of-Line Blocking in QUIC and HTTP/3: The Details" 5301: 5299: 4256:
a proxy-based modification of TCP for wireless networks
3023:
As TCP provides applications with the abstraction of a
1388:
Indicates that the Urgent pointer field is significant.
792:, or unpredictable network behavior, IP packets may be 615:
among network nodes. The authors had been working with
217:. However, there are vulnerabilities in TCP, including 7370:
Architectural Guidelines for Multipath TCP Development
7029:
Requirements for Internet Hosts – Communication Layers
5820:"Quick Blind TCP Connection Spoofing with SYN Cookies" 3766:, the method used to compute the checksum is changed: 633:
Specification of Internet Transmission Control Program
7367:; Barre, Sebastien; Iyengar, Janardhan (March 2011). 6560: 6558: 6438: 5197:
IEEE Transactions on Parallel and Distributed Systems
4555:"Final Report of the Stanford University TCP Project" 3739: 3709: 3679: 2184: 2133: 7812:
Long-Term Viability of Protocol Extension Mechanisms
5364: 5362: 4154:
The checksum is computed over the following fields:
3641:
The checksum is computed over the following fields:
3044:. If multiple independent higher-level messages are 2093:
retransmission is being acknowledged, the so-called
1121:
Acknowledgement Number (meaningful when ACK bit set)
805:
passes them to the receiving application. Thus, TCP
8416:(5 August 1986). "Why TCP timers don't work well". 6537: 5876:"Exploiting TCP and the Persist Timer Infiniteness" 4919: 4917: 4915: 4777: 4775: 4773: 4771: 3174:is another utility that can be used for debugging. 2860:(ECN), a congestion avoidance signaling mechanism. 2674:attack. Proposed solutions to this problem include 105: 92: 84: 66: 52: 44: 8149:Resolving Acknowledgment Ambiguity in non-SACK TCP 7878:"On estimating end-to-end network path properties" 6696: 6684: 6197:Cryptographic Protection of TCP Streams (tcpcrypt) 5741: 3781:TCP pseudo-header for checksum computation (IPv6) 3745: 3725: 3695: 3324:TCP pseudo-header for checksum computation (IPv4) 3111: 2290:. The persist timer is used to protect TCP from a 2190: 2170: 1355:Contains 8 1-bit flags (control bits) as follows: 784:At the lower levels of the protocol stack, due to 7697:Trammell, Brian; Kuehlewind, Mirja (April 2019). 7672:Internet Protocol, Version 6 (IPv6) Specification 6826:Yunhong Gu, Xinwei Hong, and Robert L. Grossman. 6021: 2545:TCP timestamps are used in an algorithm known as 2447:(the first sequence number of the block) and the 8471:TCP/IP Illustrated, Volume 2: The Implementation 7940:"On making TCP more robust to packet reordering" 7494:(September 2014). Scheffenegger, Richard (ed.). 6393:, 2.3. Multi-party Interactions and Middleboxes. 5792:: CS1 maint: bot: original URL status unknown ( 4813:, 3.8.5 The Communication of Urgent Information. 4378:A Protocol for Packet Network Intercommunication 2142: 2127:behavior. Typically, the initial timer value is 1963:and a full-duplex communication is established. 860:. This requires the receiver to respond with an 7809:Thomson, Martin; Pauly, Tommy (December 2021). 5124:, 4.2. Monotonically Increasing Packet Numbers. 1332:Specifies the size of the TCP header in 32-bit 1233:If present, Data Offset will be greater than 5. 7781:Fairhurst, Gorry; Perkins, Colin (July 2021). 5022:Computer networking : a top-down approach 2913:. It is similar to an earlier proposal called 2538:a 4-byte sender timestamp value (my timestamp) 1613: 1478:The length of this field is determined by the 8382:Proceedings on Privacy Enhancing Technologies 8099:"QUIC as a solution to protocol ossification" 8084:"Checksum offloads and protocol ossification" 7938:Blanton, Ethan; Allman, Mark (January 2002). 7641:The RACK-TLP Loss Detection Algorithm for TCP 7247:Ludwig, Reiner; Meyer, Michael (April 2003). 6672: 6660: 6648: 6636: 6426: 6111:"MultiPath TCP – Linux Kernel implementation" 5775:. Archived from the original on March 6, 2009 5380: 5317: 5109: 4725:. Vol. 1 (5th ed.). Prentice Hall. 3232:(UDP) is used. This provides the application 3190:For historical and performance reasons, most 3103: 1774:phase. After data transfer is completed, the 575: 8: 8468:Stevens, W. Richard; Wright, Gary R (1994). 7753:Iyengar, Jana; Swett, Ian, eds. (May 2021). 6708: 5392: 5341: 4644:"Robert E Kahn – A.M. Turing Award Laureate" 4273: 4271: 3272:(ATM) can avoid TCP's retransmits overhead. 2241:, below both TCP and IP, such as is used in 1370:If the SYN flag is set (1), the TCP peer is 1220:Urgent Pointer (meaningful when URG bit set) 858:positive acknowledgment with re-transmission 840:. For such applications, protocols like the 198:. Applications that do not require reliable 32: 8450:TCP/IP Illustrated, Volume 1: The Protocols 8323:IEEE Communications Surveys & Tutorials 7978:IEEE Communications Surveys & Tutorials 6369:, 3. Research, Development, and Deployment. 5353: 4837:, 3.4.1. Initial Sequence Number Selection. 4374:Vinton G. Cerf; Robert E. Kahn (May 1974). 3654:The destination address in the IPv4 header. 2947:. TCPCT was designed due to necessities of 2443:, where each SACK block is conveyed by the 8516:Oral history interview with Robert E. Kahn 7756:QUIC Loss Detection and Congestion Control 6465: 5683:"On the implementation of TCP urgent data" 5329: 5053:: CS1 maint: location missing publisher ( 4673:"Vinton Cerf – A.M. Turing Award Laureate" 4289:Windows size units are, by default, bytes. 3065:(TLS) requires a handshake of its own for 2468: 582: 568: 231: 31: 8418:ACM SIGCOMM Computer Communication Review 8403: 8393: 8343: 8269: 8262:ACM SIGCOMM Computer Communication Review 8242: 8191: 8064: 8018:ACM SIGCOMM Computer Communication Review 7998: 7947:ACM SIGCOMM Computer Communication Review 7903: 7893: 7882:ACM SIGCOMM Computer Communication Review 7848: 7820: 7792: 7764: 7736: 7708: 7680: 7649: 7621: 7593: 7565: 7537: 7505: 7469: 7441: 7409: 7378: 7346: 7318: 7286: 7258: 7230: 7198: 7167: 7131: 7103: 7095:Defending Against Sequence Number Attacks 7072: 7037: 7006: 6975: 6944: 6205: 6075: 6064:ACM SIGCOMM Computer Communication Review 5744:TCP/IP Illustrated. Vol. 1, The protocols 5434: 5427:ACM SIGCOMM Computer Communication Review 5147: 5136:ACM SIGCOMM Computer Communication Review 4500: 4480:ACM SIGCOMM Computer Communication Review 3738: 3718: 3710: 3708: 3688: 3680: 3678: 2757:A TCP connection is identified by a four- 2230: 2183: 2160: 2134: 2132: 1647:Timestamp and echo of previous timestamp 1571: 8112:Edeline, Korian; Donnet, Benoit (2019). 6230:"TCP Fast Open: expediting web services" 5624:Technet – Windows Server 2012 Essentials 5419:"When the CRC and TCP checksum disagree" 4713: 4711: 4709: 4707: 4705: 4703: 4701: 4699: 4697: 3779: 3726:{\displaystyle {\text{200}}-{\text{20}}} 3322: 3228:Generally, where TCP is unsuitable, the 2431:To alleviate this issue TCP employs the 1793: 1504: 946: 730:TCP was standardized in January 1980 as 619:to incorporate concepts from the French 8160:Gurtov, Andrei; Ludwig, Reiner (2003). 7430:; Bonaventure, Olivier (January 2013). 7335:Simpson, William Allen (January 2011). 6600: 5748:. Addison-Wesley. pp. Chapter 20. 5548:"TCP window scaling and broken routers" 4341: 4267: 3183:media, real-time multiplayer games and 2409:but, strictly speaking, the MSS is not 848:(UDP) are usually recommended instead. 800:. TCP detects these problems, requests 753:for their foundational work on TCP/IP. 523: 456: 406: 241: 234: 8551:Computer-related introductions in 1974 8163:Responding to Spurious Timeouts in TCP 6549: 6528:, Bonus: Transport Congestion Control. 6489: 5785: 5046: 4328:is used as a transport instead of TCP. 4129: 3958: 3921: 3616: 1692:For message authentication, replacing 1262: 1231: 7250:The Eifel Detection Algorithm for TCP 5305: 4523:Comments on Internet Protocol and TCP 3648:The source address in the IPv4 header 2358:(RTO) that is based on the estimated 1983:Detailed TCP close() sequence diagram 611:protocol for sharing resources using 7: 8231:ACM Transactions on Computer Systems 8129:Ghedini, Alessandro (26 July 2018). 8097:Corbet, Jonathan (29 January 2018). 8082:Corbet, Jonathan (8 December 2015). 7837:Eddy, Wesley M., ed. (August 2022). 7700:The Wire Image of a Network Protocol 7401:Computing TCP's Retransmission Timer 7123:TCP Selective Acknowledgment Options 6846: 6720: 6624: 6564: 6525: 6513: 6402: 6390: 6378: 6366: 6354: 6342: 6330: 6318: 6306: 6269: 6257: 6045: 6033: 6009: 5997: 5740:Richard W. Stevens (November 2011). 5575: 5534: 5522: 5510: 5498: 5486: 5404: 5368: 5290: 5258: 5178: 5121: 5097: 5006: 4947: 4935: 4923: 4894: 4882: 4870: 4834: 4822: 4810: 4798: 4781: 4750: 4278: 4177:Zeroes: 24 bits; Zeroes == 0 3249:Stream Control Transmission Protocol 2991:—as any intermediate node (a ' 2918: 2853: 2849: 2845: 2841: 2717: 2527: 2503: 2479: 2473:Stream Control Transmission Protocol 2461: 2436: 2405:MSS announcement may also be called 2210: 1609:Selective Acknowledgement permitted 1346: 932:A TCP segment consists of a segment 8361:Rybczyńska, Marta (13 March 2020). 8211:"HTTP/2 Frequently Asked Questions" 8184:Are TCP extensions middlebox-proof? 7840:Transmission Control Protocol (TCP) 7497:TCP Extensions for High Performance 7461:Proportional Rate Reduction for TCP 7307:; Blanton, Ethan (September 2009). 7064:TCP Extensions for High Performance 6737:"TCP performance over CDMA2000 RLP" 6284:High-performance browser networking 5662:from the original on 3 October 2017 5225:Investigate reordering in Linux TCP 4906: 4762: 4451: 4433:from the original on 29 August 2019 4419:Bennett, Richard (September 2009). 4387:IEEE Transactions on Communications 3657:Zeroes: 8 bits; Zeroes == 0 2837: 2833: 2779:Internet Assigned Numbers Authority 2547:Protection Against Wrapped Sequence 1736:Internet Assigned Numbers Authority 1689:TCP Authentication Option (TCP-AO) 1651: 1592: 1438: 628: 6933:; Sunshine, Carl (December 1974). 6286:(1. ed.). Beijing: O'Reilly. 5931:"Simple Active Attack Against TCP" 5077:(Fourth ed.). Prentice Hall. 3266:TCP congestion avoidance algorithm 3112:Bruyeron, Hemon & Zhang (1998) 2836:in 1974, and the v4 specification 2376:TCP congestion avoidance algorithm 1317:Acknowledgment Number: 32 bits 623:project into the new network. The 171:rely on TCP, which is part of the 25: 7669:; Hinden, Robert M. (July 2017). 7219:; Black, David (September 2001). 5599:from the original on 5 March 2016 5228:(MSc thesis). University of Oslo. 5100:, 4.2.2.13. Closing a Connection. 4530:from the original on May 16, 2019 4464:Russell, Andrew Lawrence (2008). 4164:Destination address: 128 bits 3286:Multipurpose Transaction Protocol 2574:. This marks the transmission as 2456:sequence numbers 2,000 to 2,999. 1630:Selective ACKnowledgement (SACK) 1434: 1339:Reserved (Rsrvd): 4 bits 6697:Bruyeron, Hemon & Zhang 1998 6685:Bruyeron, Hemon & Zhang 1998 5681:Gont, Fernando (November 2008). 5009:, 3.3.2. State Machine Overview. 4620:"Internet Experiment Note Index" 4553:Cerf, Vinton G. (1 April 1980). 3651:Destination address: 32 bits 3276:UDP-based Data Transfer Protocol 2858:Explicit Congestion Notification 2753:List of TCP and UDP port numbers 2534:There are two timestamp fields: 2316:The final main aspect of TCP is 1994:Some operating systems, such as 1614:§ Selective acknowledgments 1480: 206:(UDP) instead, which provides a 8279:Marx, Robin (3 December 2020). 7728:Transport Protocol Path Signals 7725:Hardie, Ted, ed. (April 2019). 7338:TCP Cookie Transactions (TCPCT) 6895:from the original on 2016-10-22 6866:from the original on 2017-01-31 6540:, Why just one TCP connection?. 6240:from the original on 2014-08-03 6177:from the original on 2020-02-23 6147:from the original on 2013-06-03 6117:from the original on 2013-03-27 5911:from the original on 2017-09-28 5882:from the original on 2010-01-22 5826:from the original on 2014-02-22 5689:from the original on 2019-05-16 5558:from the original on 2020-03-31 5469:from the original on 2008-05-05 4989:from the original on 2017-10-02 4960:Heffernan, Andy (August 1998). 4683:from the original on 2021-10-11 4654:from the original on 2019-07-13 4161:The address in the IPv6 header. 2840:, published in September 1981. 2433:selective acknowledgment (SACK) 2079:TCP sequence prediction attacks 1762:A Simplified TCP State Diagram. 665:DoD internet architecture model 6228:Michael Kerrisk (2012-08-01). 4186:The protocol value for TCP: 6. 3666:The protocol value for TCP: 6. 3098:TCP throughput is affected by 2761:of the source address, source 2704:TCP sequence prediction attack 2354:In addition, senders employ a 2165: 2145: 1297:Identifies the receiving port. 1: 8556:Transmission Control Protocol 6998:Transmission Control Protocol 6022:Paasch & Bonaventure 2014 5818:Jakob Lell (13 August 2013). 1749:The payload of the TCP packet 1496:) in the TCP options section. 1294:Destination Port: 16 bits 653:Transmission Control Protocol 635:), was written by Vint Cerf, 121:Transmission Control Protocol 33:Transmission Control Protocol 8489:Stevens, W. Richard (1996). 7426:Ford, Alan; Raiciu, Costin; 7363:Ford, Alan; Raiciu, Costin; 4582:10.1016/0376-5075(83)90042-9 4158:Source address: 128 bits 3088:non-interactive key exchange 2469:§ TCP segment structure 2118:Timeout-based retransmission 1927:No connection state at all. 1300:Sequence Number: 32 bits 1291:Identifies the sending port. 842:Real-time Transport Protocol 215:network congestion avoidance 88:Transmission Control Program 8175:10.1109/INFCOM.2003.1209251 7061:; Borman, Dave (May 1992). 6516:, HOL blocking in HTTP/1.1. 6167:"Multipath TCP Deployments" 5715:. Morgan Kaufmann. p.  5626:. Microsoft. Archived from 5620:"TCP timestamp is disabled" 4938:, 2. Sack-Permitted Option. 4320:As of the latest standard, 4224:Micro-bursting (networking) 3645:Source address: 32 bits 3318:ones' complement arithmetic 3104:Blanton & Allman (2002) 2975:Wire image and ossification 2926:Proportional Rate Reduction 2814:Network Address Translation 2526:TCP timestamps, defined in 2435:option, defined in 1996 in 2231:§ Checksum computation 2203:denial of service attackers 2101:Dupack-based retransmission 1572:§ Maximum segment size 1469:Urgent Pointer: 16 bits 1329: (DOffset): 4 bits 627:of the resulting protocol, 72:; 50 years ago 8577: 8453:. Addison-Wesley Pub. Co. 8336:10.1109/COMST.2016.2626780 8066:10.1007/s00145-021-09389-w 7991:10.1109/COMST.2014.2375213 6709:Bhat, Rizk & Zink 2017 5929:Laurent Joncheray (1995). 5593:Linux Kernel Documentation 5280:. IETF100. Yokohama: IETF. 5222:Johannessen, Mads (2015). 4229:TCP global synchronization 4116: 4103: 4098: 4085: 4057: 4044: 4031: 4026: 4008: 3995: 3603: 3590: 3585: 3572: 3544: 3531: 3518: 3513: 3500: 3477: 3464: 3270:Asynchronous Transfer Mode 3255:Venturi Transport Protocol 2750: 2701: 2633:; it is controlled by the 2490: 2420: 2328:allocation between flows. 2309: 2108:selective acknowledgements 1218: 1211: 1198: 1119: 1106: 1093: 1088: 179:often runs on top of TCP. 8561:Transport layer protocols 8291:Communications of the ACM 8209:IETF HTTP Working Group. 8122:10.23919/TMA.2019.8784690 6673:Blanton & Allman 2002 6661:Blanton & Allman 2002 6649:Blanton & Allman 2002 6637:Blanton & Allman 2002 6427:Edeline & Donnet 2019 6165:Bonaventure; Seo (2016). 5967:10.1109/ISGT.2013.6497785 5417:Stone; Partridge (2000). 5381:Karn & Partridge 1991 5318:Karn & Partridge 1991 5248:. IETF94. Yokohama: IETF. 5110:Karn & Partridge 1991 5019:Kurose, James F. (2017). 4399:10.1109/tcom.1974.1092259 4080: 4075: 4070: 4013: 3804: 3801: 3798: 3795: 3567: 3562: 3557: 3495: 3490: 3347: 3344: 3341: 3338: 2727:denial-of-service attacks 2417:Selective acknowledgments 2396:maximum transmission unit 2005:A connection can be in a 1137: 1132: 971: 968: 965: 962: 844:(RTP) operating over the 826:peer-to-peer file sharing 775:maximum transmission unit 37: 8405:10.2478/popets-2020-0027 6478:Papastergiou et al. 2017 6415:Papastergiou et al. 2017 5707:Peterson, Larry (2003). 5393:Allman & Paxson 1999 5342:Gurtov & Ludwig 2003 4950:, 3. Sack Option Format. 4825:, 3.4. Sequence Numbers. 4753:, 2.2. Key TCP Concepts. 4541:layered and modular way. 4307:Equivalently, a pair of 4219:Fault-tolerant messaging 4015:Next header (= Protocol) 3239:forward error correction 3063:Transport Layer Security 2963:Hardware implementations 2856:was written to describe 2095:retransmission ambiguity 1934:Connection establishment 1768:Connection establishment 1288:Source Port: 16 bits 684:Internet Experiment Note 8363:"A QUIC look at HTTP/3" 8202:10.1145/2535828.2535830 7923:10.1145/3083165.3083175 6905:network hardware later. 6860:"Wireshark: Offloading" 6723:, 4.5. More ACK Ranges. 6538:IETF HTTP Working Group 6282:Grigorik, Ilya (2013). 6086:10.1145/2043164.2018467 5354:Gurtov & Floyd 2004 5239:Cheng, Yuchung (2015). 4203:This feature may cause 4183:Next header: 8 bits 4171:TCP length: 32 bits 3669:TCP length: 16 bits 3280:bandwidth-delay product 3009:operating system kernel 2941:TCP Cookie Transactions 2666:and repeatedly sending 2500:TCP window scale option 2493:TCP window scale option 2257:TCP uses an end-to-end 1700:sessions. See RFC  1419:Last packet from sender 677:Internet Protocol Suite 236:Internet protocol suite 133:Internet protocol suite 7310:TCP Congestion Control 7159:TCP Congestion Control 7026:, ed. (October 1989). 6889:"Wireshark: Checksums" 5330:Ludwig & Katz 2000 5209:10.1109/TPDS.2007.1011 4474:Inventing the Internet 4059:Acknowledgement number 3775: 3747: 3727: 3697: 3546:Acknowledgement number 3314: 3230:User Datagram Protocol 3196:Fibre Channel Protocol 3011:or in hardware with a 2924:Proposed in May 2013, 2356:retransmission timeout 2332:congestion avoidance. 2312:TCP congestion control 2283: 2192: 2172: 2040:User Datagram Protocol 1984: 1976: 1975:Connection termination 1967:Connection termination 1776:connection termination 1763: 1718:Multipath TCP (MPTCP) 1624:N (10, 18, 26, or 34) 1460:destination IP address 930: 846:User Datagram Protocol 818:File Transfer Protocol 798:delivered out of order 204:User Datagram Protocol 8521:IANA Port Assignments 8430:10.1145/1013812.18216 8271:10.1145/505688.505692 8244:10.1145/118544.118549 8052:Journal of Cryptology 8030:10.1145/279345.279350 7959:10.1145/510726.510728 7895:10.1145/316194.316230 7215:Ramakrishnan, K. K.; 6920:Requests for Comments 6771:10.1109/ITNG.2007.190 5685:. 73rd IETF meeting. 5445:10.1145/347059.347561 5158:10.1145/263932.264023 4801:, 3.1. Header Format. 3768: 3758:TCP checksum for IPv6 3748: 3728: 3698: 3307: 3297:TCP checksum for IPv4 3192:storage area networks 3033:packets are reordered 3029:head-of-line blocking 3027:, it can suffer from 2989:protocol ossification 2848:. Among this list is 2598:Forcing data delivery 2300:silly window syndrome 2280: 2193: 2173: 2074:out-of-order delivery 2064:Reliable transmission 1982: 1974: 1761: 1652:§ TCP timestamps 1593:§ Window scaling 1567:Maximum segment size 1439:§ Window scaling 925: 888:TCP segment structure 643:, as a shorthand for 175:of the TCP/IP suite. 165:remote administration 127:) is one of the main 8186:. HotMiddlebox '13. 5901:"PUSH and ACK Flood" 5429:. pp. 309–319. 5069:Tanenbaum, Andrew S. 4852:datatracker.ietf.org 3737: 3707: 3677: 3663:Protocol: 8 bits 3292:Checksum computation 3259:proprietary protocol 3257:(VTP) is a patented 3095:used it by default. 3025:reliable byte stream 2997:end-to-end principle 2936:Deprecated proposals 2698:Connection hijacking 2694:are other variants. 2621:The RFC defines the 2388:maximum segment size 2382:Maximum segment size 2368:Jacobson's algorithm 2341:congestion avoidance 2182: 2131: 1668:User Timeout Option 1534:End of options list 1406:Reset the connection 853:reliable byte stream 223:connection hijacking 202:service may use the 8526:IANA TCP Parameters 8445:Stevens, W. Richard 7667:Deering, Stephen E. 7154:Stevens, W. Richard 7090:Bellovin, Steven M. 6502:Briscoe et al. 2016 6451:Hesmans et al. 2013 5537:, 4.4. No Reneging. 4277:Added to header by 3960:Destination address 3782: 3762:When TCP runs over 3746:{\displaystyle 180} 3733:, which results in 3479:Destination address 3325: 3301:When TCP runs over 2969:TCP offload engines 2692:PUSH and ACK floods 2668:purposely assembled 2449:Right Edge of Block 2322:congestive collapse 2237:integrity check at 2125:exponential backoff 1796: 1435:§ Flow control 1426:Window: 16 bits 949: 915:to the IP PDU, and 773:to accommodate the 184:connection-oriented 34: 8493:. Addison-Wesley. 8474:. Addison-Wesley. 8254:Katz, Randy Howard 8131:"The Road to QUIC" 7917:. pp. 13–18. 6995:(September 1981). 6964:(September 1981). 6833:2016-03-05 at the 6803:"TCP Acceleration" 6765:. pp. 31–35. 6439:Raiciu et al. 2012 6429:, p. 175-176. 5383:, p. 370-372. 4624:www.rfc-editor.org 4600:www.tcpipguide.com 4520:(15 August 1977), 3780: 3743: 3723: 3693: 3690:IPv4 Header Length 3323: 3120:network congestion 3013:TCP offload engine 2664:spoofed IP address 2445:Left Edge of Block 2400:path MTU discovery 2318:congestion control 2306:Congestion control 2284: 2188: 2168: 1985: 1977: 1924:Server and client 1902:Server and client 1891:Server and client 1880:Server and client 1869:Server and client 1858:Server and client 1847:Server and client 1795:TCP socket states 1794: 1764: 1754:Protocol operation 948:TCP header format 947: 909:protocol data unit 907:refers to the TCP 786:network congestion 8500:978-0-201-63495-2 8481:978-0-201-63354-2 8460:978-0-201-63346-7 8225:(November 1991). 8146:(February 2004). 6967:Internet Protocol 6780:978-0-7695-2776-5 6504:, pp. 29–30. 5976:978-1-4673-4896-6 5755:978-0-201-63346-7 5726:978-1-55860-832-0 5711:Computer Networks 5084:978-0-13-066102-9 5074:Computer Networks 5032:978-0-13-359414-0 4732:978-0-13-187671-2 4719:Comer, Douglas E. 4570:Computer Networks 4408:on March 4, 2016. 4191:Checksum offload 4152: 4151: 3721: 3713: 3691: 3683: 3639: 3638: 3100:packet reordering 2799:HTTP over SSL/TLS 2720:when the initial 2658:Denial of service 2604:Nagle's Algorithm 2200:man-in-the-middle 2191:{\displaystyle G} 2163: 2137: 1931: 1930: 1913:Server or client 1729: 1728: 1456:source IP address 1352:Flags: 8 bits 1303:Has a dual role: 1285: 1284: 796:, duplicated, or 657:Internet Protocol 595:Historical origin 592: 591: 243:Application layer 219:denial of service 137:Internet Protocol 117: 116: 16:(Redirected from 8568: 8536:Checksum example 8504: 8485: 8464: 8433: 8409: 8407: 8397: 8372: 8357: 8347: 8315: 8284: 8275: 8273: 8256:(January 2000). 8252:Ludwig, Reiner; 8248: 8246: 8223:Partridge, Craig 8214: 8205: 8195: 8178: 8168: 8156: 8154: 8142:Gurtov, Andrei; 8138: 8125: 8108: 8093: 8078: 8068: 8041: 8012: 8002: 7985:(3): 2149–2196. 7970: 7944: 7934: 7909: 7907: 7905:2060/20000004338 7897: 7876:(October 1999). 7861: 7852: 7850:10.17487/RFC9293 7833: 7824: 7822:10.17487/RFC9170 7805: 7796: 7794:10.17487/RFC9065 7777: 7768: 7766:10.17487/RFC9002 7749: 7740: 7738:10.17487/RFC8558 7721: 7712: 7710:10.17487/RFC8546 7693: 7684: 7682:10.17487/RFC8200 7662: 7653: 7651:10.17487/RFC8985 7634: 7625: 7623:10.17487/RFC8095 7606: 7597: 7595:10.17487/RFC7805 7578: 7569: 7567:10.17487/RFC7413 7550: 7541: 7539:10.17487/RFC7414 7518: 7509: 7507:10.17487/RFC7323 7482: 7473: 7471:10.17487/RFC6937 7454: 7445: 7443:10.17487/RFC6824 7422: 7413: 7411:10.17487/RFC6298 7391: 7382: 7380:10.17487/RFC6182 7359: 7350: 7348:10.17487/RFC6013 7331: 7322: 7320:10.17487/RFC5681 7299: 7290: 7288:10.17487/RFC3540 7271: 7262: 7260:10.17487/RFC3522 7243: 7234: 7232:10.17487/RFC3168 7211: 7202: 7200:10.17487/RFC2883 7180: 7171: 7169:10.17487/RFC2581 7144: 7135: 7133:10.17487/RFC2018 7116: 7107: 7105:10.17487/RFC1948 7085: 7076: 7074:10.17487/RFC1323 7050: 7041: 7039:10.17487/RFC1122 7019: 7010: 7008:10.17487/RFC0793 6988: 6979: 6977:10.17487/RFC0791 6957: 6948: 6946:10.17487/RFC0675 6908: 6907: 6901: 6900: 6885: 6879: 6878: 6872: 6871: 6856: 6850: 6844: 6838: 6824: 6818: 6817: 6815: 6814: 6805:. Archived from 6799: 6793: 6792: 6758: 6752: 6751: 6749: 6748: 6739:. Archived from 6733: 6724: 6718: 6712: 6706: 6700: 6694: 6688: 6682: 6676: 6670: 6664: 6658: 6652: 6646: 6640: 6634: 6628: 6622: 6616: 6613:Chen et al. 2021 6610: 6604: 6598: 6592: 6589:Chen et al. 2021 6586: 6580: 6574: 6568: 6562: 6553: 6547: 6541: 6535: 6529: 6523: 6517: 6511: 6505: 6499: 6493: 6487: 6481: 6475: 6469: 6463: 6454: 6448: 6442: 6436: 6430: 6424: 6418: 6412: 6406: 6400: 6394: 6388: 6382: 6376: 6370: 6364: 6358: 6352: 6346: 6340: 6334: 6328: 6322: 6316: 6310: 6304: 6298: 6297: 6279: 6273: 6267: 6261: 6255: 6249: 6248: 6246: 6245: 6225: 6219: 6218: 6209: 6207:10.17487/RFC8548 6192: 6186: 6185: 6183: 6182: 6162: 6156: 6155: 6153: 6152: 6132: 6126: 6125: 6123: 6122: 6107: 6101: 6100: 6098: 6097: 6088:. Archived from 6079: 6055: 6049: 6043: 6037: 6031: 6025: 6019: 6013: 6007: 6001: 5995: 5989: 5988: 5961:. pp. 1–6. 5950: 5944: 5943: 5941: 5940: 5935: 5926: 5920: 5919: 5917: 5916: 5897: 5891: 5890: 5888: 5887: 5872: 5866: 5865: 5863: 5862: 5856: 5850:. Archived from 5849: 5841: 5835: 5834: 5832: 5831: 5815: 5809: 5804: 5798: 5797: 5791: 5783: 5781: 5780: 5774: 5766: 5760: 5759: 5747: 5737: 5731: 5730: 5714: 5704: 5698: 5697: 5695: 5694: 5678: 5672: 5671: 5669: 5667: 5661: 5654: 5645: 5639: 5638: 5636: 5635: 5615: 5609: 5608: 5606: 5604: 5585: 5579: 5573: 5567: 5566: 5564: 5563: 5544: 5538: 5532: 5526: 5520: 5514: 5508: 5502: 5496: 5490: 5484: 5478: 5477: 5475: 5474: 5438: 5414: 5408: 5402: 5396: 5390: 5384: 5378: 5372: 5366: 5357: 5351: 5345: 5339: 5333: 5332:, p. 31-33. 5327: 5321: 5315: 5309: 5303: 5294: 5288: 5282: 5281: 5279: 5268: 5262: 5256: 5250: 5249: 5247: 5236: 5230: 5229: 5219: 5213: 5212: 5188: 5182: 5176: 5170: 5169: 5151: 5131: 5125: 5119: 5113: 5107: 5101: 5095: 5089: 5088: 5065: 5059: 5058: 5052: 5044: 5016: 5010: 5004: 4998: 4997: 4995: 4994: 4979: 4973: 4972: 4970: 4969: 4957: 4951: 4945: 4939: 4933: 4927: 4921: 4910: 4904: 4898: 4897:, p. 18-19. 4892: 4886: 4880: 4874: 4873:, p. 13-14. 4868: 4862: 4861: 4859: 4858: 4844: 4838: 4832: 4826: 4820: 4814: 4808: 4802: 4796: 4785: 4779: 4766: 4760: 4754: 4748: 4737: 4736: 4715: 4692: 4691: 4689: 4688: 4677:amturing.acm.org 4669: 4663: 4662: 4660: 4659: 4648:amturing.acm.org 4640: 4634: 4633: 4631: 4630: 4616: 4610: 4609: 4607: 4606: 4592: 4586: 4585: 4565: 4559: 4558: 4550: 4544: 4543: 4537: 4535: 4514: 4508: 4506: 4504: 4502:10.17487/RFC0760 4487: 4471: 4461: 4455: 4449: 4443: 4442: 4440: 4438: 4432: 4425: 4416: 4410: 4409: 4407: 4401:. Archived from 4384: 4371: 4365: 4364: 4346: 4329: 4318: 4312: 4305: 4299: 4296: 4290: 4287: 4281: 4275: 4205:packet analyzers 4033:Destination port 3783: 3752: 3750: 3749: 3744: 3732: 3730: 3729: 3724: 3722: 3719: 3714: 3711: 3702: 3700: 3699: 3694: 3692: 3689: 3684: 3681: 3520:Destination port 3326: 3207:embedded systems 2772:multihomed hosts 2686:was analyzed in 2652:TCP reset attack 2631:Berkeley sockets 2624: 2617: 2576:out-of-band data 2566:Out-of-band data 2502:, as defined in 2392:IP fragmentation 2364:Karn's Algorithm 2215:Karn's algorithm 2197: 2195: 2194: 2189: 2177: 2175: 2174: 2169: 2164: 2161: 2138: 2135: 1797: 1745: 1744: 1627:BBBB, EEEE, ... 1505: 1495: 1494:0x02 0x04 0x05B4 1491: 1429:The size of the 1328: 1327: 1195: 1188: 1181: 1174: 1167: 1160: 1153: 1146: 1095:Destination Port 950: 771:IP fragmentation 757:Network function 613:packet switching 584: 577: 570: 232: 225:, TCP veto, and 80: 78: 73: 35: 21: 8576: 8575: 8571: 8570: 8569: 8567: 8566: 8565: 8541: 8540: 8512: 8501: 8488: 8482: 8467: 8461: 8443: 8440: 8438:Further reading 8412: 8375: 8360: 8318: 8304:10.1145/2578901 8287: 8278: 8251: 8217: 8208: 8193:10.1.1.679.6364 8181: 8166: 8159: 8152: 8141: 8128: 8111: 8096: 8081: 8044: 8015: 7973: 7942: 7937: 7912: 7871: 7868: 7866:Other documents 7836: 7808: 7780: 7752: 7724: 7696: 7665: 7637: 7609: 7581: 7553: 7521: 7486:Borman, David; 7485: 7457: 7425: 7394: 7362: 7334: 7302: 7274: 7246: 7214: 7183: 7147: 7119: 7088: 7053: 7022: 6991: 6960: 6925: 6922: 6917: 6912: 6911: 6898: 6896: 6887: 6886: 6882: 6869: 6867: 6858: 6857: 6853: 6845: 6841: 6835:Wayback Machine 6825: 6821: 6812: 6810: 6801: 6800: 6796: 6781: 6760: 6759: 6755: 6746: 6744: 6735: 6734: 6727: 6719: 6715: 6707: 6703: 6695: 6691: 6683: 6679: 6671: 6667: 6659: 6655: 6647: 6643: 6635: 6631: 6623: 6619: 6611: 6607: 6599: 6595: 6587: 6583: 6575: 6571: 6563: 6556: 6548: 6544: 6536: 6532: 6524: 6520: 6512: 6508: 6500: 6496: 6488: 6484: 6476: 6472: 6466:Rybczyńska 2020 6464: 6457: 6449: 6445: 6437: 6433: 6425: 6421: 6413: 6409: 6401: 6397: 6389: 6385: 6377: 6373: 6365: 6361: 6353: 6349: 6341: 6337: 6329: 6325: 6317: 6313: 6305: 6301: 6294: 6281: 6280: 6276: 6268: 6264: 6256: 6252: 6243: 6241: 6227: 6226: 6222: 6194: 6193: 6189: 6180: 6178: 6164: 6163: 6159: 6150: 6148: 6134: 6133: 6129: 6120: 6118: 6109: 6108: 6104: 6095: 6093: 6077:10.1.1.306.3863 6057: 6056: 6052: 6044: 6040: 6032: 6028: 6020: 6016: 6008: 6004: 5996: 5992: 5977: 5952: 5951: 5947: 5938: 5936: 5933: 5928: 5927: 5923: 5914: 5912: 5899: 5898: 5894: 5885: 5883: 5874: 5873: 5869: 5860: 5858: 5854: 5847: 5843: 5842: 5838: 5829: 5827: 5817: 5816: 5812: 5805: 5801: 5784: 5778: 5776: 5772: 5768: 5767: 5763: 5756: 5739: 5738: 5734: 5727: 5706: 5705: 5701: 5692: 5690: 5680: 5679: 5675: 5665: 5663: 5659: 5652: 5647: 5646: 5642: 5633: 5631: 5617: 5616: 5612: 5602: 5600: 5587: 5586: 5582: 5574: 5570: 5561: 5559: 5546: 5545: 5541: 5533: 5529: 5521: 5517: 5509: 5505: 5497: 5493: 5485: 5481: 5472: 5470: 5455: 5416: 5415: 5411: 5403: 5399: 5391: 5387: 5379: 5375: 5367: 5360: 5352: 5348: 5340: 5336: 5328: 5324: 5316: 5312: 5304: 5297: 5289: 5285: 5277: 5270: 5269: 5265: 5257: 5253: 5245: 5238: 5237: 5233: 5221: 5220: 5216: 5190: 5189: 5185: 5177: 5173: 5133: 5132: 5128: 5120: 5116: 5108: 5104: 5096: 5092: 5085: 5067: 5066: 5062: 5045: 5033: 5018: 5017: 5013: 5005: 5001: 4992: 4990: 4981: 4980: 4976: 4967: 4965: 4959: 4958: 4954: 4946: 4942: 4934: 4930: 4922: 4913: 4905: 4901: 4893: 4889: 4881: 4877: 4869: 4865: 4856: 4854: 4846: 4845: 4841: 4833: 4829: 4821: 4817: 4809: 4805: 4797: 4788: 4780: 4769: 4765:, pp. 5–6. 4761: 4757: 4749: 4740: 4733: 4717: 4716: 4695: 4686: 4684: 4671: 4670: 4666: 4657: 4655: 4642: 4641: 4637: 4628: 4626: 4618: 4617: 4613: 4604: 4602: 4594: 4593: 4589: 4567: 4566: 4562: 4552: 4551: 4547: 4533: 4531: 4516: 4515: 4511: 4489: 4477: 4463: 4462: 4458: 4450: 4446: 4436: 4434: 4430: 4423: 4418: 4417: 4413: 4405: 4382: 4373: 4372: 4368: 4361: 4348: 4347: 4343: 4338: 4333: 4332: 4319: 4315: 4309:network sockets 4306: 4302: 4297: 4293: 4288: 4284: 4276: 4269: 4264: 4259: 4214: 4197:network adapter 4193: 4046:Sequence number 3760: 3735: 3734: 3705: 3704: 3675: 3674: 3533:Sequence number 3299: 3294: 3211:network booting 3180: 3164: 3147: 3042:network latency 3021: 2977: 2965: 2938: 2830: 2755: 2749: 2735: 2722:sequence number 2706: 2700: 2660: 2643: 2641:Vulnerabilities 2622: 2615: 2600: 2588:vulnerabilities 2568: 2524: 2495: 2489: 2460:in May 2000 in 2425: 2419: 2407:MSS negotiation 2384: 2360:round-trip time 2345:fast retransmit 2314: 2308: 2255: 2224: 2222:Error detection 2180: 2179: 2129: 2128: 2120: 2103: 2070:sequence number 2066: 2036: 2016: 1969: 1936: 1784:Internet socket 1756: 1742: 1741: 1493: 1489: 1464:protocol number 1325: 1324: 1234: 1193: 1186: 1179: 1172: 1165: 1158: 1151: 1144: 1108:Sequence Number 921:data link layer 890: 830:streaming media 802:re-transmission 763:transport layer 759: 609:internetworking 597: 588: 408:Transport layer 190:(active open), 173:Transport layer 147:, ordered, and 143:. TCP provides 99:Transport layer 76: 74: 71: 28: 23: 22: 15: 12: 11: 5: 8574: 8572: 8564: 8563: 8558: 8553: 8543: 8542: 8539: 8538: 8533: 8528: 8523: 8518: 8511: 8510:External links 8508: 8507: 8506: 8499: 8486: 8480: 8465: 8459: 8447:(1994-01-10). 8439: 8436: 8435: 8434: 8424:(3): 397–405. 8410: 8388:(2): 271–287. 8373: 8358: 8316: 8285: 8276: 8249: 8237:(4): 364–373. 8215: 8206: 8179: 8157: 8139: 8126: 8109: 8094: 8079: 8042: 8013: 7971: 7935: 7910: 7888:(4): 263–274. 7872:Allman, Mark; 7867: 7864: 7863: 7862: 7834: 7806: 7778: 7750: 7722: 7694: 7663: 7635: 7607: 7579: 7551: 7524:Braden, Robert 7522:Duke, Martin; 7519: 7483: 7455: 7423: 7392: 7360: 7332: 7303:Allman, Mark; 7300: 7272: 7244: 7212: 7181: 7156:(April 1999). 7148:Allman, Mark; 7145: 7117: 7086: 7051: 7024:Braden, Robert 7020: 6989: 6958: 6921: 6918: 6916: 6913: 6910: 6909: 6880: 6851: 6839: 6819: 6794: 6779: 6753: 6725: 6713: 6701: 6689: 6677: 6675:, p. 6-8. 6665: 6663:, p. 3-4. 6653: 6651:, p. 4-5. 6641: 6639:, p. 1-2. 6629: 6617: 6615:, p. 3-4. 6605: 6593: 6591:, p. 8-9. 6581: 6579:, p. 271. 6577:Sy et al. 2020 6569: 6554: 6542: 6530: 6518: 6506: 6494: 6482: 6480:, p. 621. 6470: 6455: 6443: 6431: 6419: 6417:, p. 620. 6407: 6395: 6383: 6371: 6359: 6347: 6335: 6323: 6311: 6299: 6293:978-1449344764 6292: 6274: 6262: 6250: 6220: 6187: 6157: 6127: 6102: 6050: 6038: 6026: 6014: 6002: 6000:, 4. Glossary. 5990: 5975: 5945: 5921: 5892: 5867: 5836: 5810: 5799: 5761: 5754: 5732: 5725: 5699: 5673: 5640: 5610: 5580: 5568: 5539: 5527: 5515: 5503: 5491: 5479: 5454:978-1581132236 5453: 5436:10.1.1.27.7611 5409: 5397: 5395:, p. 268. 5385: 5373: 5358: 5346: 5334: 5322: 5320:, p. 365. 5310: 5308:, p. 399. 5295: 5283: 5263: 5251: 5231: 5214: 5203:(4): 522–535. 5183: 5171: 5149:10.1.1.40.7002 5126: 5114: 5112:, p. 364. 5102: 5090: 5083: 5071:(2003-03-17). 5060: 5031: 5011: 4999: 4974: 4952: 4940: 4928: 4911: 4899: 4887: 4875: 4863: 4839: 4827: 4815: 4803: 4786: 4767: 4755: 4738: 4731: 4693: 4664: 4635: 4611: 4587: 4576:(5): 307–318. 4560: 4545: 4509: 4456: 4444: 4411: 4393:(5): 637–648. 4366: 4359: 4340: 4339: 4337: 4334: 4331: 4330: 4313: 4300: 4291: 4282: 4266: 4265: 4263: 4260: 4258: 4257: 4251: 4246: 4241: 4236: 4231: 4226: 4221: 4215: 4213: 4210: 4192: 4189: 4188: 4187: 4184: 4181: 4178: 4175: 4172: 4169: 4165: 4162: 4159: 4150: 4149: 4146: 4142: 4141: 4138: 4134: 4133: 4128: 4125: 4121: 4120: 4115: 4112: 4108: 4107: 4105:Urgent pointer 4102: 4097: 4094: 4090: 4089: 4084: 4079: 4074: 4069: 4066: 4062: 4061: 4056: 4053: 4049: 4048: 4043: 4040: 4036: 4035: 4030: 4025: 4022: 4018: 4017: 4012: 4007: 4004: 4000: 3999: 3994: 3991: 3987: 3986: 3983: 3979: 3978: 3975: 3971: 3970: 3967: 3963: 3962: 3957: 3954: 3950: 3949: 3946: 3942: 3941: 3938: 3934: 3933: 3930: 3926: 3925: 3923:Source address 3920: 3917: 3913: 3912: 3909: 3906: 3903: 3900: 3897: 3894: 3891: 3888: 3885: 3882: 3879: 3876: 3873: 3870: 3867: 3864: 3861: 3858: 3855: 3852: 3849: 3846: 3843: 3840: 3837: 3834: 3831: 3828: 3825: 3822: 3819: 3816: 3811: 3807: 3806: 3803: 3800: 3797: 3794: 3789: 3759: 3756: 3755: 3754: 3742: 3717: 3687: 3670: 3667: 3664: 3661: 3658: 3655: 3652: 3649: 3646: 3637: 3636: 3633: 3629: 3628: 3625: 3621: 3620: 3615: 3612: 3608: 3607: 3602: 3599: 3595: 3594: 3592:Urgent pointer 3589: 3584: 3581: 3577: 3576: 3571: 3566: 3561: 3556: 3553: 3549: 3548: 3543: 3540: 3536: 3535: 3530: 3527: 3523: 3522: 3517: 3512: 3509: 3505: 3504: 3499: 3494: 3489: 3486: 3482: 3481: 3476: 3473: 3469: 3468: 3466:Source address 3463: 3460: 3456: 3455: 3452: 3449: 3446: 3443: 3440: 3437: 3434: 3431: 3428: 3425: 3422: 3419: 3416: 3413: 3410: 3407: 3404: 3401: 3398: 3395: 3392: 3389: 3386: 3383: 3380: 3377: 3374: 3371: 3368: 3365: 3362: 3359: 3354: 3350: 3349: 3346: 3343: 3340: 3337: 3332: 3298: 3295: 3293: 3290: 3179: 3176: 3168:packet sniffer 3163: 3160: 3146: 3143: 3085:forward secure 3020: 3017: 2976: 2973: 2964: 2961: 2945:window scaling 2937: 2934: 2829: 2826: 2748: 2745: 2734: 2731: 2702:Main article: 2699: 2696: 2659: 2656: 2642: 2639: 2635:protocol stack 2599: 2596: 2594:for instance. 2567: 2564: 2543: 2542: 2539: 2531:proportional. 2523: 2522:TCP timestamps 2520: 2491:Main article: 2488: 2487:Window scaling 2485: 2418: 2415: 2383: 2380: 2310:Main article: 2307: 2304: 2271:receive window 2267:sliding window 2254: 2251: 2223: 2220: 2187: 2167: 2159: 2156: 2153: 2150: 2147: 2144: 2141: 2119: 2116: 2102: 2099: 2065: 2062: 2061: 2060: 2057: 2053: 2050: 2047: 2035: 2032: 2024:ephemeral port 2015: 2014:Resource usage 2012: 1968: 1965: 1960: 1959: 1953: 1947: 1935: 1932: 1929: 1928: 1925: 1922: 1918: 1917: 1914: 1911: 1907: 1906: 1903: 1900: 1896: 1895: 1892: 1889: 1885: 1884: 1881: 1878: 1874: 1873: 1870: 1867: 1863: 1862: 1859: 1856: 1852: 1851: 1848: 1845: 1841: 1840: 1837: 1834: 1830: 1829: 1826: 1823: 1819: 1818: 1815: 1812: 1808: 1807: 1804: 1801: 1755: 1752: 1751: 1750: 1747: 1746:: Variable 1739: 1731: 1730: 1727: 1726: 1719: 1716: 1713: 1710: 1706: 1705: 1690: 1687: 1684: 1681: 1677: 1676: 1669: 1666: 1663: 1660: 1656: 1655: 1648: 1645: 1642: 1639: 1635: 1634: 1631: 1628: 1625: 1622: 1618: 1617: 1616:for details. 1610: 1607: 1604: 1601: 1597: 1596: 1595:for details. 1589: 1586: 1583: 1580: 1576: 1575: 1574:for details. 1568: 1565: 1562: 1559: 1555: 1554: 1551: 1548: 1545: 1542: 1538: 1537: 1535: 1532: 1529: 1526: 1522: 1521: 1518: 1515: 1512: 1511:Option-Length 1509: 1501: 1500: 1497: 1485: 1476: 1473: 1470: 1467: 1448: 1442: 1431:receive window 1427: 1423: 1422: 1421: 1420: 1417: 1416:FIN: 1 bit 1414: 1410: 1409:SYN: 1 bit 1407: 1404: 1403:RST: 1 bit 1401: 1398: 1397:PSH: 1 bit 1395: 1392: 1391:ACK: 1 bit 1389: 1386: 1385:URG: 1 bit 1382: 1381: 1380: 1379: 1375: 1365: 1364:ECE: 1 bit 1362: 1359: 1358:CWR: 1 bit 1353: 1350: 1343: 1340: 1337: 1330: 1322: 1318: 1314: 1313: 1312: 1311: 1308: 1301: 1298: 1295: 1292: 1289: 1283: 1282: 1279: 1275: 1274: 1271: 1267: 1266: 1261: 1258: 1254: 1253: 1250: 1246: 1245: 1242: 1238: 1237: 1230: 1227: 1223: 1222: 1217: 1210: 1207: 1203: 1202: 1197: 1190: 1183: 1176: 1169: 1162: 1155: 1148: 1141: 1136: 1131: 1128: 1124: 1123: 1118: 1115: 1111: 1110: 1105: 1102: 1098: 1097: 1092: 1087: 1084: 1080: 1079: 1076: 1073: 1070: 1067: 1064: 1061: 1058: 1055: 1052: 1049: 1046: 1043: 1040: 1037: 1034: 1031: 1028: 1025: 1022: 1019: 1016: 1013: 1010: 1007: 1004: 1001: 998: 995: 992: 989: 986: 983: 978: 974: 973: 970: 967: 964: 961: 956: 889: 886: 874:internet layer 862:acknowledgment 816:(WWW), email, 814:World Wide Web 790:load balancing 779:network socket 767:Internet model 758: 755: 728: 727: 724: 721: 718: 715: 712: 709: 706: 705:January 1978). 697: 682:The following 671:for short) or 617:Gérard Le Lann 596: 593: 590: 589: 587: 586: 579: 572: 564: 561: 560: 559: 558: 551: 546: 541: 536: 528: 527: 521: 520: 519: 518: 511: 506: 501: 496: 491: 481: 480: 479: 474: 461: 460: 458:Internet layer 454: 453: 452: 451: 444: 439: 434: 429: 424: 419: 411: 410: 404: 403: 402: 401: 394: 389: 384: 379: 374: 369: 364: 359: 354: 349: 344: 339: 334: 329: 324: 319: 314: 309: 304: 299: 294: 289: 284: 274: 269: 264: 254: 246: 245: 239: 238: 208:connectionless 192:retransmission 161:World Wide Web 151:delivery of a 115: 114: 109: 103: 102: 96: 90: 89: 86: 82: 81: 68: 64: 63: 54: 50: 49: 46: 42: 41: 39:Protocol stack 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 8573: 8562: 8559: 8557: 8554: 8552: 8549: 8548: 8546: 8537: 8534: 8532: 8529: 8527: 8524: 8522: 8519: 8517: 8514: 8513: 8509: 8502: 8496: 8492: 8487: 8483: 8477: 8473: 8472: 8466: 8462: 8456: 8452: 8451: 8446: 8442: 8441: 8437: 8431: 8427: 8423: 8419: 8415: 8411: 8406: 8401: 8396: 8391: 8387: 8383: 8379: 8374: 8370: 8369: 8364: 8359: 8355: 8351: 8346: 8341: 8337: 8333: 8329: 8325: 8324: 8317: 8313: 8309: 8305: 8301: 8297: 8293: 8292: 8286: 8282: 8277: 8272: 8267: 8263: 8259: 8255: 8250: 8245: 8240: 8236: 8232: 8228: 8224: 8220: 8216: 8212: 8207: 8203: 8199: 8194: 8189: 8185: 8180: 8176: 8172: 8165: 8164: 8158: 8151: 8150: 8145: 8140: 8136: 8132: 8127: 8123: 8119: 8115: 8110: 8106: 8105: 8100: 8095: 8091: 8090: 8085: 8080: 8076: 8072: 8067: 8062: 8058: 8054: 8053: 8048: 8043: 8039: 8035: 8031: 8027: 8023: 8019: 8014: 8010: 8006: 8001: 7996: 7992: 7988: 7984: 7980: 7979: 7972: 7968: 7964: 7960: 7956: 7952: 7948: 7941: 7936: 7932: 7928: 7924: 7920: 7916: 7911: 7906: 7901: 7896: 7891: 7887: 7883: 7879: 7875: 7870: 7869: 7865: 7859: 7856: 7851: 7846: 7842: 7841: 7835: 7831: 7828: 7823: 7818: 7814: 7813: 7807: 7803: 7800: 7795: 7790: 7786: 7785: 7779: 7775: 7772: 7767: 7762: 7758: 7757: 7751: 7747: 7744: 7739: 7734: 7730: 7729: 7723: 7719: 7716: 7711: 7706: 7702: 7701: 7695: 7691: 7688: 7683: 7678: 7674: 7673: 7668: 7664: 7660: 7657: 7652: 7647: 7643: 7642: 7636: 7632: 7629: 7624: 7619: 7615: 7614: 7608: 7604: 7601: 7596: 7591: 7587: 7586: 7580: 7576: 7573: 7568: 7563: 7559: 7558: 7557:TCP Fast Open 7552: 7548: 7545: 7540: 7535: 7531: 7530: 7525: 7520: 7516: 7513: 7508: 7503: 7499: 7498: 7493: 7492:Jacobson, Van 7489: 7484: 7480: 7477: 7472: 7467: 7463: 7462: 7456: 7452: 7449: 7444: 7439: 7435: 7434: 7429: 7428:Handley, Mark 7424: 7420: 7417: 7412: 7407: 7403: 7402: 7397: 7393: 7389: 7386: 7381: 7376: 7372: 7371: 7366: 7365:Handley, Mark 7361: 7357: 7354: 7349: 7344: 7340: 7339: 7333: 7329: 7326: 7321: 7316: 7312: 7311: 7306: 7301: 7297: 7294: 7289: 7284: 7280: 7279: 7273: 7269: 7266: 7261: 7256: 7252: 7251: 7245: 7241: 7238: 7233: 7228: 7224: 7223: 7218: 7213: 7209: 7206: 7201: 7196: 7192: 7191: 7186: 7182: 7178: 7175: 7170: 7165: 7161: 7160: 7155: 7151: 7146: 7142: 7139: 7134: 7129: 7125: 7124: 7118: 7114: 7111: 7106: 7101: 7097: 7096: 7091: 7087: 7083: 7080: 7075: 7070: 7066: 7065: 7060: 7056: 7055:Jacobson, Van 7052: 7048: 7045: 7040: 7035: 7031: 7030: 7025: 7021: 7017: 7014: 7009: 7004: 7000: 6999: 6994: 6990: 6986: 6983: 6978: 6973: 6969: 6968: 6963: 6959: 6955: 6952: 6947: 6942: 6938: 6937: 6932: 6928: 6924: 6923: 6919: 6914: 6906: 6894: 6890: 6884: 6881: 6877: 6865: 6861: 6855: 6852: 6848: 6843: 6840: 6836: 6832: 6829: 6823: 6820: 6809:on 2024-04-22 6808: 6804: 6798: 6795: 6790: 6786: 6782: 6776: 6772: 6768: 6764: 6757: 6754: 6743:on 2011-05-03 6742: 6738: 6732: 6730: 6726: 6722: 6717: 6714: 6711:, p. 14. 6710: 6705: 6702: 6699:, p. 72. 6698: 6693: 6690: 6687:, p. 67. 6686: 6681: 6678: 6674: 6669: 6666: 6662: 6657: 6654: 6650: 6645: 6642: 6638: 6633: 6630: 6626: 6621: 6618: 6614: 6609: 6606: 6602: 6597: 6594: 6590: 6585: 6582: 6578: 6573: 6570: 6566: 6561: 6559: 6555: 6551: 6546: 6543: 6539: 6534: 6531: 6527: 6522: 6519: 6515: 6510: 6507: 6503: 6498: 6495: 6491: 6486: 6483: 6479: 6474: 6471: 6467: 6462: 6460: 6456: 6452: 6447: 6444: 6440: 6435: 6432: 6428: 6423: 6420: 6416: 6411: 6408: 6404: 6399: 6396: 6392: 6387: 6384: 6380: 6375: 6372: 6368: 6363: 6360: 6356: 6351: 6348: 6344: 6339: 6336: 6332: 6327: 6324: 6320: 6315: 6312: 6308: 6303: 6300: 6295: 6289: 6285: 6278: 6275: 6271: 6266: 6263: 6259: 6254: 6251: 6239: 6235: 6231: 6224: 6221: 6216: 6213: 6208: 6203: 6199: 6198: 6191: 6188: 6176: 6172: 6168: 6161: 6158: 6146: 6142: 6138: 6131: 6128: 6116: 6112: 6106: 6103: 6092:on 2020-04-04 6091: 6087: 6083: 6078: 6073: 6069: 6065: 6061: 6054: 6051: 6047: 6042: 6039: 6035: 6030: 6027: 6024:, p. 51. 6023: 6018: 6015: 6011: 6006: 6003: 5999: 5994: 5991: 5986: 5982: 5978: 5972: 5968: 5964: 5960: 5956: 5949: 5946: 5932: 5925: 5922: 5910: 5906: 5902: 5896: 5893: 5881: 5877: 5871: 5868: 5857:on 2013-06-18 5853: 5846: 5840: 5837: 5825: 5821: 5814: 5811: 5808: 5803: 5800: 5795: 5789: 5771: 5765: 5762: 5757: 5751: 5746: 5745: 5736: 5733: 5728: 5722: 5718: 5713: 5712: 5703: 5700: 5688: 5684: 5677: 5674: 5658: 5651: 5644: 5641: 5630:on 2018-12-15 5629: 5625: 5621: 5614: 5611: 5598: 5594: 5590: 5584: 5581: 5577: 5572: 5569: 5557: 5553: 5549: 5543: 5540: 5536: 5531: 5528: 5525:, p. 10. 5524: 5519: 5516: 5512: 5507: 5504: 5500: 5495: 5492: 5488: 5483: 5480: 5468: 5464: 5460: 5456: 5450: 5446: 5442: 5437: 5432: 5428: 5424: 5420: 5413: 5410: 5406: 5401: 5398: 5394: 5389: 5386: 5382: 5377: 5374: 5370: 5365: 5363: 5359: 5355: 5350: 5347: 5343: 5338: 5335: 5331: 5326: 5323: 5319: 5314: 5311: 5307: 5302: 5300: 5296: 5292: 5287: 5284: 5276: 5275: 5267: 5264: 5260: 5255: 5252: 5244: 5243: 5235: 5232: 5227: 5226: 5218: 5215: 5210: 5206: 5202: 5198: 5194: 5187: 5184: 5180: 5175: 5172: 5167: 5163: 5159: 5155: 5150: 5145: 5141: 5137: 5130: 5127: 5123: 5118: 5115: 5111: 5106: 5103: 5099: 5094: 5091: 5086: 5080: 5076: 5075: 5070: 5064: 5061: 5056: 5050: 5042: 5038: 5034: 5028: 5024: 5023: 5015: 5012: 5008: 5003: 5000: 4988: 4984: 4978: 4975: 4963: 4956: 4953: 4949: 4944: 4941: 4937: 4932: 4929: 4925: 4920: 4918: 4916: 4912: 4908: 4903: 4900: 4896: 4891: 4888: 4885:, p. 15. 4884: 4879: 4876: 4872: 4867: 4864: 4853: 4849: 4843: 4840: 4836: 4831: 4828: 4824: 4819: 4816: 4812: 4807: 4804: 4800: 4795: 4793: 4791: 4787: 4783: 4778: 4776: 4774: 4772: 4768: 4764: 4759: 4756: 4752: 4747: 4745: 4743: 4739: 4734: 4728: 4724: 4720: 4714: 4712: 4710: 4708: 4706: 4704: 4702: 4700: 4698: 4694: 4682: 4678: 4674: 4668: 4665: 4653: 4649: 4645: 4639: 4636: 4625: 4621: 4615: 4612: 4601: 4597: 4591: 4588: 4583: 4579: 4575: 4571: 4564: 4561: 4556: 4549: 4546: 4542: 4529: 4525: 4524: 4519: 4513: 4510: 4503: 4498: 4494: 4493: 4485: 4481: 4475: 4472:"See Abbate, 4469: 4468: 4460: 4457: 4453: 4448: 4445: 4429: 4422: 4415: 4412: 4404: 4400: 4396: 4392: 4388: 4381: 4379: 4370: 4367: 4362: 4360:9781000556803 4356: 4353:. CRC Press. 4352: 4345: 4342: 4335: 4327: 4323: 4317: 4314: 4310: 4304: 4301: 4295: 4292: 4286: 4283: 4280: 4274: 4272: 4268: 4261: 4255: 4252: 4250: 4247: 4245: 4242: 4240: 4237: 4235: 4232: 4230: 4227: 4225: 4222: 4220: 4217: 4216: 4211: 4209: 4206: 4201: 4198: 4190: 4185: 4182: 4179: 4176: 4173: 4170: 4166: 4163: 4160: 4157: 4156: 4155: 4147: 4144: 4143: 4139: 4136: 4135: 4132: 4126: 4123: 4122: 4119: 4113: 4110: 4109: 4106: 4101: 4095: 4092: 4091: 4088: 4083: 4078: 4073: 4067: 4064: 4063: 4060: 4054: 4051: 4050: 4047: 4041: 4038: 4037: 4034: 4029: 4023: 4020: 4019: 4016: 4011: 4005: 4002: 4001: 3998: 3992: 3989: 3988: 3984: 3981: 3980: 3976: 3973: 3972: 3968: 3965: 3964: 3961: 3955: 3952: 3951: 3947: 3944: 3943: 3939: 3936: 3935: 3931: 3928: 3927: 3924: 3918: 3915: 3914: 3910: 3907: 3904: 3901: 3898: 3895: 3892: 3889: 3886: 3883: 3880: 3877: 3874: 3871: 3868: 3865: 3862: 3859: 3856: 3853: 3850: 3847: 3844: 3841: 3838: 3835: 3832: 3829: 3826: 3823: 3820: 3817: 3815: 3812: 3809: 3808: 3793: 3790: 3788: 3785: 3784: 3778: 3774: 3773: 3767: 3765: 3757: 3740: 3715: 3685: 3671: 3668: 3665: 3662: 3659: 3656: 3653: 3650: 3647: 3644: 3643: 3642: 3634: 3631: 3630: 3626: 3623: 3622: 3619: 3613: 3610: 3609: 3606: 3600: 3597: 3596: 3593: 3588: 3582: 3579: 3578: 3575: 3570: 3565: 3560: 3554: 3551: 3550: 3547: 3541: 3538: 3537: 3534: 3528: 3525: 3524: 3521: 3516: 3510: 3507: 3506: 3503: 3498: 3493: 3487: 3484: 3483: 3480: 3474: 3471: 3470: 3467: 3461: 3458: 3457: 3453: 3450: 3447: 3444: 3441: 3438: 3435: 3432: 3429: 3426: 3423: 3420: 3417: 3414: 3411: 3408: 3405: 3402: 3399: 3396: 3393: 3390: 3387: 3384: 3381: 3378: 3375: 3372: 3369: 3366: 3363: 3360: 3358: 3355: 3352: 3351: 3336: 3333: 3331: 3328: 3327: 3321: 3319: 3313: 3312: 3306: 3304: 3296: 3291: 3289: 3287: 3283: 3281: 3277: 3273: 3271: 3267: 3262: 3260: 3256: 3252: 3250: 3246: 3244: 3243:interpolation 3240: 3235: 3231: 3226: 3224: 3220: 3216: 3212: 3208: 3203: 3202:connections. 3201: 3200:Fibre Channel 3197: 3193: 3188: 3186: 3185:voice over IP 3177: 3175: 3173: 3169: 3161: 3159: 3155: 3151: 3144: 3142: 3140: 3136: 3131: 3129: 3125: 3121: 3116: 3113: 3108: 3105: 3101: 3096: 3094: 3089: 3086: 3082: 3077: 3073: 3068: 3064: 3058: 3055: 3051: 3047: 3043: 3038: 3034: 3030: 3026: 3018: 3016: 3014: 3010: 3006: 3002: 2998: 2994: 2990: 2986: 2982: 2974: 2972: 2970: 2962: 2960: 2958: 2954: 2950: 2946: 2942: 2935: 2933: 2931: 2927: 2922: 2920: 2916: 2912: 2908: 2907:TCP Fast Open 2904: 2902: 2898: 2894: 2892: 2891:Multipath TCP 2888: 2886: 2882: 2878: 2874: 2870: 2866: 2861: 2859: 2855: 2851: 2847: 2843: 2839: 2835: 2827: 2825: 2823: 2819: 2815: 2811: 2808: 2804: 2800: 2796: 2792: 2788: 2785:(20 and 21), 2784: 2780: 2775: 2773: 2768: 2764: 2760: 2754: 2746: 2744: 2741: 2732: 2730: 2728: 2723: 2719: 2714: 2712: 2705: 2697: 2695: 2693: 2689: 2685: 2684:persist timer 2681: 2677: 2673: 2669: 2665: 2657: 2655: 2653: 2649: 2640: 2638: 2636: 2632: 2628: 2619: 2613: 2608: 2605: 2597: 2595: 2593: 2589: 2584: 2579: 2577: 2573: 2565: 2563: 2560: 2557: 2554: 2552: 2548: 2540: 2537: 2536: 2535: 2532: 2529: 2521: 2519: 2515: 2511: 2509: 2505: 2501: 2494: 2486: 2484: 2481: 2476: 2474: 2470: 2465: 2463: 2457: 2454: 2450: 2446: 2442: 2438: 2434: 2429: 2424: 2416: 2414: 2412: 2408: 2403: 2401: 2397: 2393: 2389: 2381: 2379: 2377: 2371: 2369: 2365: 2361: 2357: 2352: 2350: 2349:fast recovery 2346: 2342: 2338: 2333: 2329: 2327: 2323: 2319: 2313: 2305: 2303: 2301: 2296: 2293: 2289: 2288:persist timer 2279: 2275: 2272: 2268: 2263: 2260: 2252: 2250: 2248: 2244: 2240: 2236: 2232: 2227: 2221: 2219: 2216: 2212: 2206: 2204: 2201: 2185: 2162:RTT variation 2157: 2154: 2151: 2148: 2139: 2126: 2117: 2115: 2111: 2109: 2100: 2098: 2096: 2090: 2086: 2082: 2080: 2075: 2071: 2063: 2058: 2054: 2051: 2048: 2045: 2044: 2043: 2041: 2034:Data transfer 2033: 2031: 2028: 2025: 2020: 2013: 2011: 2008: 2003: 2001: 1997: 1992: 1989: 1981: 1973: 1966: 1964: 1957: 1954: 1951: 1948: 1945: 1942: 1941: 1940: 1933: 1926: 1923: 1920: 1919: 1915: 1912: 1909: 1908: 1904: 1901: 1898: 1897: 1893: 1890: 1887: 1886: 1882: 1879: 1876: 1875: 1871: 1868: 1865: 1864: 1860: 1857: 1854: 1853: 1849: 1846: 1843: 1842: 1838: 1835: 1833:SYN-RECEIVED 1832: 1831: 1827: 1824: 1821: 1820: 1816: 1813: 1810: 1809: 1805: 1802: 1799: 1798: 1792: 1790: 1786: 1785: 1779: 1777: 1773: 1772:data transfer 1769: 1760: 1753: 1748: 1740: 1737: 1733: 1732: 1725:for details. 1724: 1723:Multipath TCP 1720: 1717: 1714: 1711: 1708: 1707: 1703: 1699: 1695: 1691: 1688: 1685: 1682: 1679: 1678: 1674: 1671:See RFC  1670: 1667: 1664: 1661: 1658: 1657: 1654:for details. 1653: 1649: 1646: 1643: 1640: 1637: 1636: 1632: 1629: 1626: 1623: 1620: 1619: 1615: 1611: 1608: 1605: 1602: 1599: 1598: 1594: 1590: 1588:Window scale 1587: 1584: 1581: 1578: 1577: 1573: 1569: 1566: 1563: 1560: 1557: 1556: 1552: 1550:No operation 1549: 1546: 1543: 1540: 1539: 1536: 1533: 1530: 1527: 1524: 1523: 1519: 1516: 1513: 1510: 1507: 1506: 1503: 1502: 1498: 1492:is coded as ( 1486: 1483: 1482: 1477: 1474: 1471: 1468: 1465: 1461: 1457: 1453: 1449: 1447:: 16 bits 1446: 1443: 1440: 1436: 1432: 1428: 1425: 1424: 1418: 1415: 1411: 1408: 1405: 1402: 1399: 1396: 1393: 1390: 1387: 1384: 1383: 1376: 1373: 1369: 1368: 1366: 1363: 1360: 1357: 1356: 1354: 1351: 1348: 1344: 1341: 1338: 1335: 1331: 1323: 1319: 1316: 1315: 1309: 1305: 1304: 1302: 1299: 1296: 1293: 1290: 1287: 1286: 1280: 1277: 1276: 1272: 1269: 1268: 1265: 1259: 1256: 1255: 1251: 1248: 1247: 1243: 1240: 1239: 1236: 1228: 1225: 1224: 1221: 1216: 1215: 1208: 1205: 1204: 1201: 1196: 1191: 1189: 1184: 1182: 1177: 1175: 1170: 1168: 1163: 1161: 1156: 1154: 1149: 1147: 1142: 1140: 1135: 1129: 1126: 1125: 1122: 1116: 1113: 1112: 1109: 1103: 1100: 1099: 1096: 1091: 1085: 1082: 1081: 1077: 1074: 1071: 1068: 1065: 1062: 1059: 1056: 1053: 1050: 1047: 1044: 1041: 1038: 1035: 1032: 1029: 1026: 1023: 1020: 1017: 1014: 1011: 1008: 1005: 1002: 999: 996: 993: 990: 987: 984: 982: 979: 976: 975: 960: 957: 955: 952: 951: 945: 943: 939: 935: 929: 924: 922: 918: 914: 910: 906: 902: 897: 895: 887: 885: 883: 879: 878:network stack 875: 871: 866: 863: 859: 854: 849: 847: 843: 839: 838:voice over IP 833: 831: 827: 823: 819: 815: 810: 808: 803: 799: 795: 791: 787: 782: 780: 776: 772: 768: 764: 756: 754: 752: 749:received the 748: 744: 739: 737: 733: 725: 722: 719: 716: 713: 710: 707: 704: 701: 698: 695: 692: 689: 688: 687: 685: 680: 678: 674: 670: 666: 662: 658: 654: 648: 646: 642: 638: 634: 630: 626: 625:specification 622: 618: 614: 610: 607:described an 606: 602: 599:In May 1974, 594: 585: 580: 578: 573: 571: 566: 565: 563: 562: 557: 556: 552: 550: 547: 545: 542: 540: 537: 535: 532: 531: 530: 529: 526: 522: 517: 516: 512: 510: 507: 505: 502: 500: 497: 495: 492: 489: 485: 482: 478: 475: 473: 470: 469: 468: 465: 464: 463: 462: 459: 455: 450: 449: 445: 443: 440: 438: 435: 433: 430: 428: 425: 423: 420: 418: 415: 414: 413: 412: 409: 405: 400: 399: 395: 393: 390: 388: 385: 383: 380: 378: 375: 373: 370: 368: 365: 363: 360: 358: 355: 353: 350: 348: 345: 343: 340: 338: 335: 333: 330: 328: 325: 323: 320: 318: 315: 313: 310: 308: 305: 303: 300: 298: 295: 293: 290: 288: 285: 282: 278: 275: 273: 270: 268: 265: 262: 258: 255: 253: 250: 249: 248: 247: 244: 240: 237: 233: 230: 228: 224: 220: 216: 212: 209: 205: 201: 197: 193: 189: 185: 180: 178: 174: 170: 169:file transfer 166: 162: 158: 154: 150: 149:error-checked 146: 142: 138: 134: 130: 126: 122: 113: 110: 108: 104: 100: 97: 95: 91: 87: 83: 69: 65: 62: 58: 55: 51: 47: 43: 40: 36: 30: 19: 8490: 8470: 8449: 8421: 8417: 8414:Zhang, Lixia 8385: 8381: 8366: 8327: 8321: 8298:(4): 51–57. 8295: 8289: 8261: 8234: 8230: 8183: 8162: 8148: 8144:Floyd, Sally 8113: 8102: 8087: 8056: 8050: 8024:(2): 54–77. 8021: 8017: 7982: 7976: 7950: 7946: 7914: 7885: 7881: 7874:Paxson, Vern 7839: 7811: 7783: 7755: 7727: 7699: 7671: 7640: 7612: 7584: 7556: 7528: 7496: 7460: 7432: 7400: 7396:Paxson, Vern 7369: 7337: 7309: 7305:Paxson, Vern 7277: 7249: 7221: 7217:Floyd, Sally 7189: 7185:Floyd, Sally 7158: 7150:Paxson, Vern 7122: 7094: 7092:(May 1996). 7063: 7028: 6997: 6966: 6935: 6931:Dalal, Yogen 6915:Bibliography 6903: 6897:. Retrieved 6883: 6874: 6868:. Retrieved 6854: 6842: 6822: 6811:. Retrieved 6807:the original 6797: 6762: 6756: 6745:. Retrieved 6741:the original 6716: 6704: 6692: 6680: 6668: 6656: 6644: 6632: 6627:, p. 1. 6620: 6608: 6601:Ghedini 2018 6596: 6584: 6572: 6567:, p. 3. 6545: 6533: 6521: 6509: 6497: 6485: 6473: 6453:, p. 1. 6446: 6441:, p. 1. 6434: 6422: 6410: 6398: 6386: 6381:, p. 8. 6374: 6362: 6350: 6345:, p. 3. 6338: 6333:, p. 6. 6326: 6314: 6302: 6283: 6277: 6265: 6253: 6242:. Retrieved 6223: 6200:. May 2019. 6196: 6190: 6179:. Retrieved 6171:IETF Journal 6170: 6160: 6149:. Retrieved 6140: 6130: 6119:. Retrieved 6105: 6094:. Retrieved 6090:the original 6067: 6063: 6053: 6041: 6029: 6017: 6012:, p. 6. 6005: 5993: 5958: 5954: 5948: 5937:. Retrieved 5924: 5913:. Retrieved 5904: 5895: 5884:. Retrieved 5870: 5859:. Retrieved 5852:the original 5839: 5828:. Retrieved 5813: 5802: 5777:. Retrieved 5764: 5743: 5735: 5710: 5702: 5691:. Retrieved 5676: 5664:. Retrieved 5643: 5632:. Retrieved 5628:the original 5623: 5613: 5601:. Retrieved 5592: 5583: 5571: 5560:. Retrieved 5551: 5542: 5530: 5518: 5506: 5494: 5482: 5471:. Retrieved 5426: 5422: 5412: 5407:, p. 7. 5400: 5388: 5376: 5371:, p. 4. 5356:, p. 1. 5349: 5344:, p. 2. 5337: 5325: 5313: 5293:, p. 2. 5286: 5273: 5266: 5254: 5241: 5234: 5224: 5217: 5200: 5196: 5186: 5181:, p. 4. 5174: 5142:(3): 67–82. 5139: 5135: 5129: 5117: 5105: 5093: 5073: 5063: 5021: 5014: 5002: 4991:. Retrieved 4977: 4966:. Retrieved 4955: 4943: 4931: 4902: 4890: 4878: 4866: 4855:. Retrieved 4851: 4842: 4830: 4818: 4806: 4758: 4722: 4685:. Retrieved 4676: 4667: 4656:. Retrieved 4647: 4638: 4627:. Retrieved 4623: 4614: 4603:. Retrieved 4599: 4590: 4573: 4569: 4563: 4548: 4539: 4532:, retrieved 4522: 4512: 4491: 4483: 4479: 4473: 4466: 4459: 4447: 4437:11 September 4435:. Retrieved 4414: 4403:the original 4390: 4386: 4377: 4369: 4350: 4344: 4316: 4303: 4294: 4285: 4202: 4194: 4153: 4130: 4117: 4104: 4099: 4086: 4081: 4076: 4071: 4058: 4045: 4032: 4027: 4014: 4009: 3996: 3959: 3922: 3786: 3776: 3770: 3769: 3761: 3682:Total Length 3640: 3617: 3604: 3591: 3586: 3573: 3568: 3563: 3558: 3545: 3532: 3519: 3514: 3501: 3496: 3491: 3478: 3465: 3329: 3315: 3309: 3308: 3300: 3284: 3274: 3263: 3253: 3247: 3234:multiplexing 3227: 3204: 3189: 3181: 3178:Alternatives 3165: 3156: 3152: 3148: 3145:Acceleration 3132: 3124:interference 3117: 3109: 3097: 3093:Web browsers 3067:key exchange 3059: 3054:Web browsers 3046:encapsulated 3022: 3005:web browsers 2978: 2966: 2956: 2939: 2923: 2910: 2905: 2895: 2889: 2881:TCP New Reno 2864: 2862: 2831: 2818:disambiguate 2812: 2776: 2756: 2739: 2736: 2721: 2715: 2711:ARP spoofing 2707: 2683: 2661: 2644: 2620: 2610:Setting the 2609: 2601: 2582: 2580: 2571: 2569: 2561: 2558: 2555: 2550: 2549:numbers, or 2546: 2544: 2533: 2525: 2516: 2512: 2496: 2477: 2466: 2458: 2452: 2448: 2444: 2440: 2432: 2430: 2426: 2410: 2406: 2404: 2385: 2378:variations. 2372: 2355: 2353: 2334: 2330: 2326:max-min fair 2315: 2297: 2287: 2285: 2270: 2264: 2259:flow control 2256: 2253:Flow control 2228: 2225: 2207: 2136:smoothed RTT 2121: 2112: 2104: 2094: 2091: 2087: 2083: 2069: 2067: 2037: 2029: 2021: 2017: 2004: 1993: 1990: 1986: 1961: 1955: 1949: 1943: 1937: 1844:ESTABLISHED 1806:Description 1782: 1780: 1775: 1771: 1767: 1765: 1514:Option-Data 1508:Option-Kind 1479: 1430: 1263: 1232: 1219: 1212: 1199: 1192: 1185: 1178: 1171: 1164: 1157: 1150: 1143: 1138: 1133: 1120: 1107: 1094: 1089: 953: 941: 937: 933: 931: 926: 916: 912: 904: 900: 898: 894:encapsulated 891: 869: 867: 857: 850: 834: 822:Secure Shell 811: 783: 760: 751:Turing Award 740: 729: 702: 696:March 1977). 693: 681: 676: 672: 668: 664: 660: 656: 652: 649: 645:internetwork 644: 640: 632: 598: 554: 514: 447: 416: 397: 227:reset attack 181: 124: 120: 118: 67:Introduction 53:Developer(s) 45:Abbreviation 29: 8330:: 619–639. 7488:Braden, Bob 7059:Braden, Bob 6993:Postel, Jon 6962:Postel, Jon 6550:Corbet 2018 6490:Corbet 2015 6405:, A.5. TCP. 6143:: 399–412. 6141:Usenix NSDI 5618:Wang, Eve. 5603:15 December 5589:"IP sysctl" 4518:Postel, Jon 4486:(4): 10–11. 4244:TCP Stealth 4180:All zeroes. 4072:Data offset 4028:Source port 3660:All zeroes. 3559:Data offset 3515:Source port 3198:(FCP) over 3194:(SANs) use 3081:replay-safe 3050:multiplexed 3019:Performance 2828:Development 2801:(443), and 2676:SYN cookies 2662:By using a 2616:TCP_NODELAY 2441:SACK blocks 2265:TCP uses a 2068:TCP uses a 1939:handshake: 1877:CLOSE-WAIT 1866:FIN-WAIT-2 1855:FIN-WAIT-1 1644:TTTT, EEEE 1481:Data Offset 1450:The 16-bit 1326:Data Offset 1134:Data Offset 1090:Source Port 781:interface. 673:DARPA model 637:Yogen Dalal 200:data stream 8545:Categories 8395:1905.03518 8219:Karn, Phil 8135:Cloudflare 6927:Cerf, Vint 6899:2017-02-24 6870:2017-02-24 6813:2024-04-18 6747:2010-08-30 6244:2014-07-21 6181:2017-01-03 6151:2013-03-24 6121:2013-03-24 6096:2011-06-29 6070:(4): 266. 5939:2023-06-04 5915:2017-09-27 5886:2010-01-22 5861:2010-12-23 5830:2014-02-05 5779:2010-12-23 5693:2009-01-04 5634:2018-12-15 5562:2016-07-21 5473:2008-04-28 5306:Zhang 1986 4993:2017-10-19 4968:2023-12-30 4857:2023-04-18 4687:2019-07-13 4658:2019-07-13 4629:2024-01-21 4605:2020-02-11 4476:, 129–30; 4336:References 4239:TCP pacing 4234:TCP fusion 4118:(optional) 3997:TCP length 3772:addresses. 3605:(optional) 3502:TCP length 3205:Also, for 3074:over TCP. 2953:deprecated 2930:slow start 2822:subnetwork 2751:See also: 2680:Sockstress 2627:user space 2508:TCP tuning 2423:SACK Panic 2421:See also: 2411:negotiated 2337:slow start 2056:processed. 1910:TIME-WAIT 901:TCP packet 882:IP address 788:, traffic 525:Link layer 8345:2164/8317 8188:CiteSeerX 8075:235174220 8009:206576469 8000:2164/8018 7953:: 20–30. 6526:Marx 2020 6514:Marx 2020 6072:CiteSeerX 5666:3 October 5431:CiteSeerX 5144:CiteSeerX 5049:cite book 5041:936004518 4526:, IEN 2, 4470:(Thesis). 3716:− 3686:− 3162:Debugging 2993:middlebox 2985:cleartext 2981:wire data 2921:in 2014. 2885:TCP Hybla 2873:TCP Vegas 2865:TCP Tahoe 2807:ephemeral 2747:TCP ports 2672:SYN flood 2158:× 2007:half-open 1899:LAST-ACK 1822:SYN-SENT 1803:Endpoint 1791:changes: 899:The term 851:TCP is a 807:abstracts 743:Vint Cerf 741:In 2004, 669:DoD model 601:Vint Cerf 188:handshake 163:, email, 129:protocols 94:OSI layer 57:Vint Cerf 8312:17581886 8038:15954837 7967:15305731 7931:32671949 6893:Archived 6864:Archived 6847:RFC 8200 6831:Archived 6721:RFC 9002 6625:RFC 7413 6565:RFC 7413 6403:RFC 9170 6391:RFC 9170 6379:RFC 8558 6367:RFC 9065 6355:RFC 9065 6343:RFC 8558 6331:RFC 8546 6319:RFC 7805 6307:RFC 6013 6270:RFC 6937 6258:RFC 7413 6238:Archived 6175:Archived 6145:Archived 6115:Archived 6046:RFC 6824 6034:RFC 6182 6010:RFC 8095 5998:RFC 9293 5985:25353177 5909:Archived 5880:Archived 5824:Archived 5788:cite web 5687:Archived 5657:Archived 5597:Archived 5576:RFC 3522 5556:Archived 5535:RFC 9002 5523:RFC 2018 5511:RFC 1122 5499:RFC 6298 5487:RFC 5681 5467:Archived 5405:RFC 7323 5369:RFC 6298 5291:RFC 6298 5259:RFC 8985 5179:RFC 3522 5122:RFC 9002 5098:RFC 1122 5007:RFC 9293 4987:Archived 4985:. IANA. 4948:RFC 2018 4936:RFC 2018 4924:RFC 7323 4895:RFC 3168 4883:RFC 3168 4871:RFC 3168 4835:RFC 9293 4823:RFC 9293 4811:RFC 9293 4799:RFC 9293 4782:RFC 9293 4751:RFC 9293 4721:(2006). 4681:Archived 4652:Archived 4534:June 11, 4528:archived 4428:Archived 4279:RFC 3168 4212:See also 4148:⋮ 4145:⋮ 4100:Checksum 4077:Reserved 3635:⋮ 3632:⋮ 3587:Checksum 3564:Reserved 3497:Protocol 3139:Westwood 2957:historic 2919:RFC 7413 2897:tcpcrypt 2877:FAST TCP 2869:TCP Reno 2854:RFC 3168 2850:RFC 2581 2846:RFC 7414 2842:RFC 1122 2733:TCP veto 2718:RFC 1948 2690:No. 66. 2528:RFC 1323 2504:RFC 1323 2480:RFC 2018 2475:(SCTP). 2462:RFC 2883 2437:RFC 2018 2292:deadlock 2247:Ethernet 2211:RFC 6298 2178:, where 1888:CLOSING 1517:Purpose 1452:checksum 1445:Checksum 1374:capable. 1347:RFC 3540 1281:⋮ 1278:⋮ 1244:⋮ 1241:⋮ 1214:Checksum 1139:Reserved 913:datagram 870:segments 747:Bob Kahn 655:and the 641:internet 621:CYCLADES 605:Bob Kahn 211:datagram 145:reliable 85:Based on 61:Bob Kahn 18:TCP port 8368:LWN.net 8354:1846371 8104:LWN.net 8089:LWN.net 6837:. 2004. 6789:8717768 6234:LWN.net 5552:LWN.net 5463:9547018 5166:1894993 4907:RFC 793 4763:RFC 791 4492:RFC 760 4452:RFC 675 4168:header. 3703:, i.e. 3221:(using 3172:Netstat 3076:TLS 1.3 3072:TLS 1.2 2838:RFC 793 2834:RFC 675 2614:option 2592:WinNuke 2245:or the 2239:layer 2 1950:SYN-ACK 1921:CLOSED 1836:Server 1825:Client 1814:Server 1811:LISTEN 1738:(IANA). 1378:sender. 942:Options 919:to the 911:(PDU), 905:segment 876:in the 765:of the 726:IEN 124 723:IEN 112 629:RFC 675 555:more... 539:Tunnels 515:more... 448:more... 398:more... 387:TLS/SSL 342:ONC/RPC 279: ( 196:latency 182:TCP is 177:SSL/TLS 131:of the 75: ( 8497:  8478:  8457:  8352:  8310:  8190:  8073:  8036:  8007:  7965:  7929:  6787:  6777:  6290:  6074:  5983:  5973:  5905:f5.com 5752:  5723:  5461:  5451:  5433:  5164:  5146:  5081:  5039:  5029:  4964:. IETF 4729:  4488:; and 4357:  4322:HTTP/3 4087:Window 4010:Zeroes 3810:Octet 3787:Offset 3753:bytes. 3574:Window 3492:Zeroes 3353:Octet 3330:Offset 2949:DNSSEC 2911:cookie 2883:, and 2797:(25), 2793:(23), 2791:TELNET 2789:(22), 2767:16-bit 2740:vetoed 2688:Phrack 2637:only. 2629:using 2612:socket 2583:urgent 2572:urgent 2347:, and 2085:data. 1800:State 1520:Notes 1490:0x05B4 1462:, the 1458:, the 1413:clear. 1200:Window 977:Octet 954:Offset 936:and a 934:header 828:, and 734:  720:IEN 81 717:IEN 55 714:IEN 44 711:IEN 40 708:IEN 27 700:IEN 21 661:TCP/IP 382:Telnet 281:HTTP/3 167:, and 157:octets 153:stream 141:TCP/IP 107:RFC(s) 8390:arXiv 8350:S2CID 8308:S2CID 8167:(PDF) 8153:(PDF) 8071:S2CID 8059:(3). 8034:S2CID 8005:S2CID 7963:S2CID 7943:(PDF) 7927:S2CID 6785:S2CID 5981:S2CID 5934:(PDF) 5855:(PDF) 5848:(PDF) 5773:(PDF) 5660:(PDF) 5653:(PDF) 5459:S2CID 5278:(PDF) 5246:(PDF) 5162:S2CID 4431:(PDF) 4424:(PDF) 4406:(PDF) 4383:(PDF) 4262:Notes 4082:Flags 3792:Octet 3569:Flags 3335:Octet 3135:Vegas 3031:: if 3001:MPTCP 2915:T/TCP 2759:tuple 2453:Block 2000:HP-UX 1996:Linux 1789:state 1334:words 1321:data. 959:Octet 923:PDU: 917:frame 691:IEN 5 509:IPsec 287:HTTPS 8495:ISBN 8476:ISBN 8455:ISBN 8386:2020 7858:9293 7830:9170 7802:9065 7774:9002 7746:8558 7718:8546 7690:8200 7659:8985 7631:8095 7603:7805 7575:7413 7547:7414 7515:7323 7479:6937 7451:6824 7419:6298 7388:6182 7356:6013 7328:5681 7296:3540 7268:3522 7240:3168 7208:2883 7177:2581 7141:2018 7113:1948 7082:1323 7047:1122 6775:ISBN 6288:ISBN 6215:8548 5971:ISBN 5794:link 5750:ISBN 5721:ISBN 5668:2017 5605:2018 5449:ISBN 5079:ISBN 5055:link 5037:OCLC 5027:ISBN 4727:ISBN 4536:2016 4439:2017 4355:ISBN 4326:QUIC 4254:WTCP 4140:544 4131:Data 4127:512 4114:480 4096:448 4068:416 4055:384 4042:352 4024:320 4006:288 3993:256 3985:224 3977:192 3969:160 3956:128 3764:IPv6 3627:320 3618:Data 3614:288 3601:256 3583:224 3555:192 3542:160 3529:128 3303:IPv4 3223:STUN 3083:and 3048:and 3037:lost 2979:The 2803:HTTP 2795:SMTP 2763:port 2648:IETF 2581:The 2551:PAWS 2386:The 1998:and 1743:Data 1721:See 1702:5925 1673:5482 1650:See 1612:See 1591:See 1570:See 1437:and 1273:512 1264:Data 1260:480 1252:448 1229:160 1209:128 938:data 794:lost 745:and 603:and 504:IGMP 484:ICMP 442:QUIC 437:RSVP 432:SCTP 427:DCCP 392:XMPP 372:SNMP 367:SMTP 352:RTSP 327:OSPF 317:NNTP 312:MQTT 307:MGCP 302:LDAP 292:IMAP 277:HTTP 257:DHCP 119:The 112:9293 77:1974 70:1974 59:and 8426:doi 8400:doi 8340:hdl 8332:doi 8300:doi 8266:doi 8239:doi 8198:doi 8171:doi 8118:doi 8061:doi 8026:doi 7995:hdl 7987:doi 7955:doi 7919:doi 7900:hdl 7890:doi 7855:RFC 7845:doi 7827:RFC 7817:doi 7799:RFC 7789:doi 7771:RFC 7761:doi 7743:RFC 7733:doi 7715:RFC 7705:doi 7687:RFC 7677:doi 7656:RFC 7646:doi 7628:RFC 7618:doi 7600:RFC 7590:doi 7572:RFC 7562:doi 7544:RFC 7534:doi 7512:RFC 7502:doi 7476:RFC 7466:doi 7448:RFC 7438:doi 7416:RFC 7406:doi 7385:RFC 7375:doi 7353:RFC 7343:doi 7325:RFC 7315:doi 7293:RFC 7283:doi 7265:RFC 7255:doi 7237:RFC 7227:doi 7205:RFC 7195:doi 7174:RFC 7164:doi 7138:RFC 7128:doi 7110:RFC 7100:doi 7079:RFC 7069:doi 7044:RFC 7034:doi 7016:793 7013:RFC 7003:doi 6985:791 6982:RFC 6972:doi 6954:675 6951:RFC 6941:doi 6767:doi 6212:RFC 6202:doi 6082:doi 5963:doi 5717:401 5441:doi 5205:doi 5154:doi 4578:doi 4497:doi 4395:doi 4137:68 4124:64 4111:60 4093:56 4065:52 4052:48 4039:44 4021:40 4003:36 3990:32 3982:28 3974:24 3966:20 3953:16 3948:96 3945:12 3940:64 3932:32 3911:31 3908:30 3905:29 3902:28 3899:27 3896:26 3893:25 3890:24 3887:23 3884:22 3881:21 3878:20 3875:19 3872:18 3869:17 3866:16 3863:15 3860:14 3857:13 3854:12 3851:11 3848:10 3814:Bit 3741:180 3712:200 3624:40 3611:36 3598:32 3580:28 3552:24 3539:20 3526:16 3511:96 3508:12 3488:64 3475:32 3454:31 3451:30 3448:29 3445:28 3442:27 3439:26 3436:25 3433:24 3430:23 3427:22 3424:21 3421:20 3418:19 3415:18 3412:17 3409:16 3406:15 3403:14 3400:13 3397:12 3394:11 3391:10 3357:Bit 3241:or 3219:NAT 3215:DNS 3128:RLP 3035:or 2901:TLS 2887:). 2787:SSH 2783:FTP 2623:PSH 2243:PPP 2235:CRC 2143:max 1956:ACK 1944:SYN 1709:30 1698:BGP 1694:MD5 1680:29 1659:28 1641:10 1564:SS 1372:ECN 1270:64 1257:60 1249:56 1226:20 1206:16 1194:FIN 1187:SYN 1180:RST 1173:PSH 1166:ACK 1159:URG 1152:ECE 1145:CWR 1130:96 1127:12 1117:64 1104:32 1078:31 1075:30 1072:29 1069:28 1066:27 1063:26 1060:25 1057:24 1054:23 1051:22 1048:21 1045:20 1042:19 1039:18 1036:17 1033:16 1030:15 1027:14 1024:13 1021:12 1018:11 1015:10 981:Bit 736:761 732:RFC 549:MAC 544:PPP 534:ARP 499:ECN 494:NDP 422:UDP 417:TCP 377:SSH 362:SIP 357:RIP 347:RTP 337:PTP 332:POP 322:NTP 297:IRC 272:FTP 267:DNS 252:BGP 155:of 125:TCP 101:(4) 48:TCP 8547:: 8505:** 8422:16 8420:. 8398:. 8384:. 8380:. 8365:. 8348:. 8338:. 8328:19 8326:. 8306:. 8296:57 8294:. 8264:. 8260:. 8233:. 8229:. 8221:; 8196:. 8133:. 8101:. 8086:. 8069:. 8057:34 8055:. 8049:. 8032:. 8022:28 8020:. 8003:. 7993:. 7983:18 7981:. 7961:. 7951:32 7949:. 7945:. 7925:. 7898:. 7886:29 7884:. 7880:. 7853:. 7843:. 7825:. 7815:. 7797:. 7787:. 7769:. 7759:. 7741:. 7731:. 7713:. 7703:. 7685:. 7675:. 7654:. 7644:. 7626:. 7616:. 7598:. 7588:. 7570:. 7560:. 7542:. 7532:. 7510:. 7500:. 7490:; 7474:. 7464:. 7446:. 7436:. 7414:. 7404:. 7383:. 7373:. 7351:. 7341:. 7323:. 7313:. 7291:. 7281:. 7263:. 7253:. 7235:. 7225:. 7203:. 7193:. 7172:. 7162:. 7152:; 7136:. 7126:. 7108:. 7098:. 7077:. 7067:. 7057:; 7042:. 7032:. 7011:. 7001:. 6980:. 6970:. 6949:. 6939:. 6929:; 6902:. 6891:. 6873:. 6862:. 6783:. 6773:. 6728:^ 6557:^ 6458:^ 6236:. 6232:. 6210:. 6173:. 6169:. 6139:. 6113:. 6080:. 6068:41 6066:. 6062:. 5979:. 5969:. 5957:. 5907:. 5903:. 5878:. 5822:. 5790:}} 5786:{{ 5719:. 5622:. 5595:. 5591:. 5554:. 5550:. 5465:. 5457:. 5447:. 5439:. 5425:. 5421:. 5361:^ 5298:^ 5201:18 5199:. 5195:. 5160:. 5152:. 5140:27 5138:. 5051:}} 5047:{{ 5035:. 4914:^ 4850:. 4789:^ 4770:^ 4741:^ 4696:^ 4679:. 4675:. 4650:. 4646:. 4622:. 4598:. 4572:. 4538:, 4495:. 4484:10 4482:. 4391:22 4389:. 4385:. 4324:, 4270:^ 3937:8 3929:4 3919:0 3916:0 3845:9 3842:8 3839:7 3836:6 3833:5 3830:4 3827:3 3824:2 3821:1 3818:0 3805:3 3802:2 3799:1 3796:0 3720:20 3485:8 3472:4 3462:0 3459:0 3388:9 3385:8 3382:7 3379:6 3376:5 3373:4 3370:3 3367:2 3364:1 3361:0 3348:3 3345:2 3342:1 3339:0 3282:. 3245:. 3209:, 3166:A 3137:, 3015:. 2959:. 2879:, 2875:, 2871:, 2654:. 2590:, 2510:. 2351:. 2343:, 2339:, 2282:0. 2205:. 2081:. 2042:: 1715:— 1712:N 1704:. 1686:— 1683:N 1675:. 1665:— 1662:4 1638:8 1621:5 1606:— 1603:2 1600:4 1585:S 1582:3 1579:3 1561:4 1558:2 1547:— 1544:— 1541:1 1531:— 1528:— 1525:0 1441:.) 1307:1. 1114:8 1101:4 1086:0 1083:0 1012:9 1009:8 1006:7 1003:6 1000:5 997:4 994:3 991:2 988:1 985:0 972:3 969:2 966:1 963:0 832:. 824:, 820:, 738:. 679:. 647:. 488:v6 477:v6 472:v4 467:IP 261:v6 229:. 221:, 8503:. 8484:. 8463:. 8432:. 8428:: 8408:. 8402:: 8392:: 8371:. 8356:. 8342:: 8334:: 8314:. 8302:: 8283:. 8274:. 8268:: 8247:. 8241:: 8235:9 8213:. 8204:. 8200:: 8177:. 8173:: 8137:. 8124:. 8120:: 8107:. 8092:. 8077:. 8063:: 8040:. 8028:: 8011:. 7997:: 7989:: 7969:. 7957:: 7933:. 7921:: 7908:. 7902:: 7892:: 7860:. 7847:: 7832:. 7819:: 7804:. 7791:: 7776:. 7763:: 7748:. 7735:: 7720:. 7707:: 7692:. 7679:: 7661:. 7648:: 7633:. 7620:: 7605:. 7592:: 7577:. 7564:: 7549:. 7536:: 7517:. 7504:: 7481:. 7468:: 7453:. 7440:: 7421:. 7408:: 7390:. 7377:: 7358:. 7345:: 7330:. 7317:: 7298:. 7285:: 7270:. 7257:: 7242:. 7229:: 7210:. 7197:: 7179:. 7166:: 7143:. 7130:: 7115:. 7102:: 7084:. 7071:: 7049:. 7036:: 7018:. 7005:: 6987:. 6974:: 6956:. 6943:: 6849:. 6816:. 6791:. 6769:: 6750:. 6603:. 6552:. 6492:. 6468:. 6321:. 6309:. 6296:. 6272:. 6260:. 6247:. 6217:. 6204:: 6184:. 6154:. 6124:. 6099:. 6084:: 6048:. 6036:. 5987:. 5965:: 5942:. 5918:. 5889:. 5864:. 5833:. 5796:) 5782:. 5758:. 5729:. 5696:. 5670:. 5637:. 5607:. 5578:. 5565:. 5513:. 5501:. 5489:. 5476:. 5443:: 5261:. 5211:. 5207:: 5168:. 5156:: 5087:. 5057:) 5043:. 4996:. 4971:. 4926:. 4909:. 4860:. 4784:. 4735:. 4690:. 4661:. 4632:. 4608:. 4584:. 4580:: 4574:7 4557:. 4507:" 4505:. 4499:: 4454:. 4441:. 4397:: 4380:" 4376:" 4363:. 2186:G 2166:) 2155:4 2152:, 2149:G 2146:( 2140:+ 667:( 631:( 583:e 576:t 569:v 490:) 486:( 283:) 263:) 259:( 123:( 79:) 20:)

Index

TCP port
Protocol stack
Vint Cerf
Bob Kahn
OSI layer
Transport layer
RFC(s)
9293
protocols
Internet protocol suite
Internet Protocol
TCP/IP
reliable
error-checked
stream
octets
World Wide Web
remote administration
file transfer
Transport layer
SSL/TLS
connection-oriented
handshake
retransmission
latency
data stream
User Datagram Protocol
connectionless
datagram
network congestion avoidance

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.