[26292] 2020-10-29_图解Linux网络包接收过程

文档创建者:s7ckTeam
浏览次数:2
最后更新:2025-01-19
2020-10-29_图解Linux网络包接收过程 L i n u x L i n u x   2 0 2 0 - 1 0 - 2 9   a l l e n 亿 线 L i n u x 线 L i n u x u d p u d p   s e r v e r L i n u x L i n u x   3 . 1 0 h t t p s : / / m i r r o r s . e d g e . k e r n e l . o r g / p u b / l i n u x / k e r n e l / v 3 . x / I n t e l i g b M a r k L i n u x   .   1 0   i n t   m a i n ( ) {         i n t   s e r v e r S o c k e t F d   =   s o c k e t ( A F _ I N E T ,   S O C K _ D G R A M ,   0 ) ;         b i n d ( s e r v e r S o c k e t F d ,   . . . ) ;         c h a r   b u f f [ B U F F S I Z E ] ;         i n t   r e a d C o u n t   =   r e c v f r o m ( s e r v e r S o c k e t F d ,   b u f f ,   B U F F S I Z E ,   0 ,   . . . ) ;         b u f f [ r e a d C o u n t ]   =   ' 0 ' ;         p r i n t f ( " R e c e i v e   f r o m   c l i e n t : % s n " ,   b u f f ) ; } r e c v _ f r o m r e c v f r o m
T C P / I P 线 N g i n x F T P L i n u x L i n u x s o c k e t 访 L i n u x T C P / I P 1   L i n u x L i n u x ,   i n t e l C P U C P U C P U C P U L i n u x C P U C P U 2 . 4 k s o f t i r q d 线 C P U k s o f t i r q d 线 : d r i v e r / n e t / e t h e r n e t d r i v e r / n e t / e t h e r n e t / i n t e l k e r n e l n e t
2   L i n u x L i n u x D M A C P U C P U C P U C P U k s o f t i r q d p o l l U D P s o c k e t L i n u x L i n u x L i n u x k s o f t i r q d 线 R e a d y 2 . 1   k s o f t i r q d 线 线 L i n u x 线 k s o f t i r q d 1 N N k e r n e l / s m p b o o t . c s m p b o o t _ r e g i s t e r _ p e r c p u _ t h r e a d   s p a w n _ k s o f t i r q d k e r n e l / s o f t i r q . c s o f t i r q d 3   k s o f t i r q d 线
k s o f t i r q d 线 k s o f t i r q d _ s h o u l d _ r u n r u n _ k s o f t i r q d ; 2 . 2   / / f i l e :   k e r n e l / s o f t i r q . c s t a t i c   s t r u c t   s m p _ h o t p l u g _ t h r e a d   s o f t i r q _ t h r e a d s   =   {         . s t o r e                     =   & k s o f t i r q d ,         . t h r e a d _ s h o u l d _ r u n     =   k s o f t i r q d _ s h o u l d _ r u n ,         . t h r e a d _ f n             =   r u n _ k s o f t i r q d ,         . t h r e a d _ c o m m                 =   " k s o f t i r q d / % u " , } ; s t a t i c   _ _ i n i t   i n t   s p a w n _ k s o f t i r q d ( v o i d ) {         r e g i s t e r _ c p u _ n o t i f i e r ( & c p u _ n f b ) ;         B U G _ O N ( s m p b o o t _ r e g i s t e r _ p e r c p u _ t h r e a d ( & s o f t i r q _ t h r e a d s ) ) ;         r e t u r n   0 ; } e a r l y _ i n i t c a l l ( s p a w n _ k s o f t i r q d ) ; / / f i l e :   i n c l u d e / l i n u x / i n t e r r u p t . h e n u m {         H I _ S O F T I R Q = 0 ,         T I M E R _ S O F T I R Q ,         N E T _ T X _ S O F T I R Q ,         N E T _ R X _ S O F T I R Q ,         B L O C K _ S O F T I R Q ,         B L O C K _ I O P O L L _ S O F T I R Q ,         T A S K L E T _ S O F T I R Q ,         S C H E D _ S O F T I R Q ,         H R T I M E R _ S O F T I R Q ,         R C U _ S O F T I R Q ,     }
4   l i n u x g r e p C P U p o l l s u b s y s _ i n i t c a l l n e t _ d e v _ i n i t / / f i l e :   n e t / c o r e / d e v . c s t a t i c   i n t   _ _ i n i t   n e t _ d e v _ i n i t ( v o i d ) {         . . . . . .         f o r _ e a c h _ p o s s i b l e _ c p u ( i )   {                 s t r u c t   s o f t n e t _ d a t a   * s d   =   & p e r _ c p u ( s o f t n e t _ d a t a ,   i ) ;                 m e m s e t ( s d ,   0 ,   s i z e o f ( * s d ) ) ;                 s k b _ q u e u e _ h e a d _ i n i t ( & s d - > i n p u t _ p k t _ q u e u e ) ;                 s k b _ q u e u e _ h e a d _ i n i t ( & s d - > p r o c e s s _ q u e u e ) ;                 s d - > c o m p l e t i o n _ q u e u e   =   N U L L ;                 I N I T _ L I S T _ H E A D ( & s d - > p o l l _ l i s t ) ;                 . . . . . .         }         . . . . . .         o p e n _ s o f t i r q ( N E T _ T X _ S O F T I R Q ,   n e t _ t x _ a c t i o n ) ;         o p e n _ s o f t i r q ( N E T _ R X _ S O F T I R Q ,   n e t _ r x _ a c t i o n ) ; } s u b s y s _ i n i t c a l l ( n e t _ d e v _ i n i t ) ; s o f t n e t _ d a t a p o l l _ l i s t
o p e n _ s o f t i r q N E T _ T X _ S O F T I R Q n e t _ t x _ a c t i o n N E T _ R X _ S O F T I R Q n e t _ r x _ a c t i o n k s o f t i r q d 线 使 2 . 3   i p t c p u d p i p _ r c v ( ) , t c p _ v 4 _ r c v ( ) u d p _ r c v ( ) L i n u x i n e t _ p r o t o s p t y p e _ b a s e : 5   A F _ I N E T o p e n _ s o f t i r q s o f t i r q _ v e c / / f i l e :   k e r n e l / s o f t i r q . c v o i d   o p e n _ s o f t i r q ( i n t   n r ,   v o i d   ( * a c t i o n ) ( s t r u c t   s o f t i r q _ a c t i o n   * ) ) {         s o f t i r q _ v e c [ n r ] . a c t i o n   =   a c t i o n ; } f s _ i n i t c a l l s u b s y s _ i n i t c a l l f s _ i n i t c a l l i n e t _ i n i t i n e t _ i n i t
; s t a t i c   i n t   _ _ i n i t   i n e t _ i n i t ( v o i d ) { u d p _ p r o t o c o l h a n d l e r u d p _ r c v t c p _ p r o t o c o l h a n d l e r t c p _ v 4 _ r c v i n e t _ a d d _ p r o t o c o l / / f i l e :   n e t / i p v 4 / a f _ i n e t . c s t a t i c   s t r u c t   p a c k e t _ t y p e   i p _ p a c k e t _ t y p e   _ _ r e a d _ m o s t l y   =   {         . t y p e   =   c p u _ t o _ b e 1 6 ( E T H _ P _ I P ) ,         . f u n c   =   i p _ r c v , } ; s t a t i c   c o n s t   s t r u c t   n e t _ p r o t o c o l   u d p _ p r o t o c o l   =   {         . h a n d l e r   =     u d p _ r c v ,         . e r r _ h a n d l e r   =     u d p _ e r r ,         . n o _ p o l i c y   =         1 ,         . n e t n s _ o k   =   1 , } ; s t a t i c   c o n s t   s t r u c t   n e t _ p r o t o c o l   t c p _ p r o t o c o l   =   {         . e a r l y _ d e m u x         =       t c p _ v 4 _ e a r l y _ d e m u x ,         . h a n d l e r         =       t c p _ v 4 _ r c v ,         . e r r _ h a n d l e r         =       t c p _ v 4 _ e r r ,         . n o _ p o l i c y     =       1 ,         . n e t n s _ o k       =       1 , }         . . . . . .         i f   ( i n e t _ a d d _ p r o t o c o l ( & i c m p _ p r o t o c o l ,   I P P R O T O _ I C M P )   <   0 )                 p r _ c r i t ( " % s :   C a n n o t   a d d   I C M P   p r o t o c o l n " ,   _ _ f u n c _ _ ) ;         i f   ( i n e t _ a d d _ p r o t o c o l ( & u d p _ p r o t o c o l ,   I P P R O T O _ U D P )   <   0 )                 p r _ c r i t ( " % s :   C a n n o t   a d d   U D P   p r o t o c o l n " ,   _ _ f u n c _ _ ) ;         i f   ( i n e t _ a d d _ p r o t o c o l ( & t c p _ p r o t o c o l ,   I P P R O T O _ T C P )   <   0 )                 p r _ c r i t ( " % s :   C a n n o t   a d d   T C P   p r o t o c o l n " ,   _ _ f u n c _ _ ) ;         . . . . . .         d e v _ a d d _ p a c k ( & i p _ p a c k e t _ t y p e ) ; } i n t   i n e t _ a d d _ p r o t o c o l ( c o n s t   s t r u c t   n e t _ p r o t o c o l   * p r o t ,   u n s i g n e d   c h a r   p r o t o c o l ) {         i f   ( ! p r o t - > n e t n s _ o k )   {                 p r _ e r r ( " P r o t o c o l   % u   i s   n o t   n a m e s p a c e   a w a r e ,   c a n n o t   r e g i s t e r . n " ,                         p r o t o c o l ) ;                 r e t u r n   - E I N V A L ;         }         r e t u r n   ! c m p x c h g ( ( c o n s t   s t r u c t   n e t _ p r o t o c o l   * * ) & i n e t _ p r o t o s [ p r o t o c o l ] ,                         N U L L ,   p r o t )   ?   0   :   - 1 ; }
t c p u d p i n e t _ p r o t o s i p _ p a c k e t _ t y p e t y p e f u n c i p _ r c v d e v _ a d d _ p a c k p t y p e _ b a s e i n e t _ p r o t o s u d p t c p p t y p e _ b a s e i p _ r c v ( ) p t y p e _ b a s e i p _ r c v i p i p _ r c v ( ) i p _ r c v i n e t _ p r o t o s t c p u d p u d p _ r c v ( ) t c p _ v 4 _ r c v ( ) i p _ r c v u d p _ r c v i p _ r c v n e t f i l t e r i p t a b l e   n e t f i l t e r     i p t a b l e s   u d p _ r c v s o c k e t n e t . c o r e . r m e m _ m a x n e t . c o r e . r m e m _ d e f a u l t 2 . 4   使   m o d u l e _ i n i t   i g b i n e t _ a d d _ p r o t o c o l d e v _ a d d _ p a c k ( & i p _ p a c k e t _ t y p e ) ; / / f i l e :   n e t / c o r e / d e v . c v o i d   d e v _ a d d _ p a c k ( s t r u c t   p a c k e t _ t y p e   * p t ) {         s t r u c t   l i s t _ h e a d   * h e a d   =   p t y p e _ h e a d ( p t ) ;         . . . . . . } s t a t i c   i n l i n e   s t r u c t   l i s t _ h e a d   * p t y p e _ h e a d ( c o n s t   s t r u c t   p a c k e t _ t y p e   * p t ) {         i f   ( p t - > t y p e   = =   h t o n s ( E T H _ P _ A L L ) )                 r e t u r n   & p t y p e _ a l l ;         e l s e                 r e t u r n   & p t y p e _ b a s e [ n t o h s ( p t - > t y p e )   &   P T Y P E _ H A S H _ M A S K ] ; } i n e t _ i n i t d r i v e r s / n e t / e t h e r n e t / i n t e l / i g b / i g b _ m a i n . c
; s t a t i c   i n t   _ _ i n i t   i g b _ i n i t _ m o d u l e ( v o i d ) { L i n u x i g b p r o b e i g b _ d r i v e r p r o b e i g b _ p r o b e p r o b e r e a d y i g b d r i v e r s / n e t / e t h e r n e t / i n t e l / i g b / i g b _ m a i n . c 6   5 e t h t o o l   e t h t o o l   i g b d r i v e r s / n e t / e t h e r n e t / i n t e l / i g b / i g b _ e t h t o o l . c e t h t o o l R X   e t h t o o l e t h t o o l 6 i g b _ n e t d e v _ o p s i g b _ o p e n / / f i l e :   d r i v e r s / n e t / e t h e r n e t / i n t e l / i g b / i g b _ m a i n . c s t a t i c   s t r u c t   p c i _ d r i v e r   i g b _ d r i v e r   =   {         . n a m e           =   i g b _ d r i v e r _ n a m e ,         . i d _ t a b l e   =   i g b _ p c i _ t b l ,         . p r o b e         =   i g b _ p r o b e ,         . r e m o v e       =   i g b _ r e m o v e ,         . . . . . . }         . . . . . .         r e t   =   p c i _ r e g i s t e r _ d r i v e r ( & i g b _ d r i v e r ) ;         r e t u r n   r e t ; } p c i _ r e g i s t e r _ d r i v e r i g b _ d r i v e r _ n a m e i g b _ p r o b e i g b _ p r o b e
s t a t i c   c o n s t   s t r u c t   n e t _ d e v i c e _ o p s   i g b _ n e t d e v _ o p s   =   { . . . . . 7 i g b _ p r o b e N A P I p o l l i g b i g b _ p o l l , 2 . 5     s t r u c t u r e   n e t _ d e v i c e _ o p s   m a c     i f c o n f i g   e t h 0   u p n e t _ d e v i c e _ o p s   i g b _ o p e n 7   / / f i l e :   d r i v e r s / n e t / e t h e r n e t / i n t e l / i g b / i g b _ m a i n . c     . n d o _ o p e n                               =   i g b _ o p e n ,     . n d o _ s t o p                               =   i g b _ c l o s e ,     . n d o _ s t a r t _ x m i t                   =   i g b _ x m i t _ f r a m e ,     . n d o _ g e t _ s t a t s 6 4                 =   i g b _ g e t _ s t a t s 6 4 ,     . n d o _ s e t _ r x _ m o d e                 =   i g b _ s e t _ r x _ m o d e ,     . n d o _ s e t _ m a c _ a d d r e s s         =   i g b _ s e t _ m a c ,     . n d o _ c h a n g e _ m t u                   =   i g b _ c h a n g e _ m t u ,     . n d o _ d o _ i o c t l                       =   i g b _ i o c t l ,   . i g b _ a l l o c _ q _ v e c t o r s t a t i c   i n t   i g b _ a l l o c _ q _ v e c t o r ( s t r u c t   i g b _ a d a p t e r   * a d a p t e r ,                                     i n t   v _ c o u n t ,   i n t   v _ i d x ,                                     i n t   t x r _ c o u n t ,   i n t   t x r _ i d x ,                                     i n t   r x r _ c o u n t ,   i n t   r x r _ i d x ) {         . . . . . .         / *   i n i t i a l i z e   N A P I   * /         n e t i f _ n a p i _ a d d ( a d a p t e r - > n e t d e v ,   & q _ v e c t o r - > n a p i ,                               i g b _ p o l l ,   6 4 ) ; }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则