一. 前言
最近指导的新人遇上了一次较大的失误,本文从指导者和新手程序员两个角度来总结我的个人体会感想。
Collecting, sharing and creating knowledge
在前面我们逐一分析了进程间通信的各种方法:信号,管道,共享内存和信号量,本文开始将分析更为复杂也是更为常用的另一套进程间通信:网络通信。网络通信和其他进程间通信最大的区别在于不局限于单机,因此成为了互联网时代的主流选择,无论是分布式、云计算、微服务、容器及自动化运营都离不开网络通信,其重要性可想而知。
经过30多年的发展,网络协议栈已经变得极为复杂,远远不是一两篇文章能够说清楚的东西,所以这里着重剖析我们更为关注的东西:网络编程涉及到的相关协议栈。从本文开始,将分别介绍套接字及其创建、网络连接的建立、网络包的发送、网络包的接收、Netfilter
剖析、select, poll 及 epoll
剖析。除此之外,介于之前有新同学请教TCP的一些基础问题,打算写一篇扩展篇从设计理念的角度出发好好分析TCP协议的方法面面。