TCP那些事儿,实在是太复杂了。经常是看了忘,然后忘了又看,但是总的来说,收效甚微。最近在做一个websocket的消息分发模块,涉及到客户端连接和断连。借着这个契机,利用wireshark抓包来再次学习TCP,希望在学习的过程中可以有所收获。

    TCP的学习是可以分为若干个模块的,我们现在需要做的是将这些模块解耦,便于理解和记忆。作为一个2020年的程序员,很多时候都是秉承拿来即用的原则,喜欢快餐文化。再次重温《TCP/IP 详解 卷1:协议》,让我们对TCP这们古典而又经典的技术有了新的理解,并能体会到软件设计中种种难处,并且可以提供一些软件设计的思路。

    要想充分理解TCP/IP网络编程中socket行为,至少有三个层面的知识需要掌握:

    1. TCP/IP协议,如连接的建立和终止,重传和确认,滑动窗口和拥塞控制等
    2. Socket I/O系统调用,重点是read/write, 这是TCP/IP协议应用层表现出来的行为
    3. 编写Performant, Scalable的服务器程序,包括多线程,IO Multiplexing, 非阻塞,异步等各种技术

    参考
    谈TCP/IP网络编程中socket的行为