Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> ネットワークデバイス管理のLinuxのネットワークプロトコルスタック

ネットワークデバイス管理のLinuxのネットワークプロトコルスタック

  
 

知られている優れたネットワーク管理機能のために知られているLinuxは、なぜLinuxは、このような高効率を持っていますか?私たちは、ネットワークデバイスの管理を開始します。なぜLinuxのネットワーク機器だけでは、それを管理しますか?これがあるためです。ネットワーク機器に関連する多くのことを積み重ねます。 IPアドレスを設定するための小さな。 IPルーティングアップデートと同じ大きさ。私たちは、ネットワーク機器の効率的な管理から不可分です。単独のネットワークデバイス管理は、効率を向上させることができます!各ネットワークデバイスは、データ構造、net_deviceをLinuxで対応することになります。このような構造からのLinux 2.6.21に言えば、net_deviceは次のように定義される:構造体net_device {//このような共通&'ようなデバイスの名前、eth0の'らチャー名[IFNAMSIZ];共有メモリの//始まり、終了アドレスunsigned long型mem_end; /*共有MEM終わり* /unsigned long型mem_start; /* MEMは、ネットワークデバイスのunsigned long BASE_ADDRの* ///I /Oベースアドレスを開始共有; /*デバイスI /Oアドレス* ///でありますポートがマルチデバイス上で使用/*デバイスのIRQ番号* ///unsigned char型のif_port; unsigned int型のIRQを割り当てられた割り込み数/*選択AUI、TP、符号なしのデバイスに割り当てられた.. * ///DMAチャネルチャーDMA; /* DMAチャネル* ///デバイスステータスunsigned longの状態、次//次net_devicestructのnet_device *; //初期化関数。 //インターフェースの状態の関数ポインタを取得し、INT(* INIT)(構造体net_device * DEV);カーネルint型のifIndexのシーケンス番号に対応する構造体net_device * next_sched;. /*インターフェイスインデックス一意のデバイス識別子* ///デバイス; INT iflink構造体net_device_stats *(* get_stats)(構造体net_deviceの*のDEV);構造体iw_statistics *(* get_wireless_stats)(構造体net_device * DEV);構造体iw_handler_def * wireless_handlers、構造体ethtool_ops * ethtool_ops; //送信状態。 /;送信が符号なしlong trans_startがロックされているかどうかをチェックし、最後のTxの(単位jiffies)/*時間* ///時間のunsigned long last_rxの最も利用して、最後のRx * ///インタフェースフラグの/*時間符号なしshortフラグ*インターフェイスフラグ(ラBSD)* /unsigned short型GFLAGS;符号なしshort priv_flags; /* 'と同様のフラグ' が、ユーザ空間には見えません* /unsigned short型unused_alignment_fixer;. /*我々は*、priv_flagsを必要と我々はになりたいので32 。ビット整列* /符号なしMTU; /*インタフェースMTU値* /unsigned short型; /*インタフェースハードウェアタイプ* /unsigned short型hard_header_len; /*ハードウェアHDR長さ* /ボイド* PRIV、プライベートデータへの/*ポインタ* /構造体net_device *マスタ;このデバイスが* //*インタフェースのアドレス情報のメンバーであるグループのデバイスをマスターする.. /*ポインタ、*放送* /unsigned char型[MAX_ADDR_LEN]; /* HW BCAST * /unsigned char型のdev_addrを追加[ ,null,null,0],MAX_ADDR_LEN]; /* HWアドレス* /unsigned char型のaddr_len; /*ハードウェアアドレス長* /構造体dev_mc_list * mc_list; /*マルチキャストMACアドレス* /int型mc_count、インストールの/*数* /int型の乱交mcasts; int型allmulti; int型watchdog_timeo;構造体timer_list watchdog_timer; /*プロトコル固有のポインタ* /

void *型atalk_ptr; /*のAppleTalkリンクする* /void * ip_ptr; /* IPv4の特定のデータ* /

void *型dn_ptr; /* DECnetの特定のデータ* /void *型ip6_ptr; /* IPv6の特定のデータ* /void *型ec_ptr; /*エコネット特有のデータ* /void *型ax25_ptr; /* AX.25特定のデータ* /構造体LIST_HEAD poll_list; /*リスト* /int型のクォータをポーリングするためのリンク; int型重量;構造体のqdisc *なqdisc;構造体のqdisc * qdisc_sleeping;構造体のqdisc * qdisc_ingress;構造体LIST_HEAD qdisc_list;符号なしの長いtx_queue_len; /*マックスキューあたりのフレーム許可* //*入口経路同期* /spinlock_t ingress_lock; /* hard_start_xmit同期* /spinlock_t xmit_lock;プロセッサの/* CPU IDがhard_start_xmit又は-1に入力され、誰もが入力されていない場合* /INT xmit_lock_owner;. /*デバイスキューロック* /spinlock_t queue_lock; /*このデバイスへの参照の数* /atomic_t REFCNT; /*遅れレジスタ/登録解除* /構造体LIST_HEAD todo_list; /*デバイス名ハッシュ・チェーン* /構造体hlist_node name_hlist; /*デバイス・インデックス・ハッシュ・チェーン* /構造体hlist_nodeのindex_hlist。

Copyright © Windowsの知識 All Rights Reserved