• 大家经常说的四层、七层,分别指的是什么?
• TCP 三次握手是什么,TIME_WAIT 是怎么发生的?CLOSE_WAIT 又是什么状态?
• Linux 下的 epoll 解决的是什么问题?如何使用 epoll 写出高性能的网络程序?
• 什么是网络事件驱动模型?Reactor 模式又是什么?
其实,无论在面试还是工作中,网络性能及优化这方面的知识都是非常重要的基本功。在我看来,想做到高性能网络编程,下面两个核心要点永远都绕不开:
第一,在理解网络协议的基础上,充分利用操作系统内核提供的能力,感知各种网络 I/O 事件;第二,学会使用线程处理并发。抓住这两点,就抓住了高性能网络编程的“七寸”。
分享给你一张网络编程的核心知识图谱,将上述两个核心会涉及到的知识点都囊括在内,只要我们仔细梳理、透彻理解这些核心知识点,就能学以致用地解决工作中的实际问题。
但话又说回来,高性能就建立在那些实打实的经验基础上,所以现在这个也算简洁有力。内容同样是单刀直入展开,比如在讲解某个理论或算法时,与代码、实验相关联,分析它提出的目的、解决了哪些问题。
说白了,就是从解决实际问题的角度切入,讲解知识点,让你透彻理解协议、API 和代码。学完就能用得上,这点挺不错的,值得推荐给你。
第一,充分理解 TCP/IP 网络模型和协议。
前部分会带你梳理 TCP/IP 模型和网络函数接口之间的联系,通过实例展开对套接字、套接字缓冲区、拥塞控制、数据包和数据流、本地套接字(UNIX 域套接字)等的讨论,交付给你一个全面细致的知识体系。
第二,结合对协议的理解,增强对各种异常情况的处理能力。
比如,对 TCP 数据流的处理、半关闭的连接、TCP 连接有效性的侦测、处理各种异常情况等,这些问题决定了程序的健壮性。这一部分的内容,将在提升篇中详细展开。
第三,写出可支持大规模高并发的网络处理程序。
性能篇和实战篇,将会带你深入研究 C10K 问题,引入进程、线程、多路复用、非阻塞、异步、事件驱动等现代高性能网络编程所需要的技术,结合实例上手操作,教你写出高性能的网络程序。
图解网络
====
共七大篇章:基础篇、HTTP篇、TCP篇、IP篇、网络综合篇、学习心得、画图经验
基础篇
-
TCPIP网络模型
-
应用层
-
传输层
-
网络层
-
数据链路层
-
物理层
HTTP篇
TCP篇
IP篇