質問: ip vs ifconfigコマンドの長所と短所 ある時点で、私が出会ったlinuxに関する(linux foundationからの)教材では、次のことが言及されています。 ipコマンドはioctlシステムコールではなくnetlinkソケットを使用するため、ifconfigよりも用途が広く効率的です。 フードの下で何が起こっているのか理解できないので、誰かがこれについて少し詳しく説明できますか?追伸私はそれらのツールで このトピック を認識していますが、それらがどのように動作するかについてのこの特定の違いには対処していません
回答: 多くのディストリビューションにある標準のifconfigは、いくつかの理由で廃止されています。カーネルとの古くて限られた方法での対話、そして実際には、もはやすべてのネットワーク構成を理解していません。 ifconfigを使用して実行できるipバージョンなどの一部のネットワーク構成を操作することはできません。さらに、ネットワーク名前空間のifconfigサポートは制限されています。逸話として、ipでのみ表示され、suse ifconfigでは表示されないインターフェイスipエイリアスを見つけました。内部の違いについて:from ifconfig vs ip:what’s difference and comparing network configuration ipは最初のサイトでは少し複雑に見えるかもしれませんが、ifconfigよりも機能がはるかに広いです。これは、ネットワークスタックの2つのレイヤー、つまりレイヤー2(リンクレイヤー)、レイヤー3(ipレイヤー)で機能的に編成され、net-toolsパッケージからの上記のすべてのコマンドの機能を実行します。 ifconfigは主にシステムのインターフェースを表示または変更しますが、このコマンドは次のタスクを実行できます。 インターフェイスプロパティの表示または変更。 ホストの新しい静的arpエントリの作成に沿ったarpキャッシュエントリの追加、削除。 すべてのインターフェースに関連付けられたmacアドレスの表示。 カーネルルーティングテーブルの表示と変更。 それを古代の対応するifconfigと区別する主なハイライトの1つは、後者がネットワーク構成にioctlを使用することです。これはカーネルとの相互作用のあまり評価されない方法ですが、前者ははるかに柔軟な後継である同じためにnetlinkソケットメカニズムを利用します。 rtnetlink(ネットワーク環境操作機能を追加)を使用してカーネルとユーザー空間間の相互通信のためのioctlの使用。 netlinkの使用/利点について:from lj-kernel korner-why and how to use netlink socket netlinkソケットは、特別なipcカーネルとユーザースペースプロセス間で情報を転送するために使用されます。ユーザースペースプロセス用の標準ソケットapiを介して2つの間に全二重通信リンクを提供します。カーネルモジュール用の特別なカーネルapi netlinkソケットは、アドレスファミリーaf_netlinkを使用します。 ..... 上記の機能が、ユーザーワールドとカーネルワールド間の通信に、システムコール、ioctl、またはprocファイルシステムの代わりにnetlinkを使用する理由システムコール、ioctl、またはprocファイルを追加して新しい機能を追加するのは簡単なことではありません。カーネルを汚染し、システムの安定性を損なう恐れがあります。ただし、netlinkソケットは単純です。netlink.hに追加する必要があるのは、プロトコルタイプである定数だけです。その後、カーネルモジュールとアプリケーションは、ソケットスタイルのapiを使用してすぐに通信できます。 .... netlinkソケットは、ユーザー空間アプリケーションとカーネルモジュール間の通信のための柔軟なインターフェイスです。アプリケーションとカーネルの両方に使いやすいソケットapiを提供します。全二重、バッファi/o、マルチキャスト、非同期通信など、他のカーネル/ユーザー空間ipcにはない高度な通信機能を提供します。