Linux Kernel TCP/IP Stack — 协议栈收包处理流程

Posted 范桂飓

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux Kernel TCP/IP Stack — 协议栈收包处理流程相关的知识,希望对你有一定的参考价值。

目录

L2 NIC Controller 收包处理流程

硬件层与设备无关层:硬件监听物理介质,进行数据的接收,当接收的数据填满了缓冲区,硬件就会产生中断,中断产生后,系统会转向中断服务子程序。在中断服务子程序中,数据会从硬件的缓冲区复制到内核的空间缓冲区,并包装成一个数据结构(sk_buff),然后调用对驱动层的接口函数 netif_rx() 将数据包发送给设备无关层。该函数的实现在 net/inet/dev.c 中,采用了 bootom half 技术,该技术的原理是将中断处理程序人为的分为两部分,上半部分是实时性要求较高的任务,后半部分可以稍后完成,这样就可以节省中断程序的处理时间,整体提高了系统的性能。

NOTE:在整个协议栈实现中 dev.c 文件的作用重大,它衔接了其下的硬件层和其上的网络协议层,可以称它为链路层模块,或者设备无关层的实现。

以上是关于Linux Kernel TCP/IP Stack — 协议栈收包处理流程的主要内容,如果未能解决你的问题,请参考以下文章

Linux Kernel TCP/IP Stack — L4 Layer

Linux Kernel TCP/IP Stack — 协议栈发包处理流程

Linux Kernel TCP/IP Stack — Overview

Linux Kernel TCP/IP Stack — Overview

Linux Kernel TCP/IP Stack — L1 Layer

Linux Kernel TCP/IP Stack — L1 Layer