25 张图,一万字,拆解 Linux 网络包发送过程
大家好,我是飞哥!半年前我以源码的方式描述了网络包的接收过程。之后不断有粉丝提醒我,飞哥飞哥,你还没聊发送过程呢。好,安排!在开始今天的文章之前,我先来请大家思考几个小问题。问1:我们在查看内核发送数据消耗的 CPU 时,是应该看 sy 还是 si ?问2:为什么你服务器上的 /proc/so...
大家好,我是飞哥!半年前我以源码的方式描述了网络包的接收过程。之后不断有粉丝提醒我,飞哥飞哥,你还没聊发送过程呢。好,安排!在开始今天的文章之前,我先来请大家思考几个小问题。问1:我们在查看内核发送数据消耗的 CPU 时,是应该看 sy 还是 si ?问2:为什么你服务器上的 /proc/so...
前面和大家分享了我在 CPU、内存、磁盘上的一点浅薄的思考。今天开始我们讨论 Linux 里最重要的一个模块-网络模块。还是按照惯例来,让我们从一段最简单的代码开始思考。为了简单起见,我们用udp来举例,如下:int main(){ int serverSocketFd = socke...
大家好,我是飞哥!在 Linux 中,进程是我们非常熟悉的东东了,哪怕是只写过一天代码的人也都用过它。但是你确定它不是你最熟悉的陌生人?我们今天通过深度剖析进程的创建过程,帮助你提高对进程的理解深度。在这篇文章中,我会用 Nginx 创建 worker 进程的例子作为引入,然后带大家了解一些进...
在网络开发模型中,有一种非常易于开发同学使用方式,那就是同步阻塞的网络 IO(在 Java 中习惯叫 BIO)。 例如我们想请求服务器上的一段数据,那么 C 语言的一段代码 demo 大概是下面这样:int main() { int sk = socket(AF_INET, SOCK...
大家好,我是飞哥!最近帮咱们的读者朋友做了一些字节的内推,其中这两位朋友履历都还可以,但目前内推都没啥进展。所以结合这个事情,想给大家一些参加面试的个人建议。这两位朋友中朋友A是北邮的硕士,在新浪、高德、滴滴等大厂都工作过,并且职级上级别也还不错。但是在内推一直就没啥进展。其中朋友B的情况也类...