本文介绍: 1.Linux收包:网卡收到网络包之后会通过 DMA 技术将网络包写入RingBuffer环形缓冲区,接着网卡向 CPU 发起硬件中断,当 CPU 收到硬件中断请求后,根据中断表,调用已经注册的中断处理函数。
一、Linux 网络协议栈
如下是TCP/IP四层网络模型,实际上Linux 网络协议栈与它相似
二、Linux 接收网络包的流程
1.网卡是计算机里的一个硬件,专门负责接收和发送网络包,当网卡接收到一个网络包后,会通过 DMA (Direct Memory Access,直接内存访问)技术,将网络包写入到指定的内存地址,也就是写入到 Ring Buffer (环形缓冲区),接着就会告诉操作系统这个网络包已经到达。
2.告诉操作系统这个网络包已经到达最简单的一种方式就是触发中断,也就是每当网卡收到一个网络包,就触发一个中断告诉操作系统,但一旦网络包多起来,不停的打断会影响系统的整体效率。
三、Linux 发送网络包的流程
总结
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。