What is a hybrid self-timer for TCP

Source: Internet
Author: User
Tags ack
Everything needs a certain beat to drive, the most typical is the clock, it specifies what time to do. No precise mechanical clock in ancient times, people use the sun, the moon to time, so like years, seasons, months, days, hours, are the embodiment of the clock, in addition, like the Zodiac, constellations are the same, in fact, any clock is a series of cyclical cycle composition. In the agricultural nation, the clock is always accurate, which is why the Chinese summed up the reason for the 24 solar terms, ancient China is no December, this is the ancient Roman calendar, also known as the Caesar calendar, translated into the Julian calendar, the Chinese more near a step, a total of 24 solar terms, which set the X time to sow, Y to reap, and Z to weed ...

These may seem rather abstract to programmers (your daily glue are clock-driven), but there is no essential difference between these and the clock interrupts in the operating system. But what we've said above, whether it's the Julian calendar, Coodination, or the operating system clock interrupt, is an external clock, such as the Sun, the Earth's orbit, the clock source on the motherboard, and so on, and a clock that is self-clocked, which means that no external clock source is needed, and that the internal incentive mechanism is the way to advance the
Speaking of the internal clock, I can not help mentioning the marine people, like the ancient Phoenician, the Greeks, once sailing in the sea (although only the Mediterranean, but in that era is the sea), then lost the sun, the largest clock source, because the sea is unpredictable, not as fixed on land, the sea does not " The sun Yellow is located in ... "This way, the sea basically randomly switches between storms and silence, so there is no external clock to rely on, you have to rely on your own judgment to decide what to do next. This is the self-clock.
Here are some things programmers understand, TCP as an end-to-end protocol, the middle of the network is completely unaware, so it is the same as the Marine people (the Sea people do not know the law of the storm, not knowing the relationship between air pressure and heat radiation, do not understand the subtropical high, tropical cyclone generation law, But they can respond appropriately to these phenomena, eventually creating a modern civilization in which we live. ), the passive is constrained by congestion and patency, so it also has to rely on the clock to facilitate the transmission of data segments.
TCP at the beginning of the design is an end-to-end protocol, and then joined the ECN I feel a mistake. Therefore, TCP sends basically rely on ACK, with ACK to drive send, however not all. Even the sea-people eat the sea, sometimes they have to look at the sky, don't they?

We know that the timing of sending TCP data is basically divided into two main categories:
1. The application has data to be sent (call the Send function), and when the window allows;
2.ACK arrives, the sending queue has data to be sent, and the sending window is still free.

Therefore, in order to keep the flow of TCP stream sent, it is necessary to ensure that there is a steady flow of ACK, if there is no ACK stream, the above 1th is not guaranteed, because the window will always run out, can let the window sliding only ack. But can you guarantee the ACK flow. No one can. Because the ACK stream is completely uncontrolled, the end may not be sent, slow, may also send an ACK but lost, even, you send the data are lost, unable to trigger the ACK to the end of the send ... So just relying on the clock is not enough, there must be an external clock. This means that to ensure that the TCP stream is sent, there must be an external clock, which in most implementations is the RTO timer. This is absolutely indispensable, you can change the RTO behavior, such as not to let it reduce the window, do not restart slow start, but must have such a timer, and you have to do something in this timer.
The above is the concept of a TCP hybrid self-timer, which relies on the ACK to drive data from the clock, but still requires an external timeout clock.

about the game "Zuma" and bilateral acceleration
Have you ever played "Zuma"? A very simple game, a lot of people do not bother to play it, but can find a TCP bilateral acceleration in the program.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.