ホームページ >バックエンド開発 >Golang >ネット/NetIPでのマスタリングプレフィックス(CIDR)操作

ネット/NetIPでのマスタリングプレフィックス(CIDR)操作

DDD
DDDオリジナル
2025-01-25 00:05:09385ブラウズ

Mastering Prefix (CIDR) Operations in net/netip

この記事は、CIDR表記でIPネットワークを表現するための強力なツールである

パッケージのnet/netipタイプを掘り下げています。 実用的なアプリケーションとベストプラクティスに焦点を当てて、その機能を調査します。 Prefix

理解 タイプは、CIDR表記を使用してIPアドレスの範囲を使用して作業することを簡素化します。 例は次のとおりです Prefix :256 IPv4アドレス(192.168.1.0から192.168.1.255)を表します

Prefix:大規模なIPv6ネットワークを表します。

  • 192.168.1.0/24プレフィックスの作成と解析
  • 2001:db8::/32基本的なプレフィックスの作成と解析:

キー検証ルールが適用されます:

有効なビットカウント(IPv4の場合は0-32、IPv6の場合は0-128) アドレスのゼロホスト部分

有効なアドレス。

<code class="language-go">package main

import (
    "fmt"
    "net/netip"
)

func main() {
    // Parse from CIDR string
    prefix, err := netip.ParsePrefix("192.168.1.0/24")
    if err != nil {
        panic(err)
    }

    // Create from Addr and bits
    addr := netip.MustParseAddr("192.168.1.0")
    prefix2 := netip.PrefixFrom(addr, 24)

    fmt.Printf("From string: %v\nFrom components: %v\n", prefix, prefix2)
}</code>

    メソッド
  • の探索
  • 必須
  • メソッドを調べてみましょう。
基本的なプロパティ:

Prefix

ネットワーク操作:

封じ込めおよびオーバーラップチェックが重要です:Prefix

実世界のアプリケーション

<code class="language-go">func explorePrefix(p netip.Prefix) {
    // Get the network address
    addr := p.Addr()
    fmt.Printf("Network address: %v\n", addr)

    // Get the prefix length (bits)
    bits := p.Bits()
    fmt.Printf("Prefix length: %d\n", bits)

    // Check if it's IPv4 or IPv6
    fmt.Printf("Is IPv4: %v\n", p.Addr().Is4())
    fmt.Printf("Is IPv6: %v\n", p.Addr().Is6())

    // Check if it represents a single IP
    fmt.Printf("Is single IP: %v\n", p.IsSingleIP())
}</code>
アクション中の

を見てみましょう。

1。 IPアドレス管理(IPAM)システム:
<code class="language-go">func networkOperations() {
    network := netip.MustParsePrefix("192.168.1.0/24")

    // Check if an IP is in the network
    ip := netip.MustParseAddr("192.168.1.100")
    fmt.Printf("Contains IP? %v\n", network.Contains(ip))

    // Check if a smaller network is contained
    subnet := netip.MustParsePrefix("192.168.1.0/25")
    fmt.Printf("Contains subnet? %v\n", network.Contains(subnet.Addr()))

    // Check if networks overlap
    other := netip.MustParsePrefix("192.168.1.128/25")
    fmt.Printf("Overlaps? %v\n", network.Overlaps(other))
}</code>

2。サブネット計算機:

Prefix

3。ファイアウォールルールマネージャー:

<code class="language-go">// ... (IPAM struct and methods omitted for brevity, refer to original article) ...</code>

高度な操作:サブネット部門とネットワーク集約は、元の記事で説明されています。

<code class="language-go">// ... (SubnetInfo struct and AnalyzeSubnet function omitted for brevity, refer to original article) ...</code>
ベストプラクティス

<code class="language-go">// ... (Action, Rule, Firewall structs and methods omitted for brevity, refer to original article) ...</code>
入力検証:

常にCIDR入力を検証して、エラーを防止します ipv4/ipv6処理:

両方のアドレスファミリを正しく処理します。

メンバーシップの場合は

    効率的なネットワークメンバーシップチェックには
  • メソッドを使用します。
  • パッケージの
  • タイプは、複雑なネットワーク操作を大幅に簡素化します。 その機能を理解し、ベストプラクティスに従うことにより、堅牢で効率的なネットワーク関連のアプリケーションを構築できます。

以上がネット/NetIPでのマスタリングプレフィックス(CIDR)操作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。