1、开篇词—学好网络编程,需要掌握哪些核心问题?
问你一些关于网络编程方面的问题,你会怎样回答呢?
- 大家经常说的四层、七层,分别指的是什么?
- TCP 三次握手是什么,TIME_WAIT 是怎么发生的?CLOSE_WAIT 又是什么状态?
- Linux 下的 epoll 解决的是什么问题?如何使用 epoll 写出高性能的网络程序?
- 什么是网络事件驱动模型?Reactor 模式又是什么?
学习高性能网络编程,掌握两个核心要点:
- 理解网络协议,并在这个基础上和操作系统内核配合,感知各种网络 I/O 事件;
- 学会使用线程处理并发。
专栏的目录:
学好网络编程,需要达到以下三个层次:
第一个层次,充分理解 TCP/IP 网络模型和协议。
在这方面,仅仅做到理论上的理解是远远不够的。在基础篇中我们会梳理 TCP/IP 模型和网络函数接口之间的联系,并通过实例展开对套接字,套接字缓冲区,拥塞控制,数据包和数据流,本地套接字(UNIX 域套接字)等的讨论,给你一个全面而具体的知识体系。
第二个层次,结合对协议的理解,增强对各种异常情况的优雅处理能力。
比如对 TCP 数据流的处理,半关闭的连接,TCP 连接有效性的侦测,处理各种异常情况等,这些问题决定了程序的健壮性。有关这一部分的内容,我们将在提升篇详细展开。
第三个层次,写出可以支持大规模高并发的网络处理程序。
在这个阶段,我将带你一起深入研究 C10K 问题,引入进程、线程、多路复用、非阻塞、异步、事件驱动等现代高性能网络编程所需要的技术。我们将在性能篇深入讨论这些技术,并在实战篇结合实例,一步步教你写出高性能的网络程序