An Appendix to the TCP/IP Series Articles

An Appendix to the TCP/IP Series Articles

On a summer day in Shanghai, a child takes a nap.

TCP/IP is essentially something that most programmers in the internet industry cannot do without. Unfortunately, I have found that many people have only a superficial understanding of TCP. The better ones know it exists but do not understand the underlying principles, which leads to pitfalls during development and interviews.

Regarding TCP, I have previously written several articles, not to focus on “off-topic oddities,” but to illustrate the macro perspective I advocate: many issues in software systems cannot be solved by rote memorization—Why does TCP require three steps to establish a connection? Four steps to terminate a connection? If you only memorize the numbers or even the details, the results will not be very effective. However, if you put yourself in the designer’s position and think about how to solve the problem, you will find that existing solutions are often the best designs.

Many people often feel anxious, constantly hoping to learn and improve, but they always wish for specialized textbooks and teachers to help them; otherwise, they are faced with a pile of rigid, ready-made materials. I used to be like this too. About fifteen or sixteen years ago, I happened to read an article by Yu Minhong, which changed my perspective.

This article discussed how to practice TOEFL writing independently. Yu Minhong suggested that you should not look at model essays first; instead, after reading the prompt, you should try to write an essay on your own, and then compare it with the model essay to see what you did poorly and what you can learn. In other words, even if you have the ready-made answers, you should not treat them as the only path. You can completely ignore that path, try to build your own small road first, and then compare it with the main road. By practicing this way multiple times, your understanding and thinking will significantly improve.

At that time, the maximum score for TOEFL writing (TWE) was 6 points. I used this method to study and ultimately scored 5.5, ranking in the top 3%. Many people, including myself, could hardly believe it. Since then, I have developed the habit of “not looking at the standard answers first, but designing my own solutions,” and I have indeed benefited a lot. A few days ago, I analyzed the system design issue of number portability using this same approach.

That said, another element of discussing technology is having confidence and being willing to openly acknowledge one’s mistakes. I previously introduced my former colleague, Cheng Shaofei, who teaches a front-end course. When he introduced his course on Zhihu, he said something I strongly agree with:

Finally, I want to say that I am never afraid to compete with others on Zhihu. I welcome everyone to provide feedback and suggestions on my course, and I hope my course can bring real progress to everyone.

Honestly, I have seen too many reactions when problems are pointed out: some people shrink back like turtles, some act coy, some get angry, and some explode with rage… In short, they cannot face the problem directly. In my view, one important reason for these phenomena is that the original authors lack confidence. Because they are not confident, they do not believe they can benefit from discussions, receive help from others, and become better versions of themselves.

For me, when I previously discussed TCP issues, I thought I understood everything completely, yet there were still some inaccuracies. I even wrote an article admitting my mistakes. However, what made me even happier was that two colleagues wrote longer and more detailed articles to discuss the issues, and their attitudes were very sincere, even to the point of being extremely polite. I want to emphasize that we should advocate for a problem-focused attitude; when discussing technical issues, we do not need to consider age, experience, or fame. If you are right, stand firm; if you are wrong, admit it. The ultimate result is not about who wins or loses, but that everyone benefits and reaches a consensus that is “more resilient to scrutiny.”

So today, I am sharing the articles of these two colleagues here, hoping that readers interested in TCP will take a serious look.

The first article is by Yonghao from Guangzhou, titled Misunderstandings and Erroneous Analogies of the Three-Way Handshake (RFC Interpretation), which delves deeply into the RFC’s explanations and has discussed several points with me.

The second article is by Qiancheng Rao from Didi Chuxing, titled Do You Really Understand the “Three-Way Handshake and Four-Way Termination”?, published on cnblogs. You can click the “Read the original text” link at the end of this article to access it. This article provides very detailed illustrations and is worth a serious read.

Lastly, I want to mention that I have not yet finished writing the series of articles on TCP/IP An Appendix to the TCP/IP Series Articles

An Appendix to the TCP/IP Series Articles

If you think what this article says makes sense, feel free to long-press and scan the QR code above to subscribe.

Although “Yu Shengyi” is a personal account, I strive to create original content, not to boast or be mysterious, and I aim for regular updates, all to explore the world with you and share balanced perspectives.

Leave a Comment