Link-Localアドレス
1. 概要
プロトコルの正式名称(略称)と発案された背景
Link-Localアドレスとは、ネットワークインターフェースがIPアドレスを自動構成する際に使用する特殊なIPアドレスのことです。正式名称は特にありませんが、「Link-Local Addressing」という用語で広く知られています。IPv4とIPv6の両方に存在し、それぞれ異なるアドレス範囲が割り当てられています。
- IPv4 Link-Local Addressing: APIPA (Automatic Private IP Addressing) という名称でよく知られており、DHCPサーバーが存在しない環境で、ホストが自己構成できるIPアドレスの範囲を定めています。
- IPv6 Link-Local Addressing: IPv6では必須の機能であり、FE80::/10というプレフィックスで定義されています。
この仕組みが発案された背景には、以下の課題を解決する必要性がありました。
- ネットワーク設定の簡略化: DHCPサーバーなどの複雑なネットワーク設定なしに、デバイスがローカルネットワークで通信できるようにする。
- 設定不要のネットワーキング: 特に小規模なネットワークや、一時的なネットワーク構築において、デバイスを繋ぐだけで通信できるようにする。
- 初期設定時のアクセス: デバイスの初期設定や、トラブルシューティング時に、ネットワークにアクセスできるようにする。
主な用途、目的、解決する課題
主な用途は以下の通りです。
- ローカルネットワークでの自動IPアドレス設定: 同じネットワークセグメントに接続されたデバイスが、DHCPサーバーなしにIPアドレスを自動的に割り当て、通信を開始できるようにします。
- アドホックネットワーク: インターネットアクセスは不要で、一時的にデバイス間で通信を行う必要がある場合に使用します。
- ルータやブリッジなどのネットワーク機器の設定: 初期設定時や、障害発生時における設定インターフェースへのアクセスに利用されます。
- 近隣探索: IPv6においては、近隣探索プロトコル(Neighbor Discovery Protocol, NDP)がLink-Localアドレスを使って動作し、近隣のデバイスを検出します。
目的:
- ネットワーク管理の複雑さを軽減する。
- デバイス間の初期接続を容易にする。
- ネットワーク設定が不可能な状況でも通信を可能にする。
解決する課題:
- DHCPサーバーがない環境でのIPアドレスの設定。
- 手動設定によるミスを避ける。
- デバイスをネットワークに接続する際の煩雑さを軽減する。
OSI参照モデルでの位置づけと他のプロトコルとの関係
Link-Localアドレスは、OSI参照モデルのネットワーク層(Layer 3)に位置づけられます。
- IPv4 Link-Local Addressing (APIPA): IPv4プロトコルの一部として実装されます。DHCPとの連携が考慮されており、DHCPサーバーが見つからなかった場合に自動的にIPアドレスを割り当てます。
- IPv6 Link-Local Addressing: IPv6プロトコルの一部であり、NDPと密接に連携します。NDPは、アドレス解決、ルータ検出、近隣到達性検査にLink-Localアドレスを使用します。
他のプロトコルとの関係:
- DHCP: DHCPサーバーが存在しない場合にAPIPAが利用されます。また、DHCPサーバーが見つかるとAPIPAアドレスからDHCPアドレスに切り替わります。
- ARP (Address Resolution Protocol): IPv4では、ARPでLink-LocalアドレスのMACアドレスを解決する必要があります。
- NDP: IPv6では、NDPがLink-Localアドレスを使って近隣探索やアドレス解決を行います。
- TCP/UDP: Link-Localアドレスで設定されたデバイスは、TCP/UDPなどのトランスポート層プロトコルを使用して他のデバイスと通信します。
- ICMP: ネットワーク層プロトコルとして、Pingなどの診断ツールに使用されます。
主要な特徴と利点
特徴:
- 自動構成: 手動でIPアドレスを設定する必要がなく、デバイスが自動的にIPアドレスを割り当てます。
- ローカルスコープ: 同じネットワークセグメント内でのみ有効なアドレスです。ルータを介した通信には使用できません。
- 設定不要: DHCPサーバーなどのネットワークインフラストラクチャが不要です。
- 迅速な接続: デバイスを繋ぐだけで、すぐに通信を開始できます。
利点:
- 簡単: ネットワーク設定が簡単で、特別な知識がなくても使用できます。
- 柔軟: あらゆるネットワーク環境で使用できます。
- 低コスト: DHCPサーバーのような専用の機器が不要です。
- 信頼性: DHCPサーバーがダウンした場合でも、デバイス間の通信を維持できます。
一般的な使用シナリオ
- 家庭内ネットワーク: プリンタやスマート家電など、一時的にネットワークを構築する必要がある場合。
- 小規模オフィス: DHCPサーバーがない環境や、一時的なネットワーク構築。
- 会議室: 参加者が一時的にネットワークを構築してファイルを共有する場合。
- デモンストレーション: 製品デモを行う際に、一時的にネットワークを構築する場合。
- 組込みシステム: ネットワークに接続された組込みデバイスが、初期設定やメンテナンスを行う場合。
2. プロトコルフロー
A) 基本パターン
Link-Localアドレスは、通信を行うためのアドレスを自動で生成するための仕組みなので、それ自体の通信パターンはありません。 ただし、Link-Localアドレスを使用して通信する際に使用するプロトコルのフローを記載します。
IPv4の場合
APIPAによるIPアドレス自動構成:
sequenceDiagram
participant Host A
participant Host B
Host A->>Host A: IPアドレスの自動設定を試行
Host A->>Host A: 169.254.0.0/16のアドレス範囲からランダムにIPアドレスを選択
Host A->>Broadcast: ARPプローブ(IPアドレスを問合せ)
alt 他のホストが同じIPアドレスを使用
Broadcast-->>Host A: ARP応答
Host A->>Host A: 別のアドレスを選択
else 同じIPアドレスを使用しているホストがない
Host A->>Host A: ARP応答がないため、IPアドレスを確定
end
Host B->>Host B: 同様のプロセスを実行
Host A->>Host B: TCP/UDPでの通信
- シーケンス説明:
- ホストAは、IPアドレスの自動設定を試行します。
- ホストAは、169.254.0.0/16の範囲からランダムなIPアドレスを選択します。
- ホストAは、選択したIPアドレスを持つデバイスが他に存在するかどうかをARPプローブで確認します。
- もし他のデバイスが同じIPアドレスを使用していた場合、ホストAは別のアドレスを選択します。
- IPアドレスの重複がない場合、ホストAはIPアドレスを確定します。
- ホストBも同様のプロセスでIPアドレスを設定します。
- ホストAとホストBは、TCP/UDPなどのプロトコルを使って通信を開始します。
IPv6の場合
NDPによるアドレス解決:
sequenceDiagram
participant Host A
participant Host B
Host A->>Host A: Link-Local IPv6アドレスを自動設定 (例: fe80::xxxx)
Host B->>Host B: Link-Local IPv6アドレスを自動設定 (例: fe80::yyyy)
Host A->>Multicast: Neighbor Solicitation (NS) (Host BのLink-Localアドレスを要求)
Host B->>Host A: Neighbor Advertisement (NA) (自身のLink-LocalアドレスとMACアドレスを通知)
Host A->>Host B: TCP/UDPでの通信
- シーケンス説明:
- Host Aは、自動でLink-Local IPv6アドレス (例: fe80::xxxx) を設定します。
- Host Bも同様に、自動でLink-Local IPv6アドレス (例: fe80::yyyy) を設定します。
- Host Aは、Host BのLink-Localアドレスを求めるNeighbor Solicitation (NS) メッセージをマルチキャストで送信します。
- Host Bは、自身のLink-LocalアドレスとMACアドレスを含むNeighbor Advertisement (NA) メッセージをHost Aに送信します。
- Host AはHost Bのアドレス情報を用いてTCP/UDPなどのプロトコルでHost Bと通信を開始します。
B) エラーハンドリングパターン
- タイムアウト時の動作:
- IPv4のAPIPAでは、ARPプローブに対して応答がない場合に、IPアドレスが利用可能と判断します。ARP応答があった場合は、アドレスの再選択を行います。
- IPv6のNDPでは、NSに対してNA応答がない場合、再送を試みます。再送回数を超えた場合は、到達不能と判断します。
- 再送メカニズム:
- IPv6では、NDPによるNSメッセージの送信時、NAメッセージの応答がない場合、複数回再送を試みます。
- エラー応答時の処理:
- ARPにおける重複アドレス検出時に、重複したアドレスを使用していたデバイスは、別のIPアドレスを再選択します。
- NDPにおける到達不能通知(Destination Unreachable)のICMPv6メッセージを受け取った場合、通信を停止するか、別の経路を探索します。
C) 認証・認可パターン
Link-Localアドレス自体には、認証・認可の機能はありません。 より上位のプロトコル層で認証・認可を行う必要があります(例えば、HTTPS、SSHなど)。
D) 特殊パターン
- 初期化/終了シーケンス:
- Link-Localアドレスは、ネットワークインターフェースが有効になった時点で自動的に設定されます。特に明示的な初期化シーケンスは存在しません。
- インターフェースが無効になると、Link-Localアドレスは破棄されます。
- キープアライブメカニズム:
- Link-Localアドレス自体にはキープアライブの仕組みはありません。TCP接続の場合、TCPキープアライブが利用されることがあります。
- IPv6 NDPには、近隣到達性検査(Neighbor Unreachability Detection, NUD)の機能があり、定期的に近隣デバイスの存在を確認します。
- バルク転送:
- Link-Localアドレスは、TCP/UDPなどを介したデータ転送をサポートしますが、バルク転送に特化した仕組みはありません。
- マルチパーティ通信:
- IPv4の場合、ブロードキャストまたはマルチキャストアドレスを使って、同じネットワークセグメント内の複数のデバイスにメッセージを送信することができます。
- IPv6の場合、マルチキャストアドレスを使い、近隣の複数のデバイスにメッセージを送信できます。
3. メッセージフォーマット
Link-Localアドレス自体には、メッセージフォーマットは存在しません。Link-Localアドレスを使用する上で利用されるプロトコルのメッセージフォーマットを説明します。
A) 制御メッセージ
IPv4 ARP (Address Resolution Protocol)
フィールド名 | サイズ(bit) | 説明 | 条件 |
---|---|---|---|
ハードウェアタイプ | 16 | 使用するハードウェアのタイプ (例: Ethernet) | 必須 |
プロトコルタイプ | 16 | 使用するプロトコルタイプ (例: IPv4) | 必須 |
ハードウェアアドレス長 | 8 | ハードウェアアドレスの長さ (例: 6 for Ethernet MAC) | 必須 |
プロトコルアドレス長 | 8 | プロトコルアドレスの長さ (例: 4 for IPv4) | 必須 |
オペレーション | 16 | ARPリクエスト(1)またはARPレスポンス(2) | 必須 |
送信元ハードウェアアドレス | 48 | 送信元のMACアドレス | 必須 |
送信元プロトコルアドレス | 32 | 送信元のIPv4アドレス | 必須 |
宛先ハードウェアアドレス | 48 | 宛先のMACアドレス(ARPリクエストでは不明) | リクエスト時は不明、レスポンス時は必須 |
宛先プロトコルアドレス | 32 | 宛先のIPv4アドレス | 必須 |
IPv6 NDP (Neighbor Discovery Protocol)
Neighbor Solicitation (NS)
フィールド名 | サイズ(bit) | 説明 | 条件 |
---|---|---|---|
タイプ | 8 | NSメッセージのタイプコード (135) | 必須 |
コード | 8 | 0 | 必須 |
チェックサム | 16 | ICMPv6ヘッダーのチェックサム | 必須 |
予約済 | 32 | 0で埋められる | 必須 |
ターゲットアドレス | 128 | 解決したいIPv6アドレス | 必須 |
オプション | 可変長 | 送信元Link-Layerアドレスなど | オプション |
Neighbor Advertisement (NA)
フィールド名 | サイズ(bit) | 説明 | 条件 |
---|---|---|---|
タイプ | 8 | NAメッセージのタイプコード (136) | 必須 |
コード | 8 | 0 | 必須 |
チェックサム | 16 | ICMPv6ヘッダーのチェックサム | 必須 |
R | 1 | ルータフラグ | 必須 |
S | 1 | 抑制フラグ | 必須 |
O | 1 | オプションフラグ | 必須 |
予約済 | 29 | 0で埋められる | 必須 |
ターゲットアドレス | 128 | 広告するIPv6アドレス | 必須 |
オプション | 可変長 | ターゲットLink-Layerアドレスなど | オプション |
B) データメッセージ
データメッセージは、Link-Localアドレスを使って通信する上位層のプロトコルのメッセージフォーマットに従います(例: TCP, UDP)。
C) 状態管理メッセージ
状態管理メッセージは、Link-Localアドレス自身には存在しません。上位層のプロトコル(例: SNMP, Netconf)で状態管理メッセージを送受信する際に、Link-Localアドレスが利用されることがあります。
4. 状態遷移
Link-Localアドレスの基本的な状態遷移を以下に示します。
stateDiagram
[*] --> 初期化 : インターフェース有効化
初期化 --> アドレス選択 : IPv4の場合はAPIPA、IPv6の場合はNDP
アドレス選択 --> 確認 : ARPプローブ (IPv4) or Neighbor Solicitation (IPv6)
確認 --> 使用中 : 他のデバイスと競合なし
確認 --> アドレス選択 : IPアドレス競合発生
使用中 --> 終了 : インターフェース無効化
終了 --> [*]
- 初期化: インターフェースが有効になった状態。
- アドレス選択: IPv4では、ランダムなIPアドレスを選択します。IPv6では、自動的にLink-Localアドレスが設定されます。
- 確認: IPv4では、ARPプローブでIPアドレスの競合を確認します。IPv6では、NDPのNSメッセージでアドレスの競合を確認します。
- 使用中: IPアドレスが競合せず、使用可能な状態です。
- 終了: インターフェースが無効化され、アドレスが破棄される状態。
- タイムアウトと再試行: IPv6では、NSメッセージに対するNAメッセージの応答がない場合、再試行を行います。IPv4では、ARPプローブに一定時間応答がない場合、アドレスを使用します。
5. パケットの種類と用途
A) コントロールパケット
- 種類と目的:
- ARPリクエスト/レスポンス (IPv4): IPアドレスに対応するMACアドレスを解決する。
- Neighbor Solicitation (NS) (IPv6): 近隣のデバイスのLink-Localアドレスの解決、重複アドレス検出に使用する。
- Neighbor Advertisement (NA) (IPv6): NSメッセージに対する応答、自身のLink-Localアドレスを通知する。
- 使用されるシナリオ:
- ARP: 同じネットワークセグメント内のIPv4デバイス間で通信を行う際。
- NS/NA: 同じネットワークセグメント内のIPv6デバイス間で通信を行う際。
- 特殊な処理要件:
- ARPリクエストはブロードキャストで送信され、ARPレスポンスは該当するデバイスにユニキャストで送信されます。
- NSはマルチキャストで送信され、NAはユニキャストで送信されることが多いです。
B) データパケット
- ペイロードの形式: TCP/UDPペイロードなど、上位層のプロトコルで定義された形式。
- フラグメンテーション: Link-LocalネットワークのMTU(最大転送単位)を超える場合、上位層プロトコルでフラグメンテーションを行います。
- 再組み立て要件: フラグメンテーションが行われた場合、受信側で再組み立てが必要です。
C) 管理パケット
- 監視用パケット: ICMPのPingや、上位層プロトコルにおける監視メッセージが利用されることがあります。
- 設定用パケット: Link-Localアドレス自身を設定するパケットは存在しません。上位層のプロトコル(例: SNMP, Netconf)が利用されることがあります。
- デバッグ用パケット: パケットキャプチャツール(Wiresharkなど)を使って、ARP/NDPのパケットを分析できます。
エラーコードの詳細
Link-Localアドレス自体にはエラーコードはありませんが、使用するプロトコルのエラーコードを使用します。
- ARP: 応答なし、アドレス重複など。
- NDP: 応答なし、到達不能など。
- ICMP/ICMPv6: 様々なエラーコードが規定されており、到達不能、パラメータエラーなどがあります。
6. プロトコルバリエーション
Link-Localアドレスのプロトコルバリエーションについて説明します。
- バージョンによる違い:
- IPv4とIPv6でそれぞれ異なるLink-Localアドレスの範囲と仕組みが定義されています。
- IPv4ではAPIPAが用いられ、アドレスの競合検出にはARPが使われます。
- IPv6ではNDPが必須であり、アドレスの競合検出にはNDPのNS/NAメッセージが使われます。
- 実装環境による違い:
- 異なるOSやネットワーク機器で実装が多少異なる場合があります。
- 組み込みシステムなどでは、リソースの制約から一部の機能を省略することがあります。
- セキュリティレベルによる違い:
- Link-Localアドレス自体にはセキュリティ機能はありません。上位層プロトコルでセキュリティを実装する必要があります。
- IPSecを適用することで、通信の暗号化や認証を行うことができます。
- 最適化オプションによる違い:
- 実装によっては、アドレス生成のアルゴリズムや、再試行回数などを調整するオプションがあります。
7. セキュリティ考慮事項
Link-Localアドレス自体には、セキュリティメカニズムがありません。しかし、以下のような考慮事項があります。
- 認証メカニズムの詳細:
- Link-Localアドレスでの通信において、認証が必要な場合、上位層のプロトコルで認証を行う必要があります。
- HTTPS、SSH、TLSなどのプロトコルを利用して認証を行うことが一般的です。
- 暗号化要件と推奨アルゴリズム:
- Link-Localネットワーク上で機密性の高い情報をやり取りする場合は、暗号化が必要です。
- TLS、IPsecなどのプロトコルを使い、AESやChaCha20などの暗号化アルゴリズムを使用することが推奨されます。
- 完全性保護の方法:
- 通信の完全性を保護するために、ハッシュ関数やデジタル署名を利用します。
- HMAC、SHA-256、SHA-512などがよく使われます。
- 既知の攻撃手法と対策:
- ARPスプーフィング: ARPキャッシュを偽装し、通信を傍受する攻撃。対策として、ARPのフィルタリングや動的ARP検査(DAI)が有効です。
- NDPスプーフィング: NDPメッセージを偽装し、通信を傍受する攻撃。対策として、Secure NDP (SEND) の利用が推奨されます。
- 中間者攻撃 (Man-in-the-Middle): 通信経路に侵入し、データを盗聴または改ざんする攻撃。IPsecやTLSによる暗号化が有効です。
- セキュリティ監査の要件:
- 定期的なセキュリティ監査を実施し、脆弱性の有無を確認することが重要です。
- パケットキャプチャツールで通信を監視し、不審なアクティビティがないかを確認します。
- セッション管理の方法:
- 認証後のセッションは適切に管理する必要があります。
- セッションタイムアウトの設定や、セッションIDの定期的な更新を行うことが重要です。
- 鍵管理に関する考慮事項:
- 暗号化に必要な鍵は安全に管理する必要があります。
- 鍵の生成、配布、保管、廃棄のプロセスを適切に管理する必要があります。
- 鍵の漏洩を防ぐため、専用の鍵管理システムを導入することを推奨します。
8. 標準化と仕様
- 関連するRFC番号と概要:
- RFC 3927: Dynamic Configuration of IPv4 Link-Local Addresses
- RFC 4861: Neighbor Discovery for IPv6
- RFC 4862: IPv6 Stateless Address Autoconfiguration
- 標準化団体と策定プロセス:
- IETF (Internet Engineering Task Force) がこれらの仕様を策定しています。
- 仕様は、RFCとして公開されており、コミュニティによる議論やレビューを経て策定されます。
- 仕様書の構成と主要な章の説明:
- 各RFCは、はじめに概要や背景、用語の定義、仕様の詳細、セキュリティ上の考慮事項、IANAの指示などが記載されています。
- 詳細なメッセージフォーマットや、プロトコルの動作手順が規定されています。
- バージョン間の主な違い:
- IPv4とIPv6では、Link-Localアドレスの範囲や使用するプロトコルが異なります。
- 各RFCには、アップデートや改訂版が存在します。
- 将来の拡張性に関する規定:
- IETFは、必要に応じて仕様を拡張したり、新しい機能を導入したりすることがあります。
- 仕様には、将来の拡張性を考慮した設計がされています。
- 準拠性要件:
- デバイスやソフトウェアがLink-Localアドレスを実装する際は、関連するRFCに準拠している必要があります。
- 実装の相互接続性を確保するために、標準への準拠が重要です。
9. 実装時の注意点
- 一般的な実装パターン:
- ほとんどのOSやネットワーク機器には、Link-Localアドレスの自動構成機能が標準で組み込まれています。
- アプリケーション開発者は、Link-Localアドレスを使用して通信するために特別な設定を行う必要はありません。
- 開発者は、ソケットAPIを使って、Link-Localアドレスにバインドしたり、Link-Localアドレスで通信したりすることができます。
- スケーラビリティに関する考慮事項:
- Link-Localアドレスは、同一ネットワークセグメント内に限定されるため、大規模ネットワークでの利用には適していません。
- 大規模ネットワークでは、DHCPサーバーによるアドレス割り当てや、ルーティングが可能なIPアドレスの利用を推奨します。
- パフォーマンスチューニングのポイント:
- Link-Localアドレスを使用する際には、特にパフォーマンスチューニングは必要ありません。
- ただし、TCP/UDPなどの上位層プロトコルのパフォーマンスチューニングは考慮する必要があります。
- デバッグとトラブルシューティング方法:
- パケットキャプチャツール (Wiresharkなど) を利用して、ARP/NDPメッセージを監視し、ネットワークの問題を特定できます。
- OSのネットワーク設定ツールで、IPアドレスやネットワークインターフェースの状態を確認できます。
- デバッグログを収集し、問題の原因を特定するのに役立てることができます。
- テスト時の検証項目:
- Link-Localアドレスが正しく自動設定されることを確認します。
- 同一ネットワークセグメント内の他のデバイスと通信できることを確認します。
- IPv4の場合はARP、IPv6の場合はNDPが正常に動作することを確認します。
- エラー発生時に、適切なエラー処理が行われることを確認します。
- 他システムとの統合時の注意点:
- 他のネットワークシステムと統合する際に、IPアドレスの競合がないか確認する必要があります。
- 特に複数のネットワークインターフェースを持つデバイスでは、Link-Localアドレスと他のアドレスの使い分けに注意が必要です。
- 運用監視の推奨事項:
- ネットワーク機器のログを監視し、Link-Localネットワークの問題を早期に検出します。
- ネットワーク監視ツールを使い、ネットワークのパフォーマンスを監視します。
10. 具体的な実装例
-
このプロトコルを使っての一般的なクエリ/レスポンスのパケットダンプ例:
IPv4 (ARP):
Frame 1: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) Ethernet II, Src: 00:00:5e:00:53:af, Dst: ff:ff:ff:ff:ff:ff Destination: ff:ff:ff:ff:ff:ff (Broadcast) Source: 00:00:5e:00:53:af Type: ARP (0x0806) Address Resolution Protocol Hardware type: Ethernet (1) Protocol type: IPv4 (0x0800) Hardware size: 6 Protocol size: 4 Opcode: request (1) Sender MAC address: 00:00:5e:00:53:af Sender IP address: 169.254.10.10 Target MAC address: 00:00:00:00:00:00 Target IP address: 169.254.10.20
IPv6 (NDP NS):
Frame 1: 90 bytes on wire (720 bits), 90 bytes captured (720 bits) Ethernet II, Src: 00:00:5e:00:53:af, Dst: 33:33:00:00:00:01 Destination: 33:33:00:00:00:01 (Multicast) Source: 00:00:5e:00:53:af Type: IPv6 (0x86dd) Internet Protocol Version 6 Version: 6 Traffic class: 0x00 (DSCP: CS0, ECN: Not-ECT) Flow label: 0x00000 Payload length: 32 Next header: ICMPv6 (58) Hop limit: 255 Source address: fe80::200:5eff:fe00:53af Destination address: ff02::1:ff0a:14 Internet Control Message Protocol v6 Type: Neighbor Solicitation (135) Code: 0 Checksum: 0x897f [correct] Reserved: 00000000 Target address: fe80::200:5eff:fe0a:14 Option (Source Link-Layer Address): Ethernet Type: Source Link-Layer Address (1) Length: 1 (8 bytes) Link-Layer Address: 00:00:5e:00:53:af
-
実際のWiresharkキャプチャ例:
- Wiresharkでパケットをキャプチャして、ARP/NDPメッセージを詳しく分析できます。
- フィルターを使って、特定のLink-Localアドレスや、特定のメッセージタイプを抽出できます。
- パケットの詳細を確認することで、通信の問題を特定できます。
11. 補足情報
- 一般的なユースケース:
- 家庭内ネットワークでプリンターやスマート家電を接続する場合。
- 会議室で参加者が一時的にネットワークを構築し、ファイルを共有する場合。
- IoTデバイスを工場内ネットワークに接続する場合。
- ネットワークに接続された組み込み機器が、初期設定やメンテナンスを行う場合。
- 実装例や参考コード:
- ほとんどのプログラミング言語やOSに、ソケットAPIを使ったLink-Localアドレスの利用例があります。
- オープンソースのライブラリや、GitHubなどのコードリポジトリで、実装例を探すことができます。
- 関連ツールやライブラリ:
- Wireshark: パケットキャプチャツール
ip
コマンド (Linux): ネットワーク設定ツールnetsh
コマンド (Windows): ネットワーク設定ツール
- トラブルシューティングガイド:
- ネットワークインターフェースの状態を確認します。
- IPアドレスが正しく設定されているか確認します。
- ARP/NDPのメッセージをキャプチャし、問題の原因を特定します。
- OSやネットワーク機器のログを確認します。
- 用語集:
- Link-Localアドレス: 同じネットワークセグメント内でのみ有効なIPアドレス
- APIPA: IPv4におけるLink-Localアドレスの自動設定機能
- NDP: IPv6における近隣探索プロトコル
- ARP: IPv4におけるアドレス解決プロトコル
- NS: NDPのNeighbor Solicitationメッセージ
- NA: NDPのNeighbor Advertisementメッセージ
- 参考文献:
- RFC 3927, Dynamic Configuration of IPv4 Link-Local Addresses
- RFC 4861, Neighbor Discovery for IPv6
- RFC 4862, IPv6 Stateless Address Autoconfiguration