首页 > 其他分享 >区分公有地址和私有地址, golang实现

区分公有地址和私有地址, golang实现

时间:2024-07-02 22:09:06浏览次数:22  
标签:私有 0.0 公有 golang 地址 互联网 ip4

  区分公有地址(Public IP Addresses)和私有地址(Private IP Addresses)主要依据它们的分配、使用范围以及是否能在全球互联网上直接路由。   以下是一些关键区别:     分配和管理:     公有地址:由互联网地址分配机构(Internet Assigned Numbers Authority, IANA)管理和分配,确保全球唯一性。组织或个人需要向互联网服务提供商(ISP)申请获得公有地址,以便设备能够直接接入互联网并被全球其他设备识别和通信。     私有地址:由IANA预留的一系列地址,专门用于组织内部网络,无需向ISP申请,也不需全球唯一。这些地址不能直接在互联网上路由。     地址范围:     私有地址范围:   Class A: 10.0.0.0 到 10.255.255.255   Class B: 172.16.0.0 到 172.31.255.255   Class C: 192.168.0.0 到 192.168.255.255     公有地址则涵盖了除上述私有地址范围之外的所有IPv4地址空间。     使用场景:     公有地址:通常分配给需要直接访问互联网的服务器、路由器出口等,或者任何需要从全球互联网上可直接访问的设备。     私有地址:用于企业内部网络、家庭网络等封闭环境,旨在节省公有IP地址资源,增加网络配置的灵活性,并提升安全性。     路由:     公有地址:可以直接在互联网上路由,全球唯一,可以被任何互联网上的设备直接访问。     私有地址:在互联网上不可路由,要使私有地址的设备能够访问互联网,通常需要通过网络地址转换(Network Address Translation, NAT)技术,将私有地址转换为一个或多个公有地址。     因此,判断一个IP地址是公有还是私有,最直接的方法是检查其是否落在上述私有地址的范围内。如果不在私有地址范围内,则该地址是公有地址。     以下是 golang 的检测是否是私有地址的实现:  $GOROOT/src/net/ip.go

func (ip IP) IsPrivate() bool {
    if ip4 := ip.To4(); ip4 != nil {
        // Following RFC 1918, Section 3. Private Address Space which says:
        //   The Internet Assigned Numbers Authority (IANA) has reserved the
        //   following three blocks of the IP address space for private internets:
        //     10.0.0.0        -   10.255.255.255  (10/8 prefix)
        //     172.16.0.0      -   172.31.255.255  (172.16/12 prefix)
        //     192.168.0.0     -   192.168.255.255 (192.168/16 prefix)
        return ip4[0] == 10 ||
            (ip4[0] == 172 && ip4[1]&0xf0 == 16) ||
            (ip4[0] == 192 && ip4[1] == 168)
    }
    // Following RFC 4193, Section 8. IANA Considerations which says:
    //   The IANA has assigned the FC00::/7 prefix to "Unique Local Unicast".
    return len(ip) == IPv6len && ip[0]&0xfe == 0xfc
}

使用:

ipv4Private1 := net.ParseIP("10.255.0.0")
fmt.Println(ipv4Private1.IsPrivate()) // true

 

Link:https://www.cnblogs.com/farwish/p/18280636

标签:私有,0.0,公有,golang,地址,互联网,ip4
From: https://www.cnblogs.com/farwish/p/18280636

相关文章

  • Nginx(openresty) X-Forwarded-For $proxy_add_x_forwarded_for 多层代理 通过map分割
    1nginx配置#配置多层反向代理,配置如下proxy_passhttp://ip或者域名/;proxy_connect_timeout60;proxy_send_timeout60;proxy_read_timeout60;proxy_set_headerUpgrade$h......
  • 会声会影2024破解版永久免费版本下载地址
    会声会影2024破解版下载是一款功能强大的视频编辑软件,它提供了许多令人兴奋的功能和工具,使用户可以轻松地创建专业水平的视频。以下是该软件的一些主要特点:会声会影全版本绿色安装包获取链接:(抓紧保存以防失效)https://pan.quark.cn/s/06e2f90a8526会声会影最新一键安装包下载......
  • 在开发环境中使用 RawCap 和 Wireshark 排查本地回路地址
    如何使用RawCap和Wireshark排查本地网络请求中的404错误开发微服务应用时,正确配置网络请求的转发至关重要。本文将通过一个具体示例来展示如何使用RawCap和Wireshark来监控和分析本地回路请求,并排查导致HTTP404错误的可能原因。背景在本例中,用户的浏览器请求经过多......
  • 电脑连不上网怎么办?出现未连接到网络,检查代理服务器地址。
    一.打开控制面板说一下我的情况,连不上网络之后,我将网络重置了,没想到之后还是这样的情况,不仅连不上校园网,而且自己手机开的热点也连不上。可以尝试下面的方法解决:1.关掉防火墙 2.打开控制面板,找到Internet选项 弹出下面的对话框,按照图示操作 点击局域网设置,弹出......
  • 银河麒麟高级服务器操作系统V10 SP3 2403 下载地址
      iso下载:https://distro-images.kylinos.cn:8802/web_pungi/download/share/l4IytxvsPQnbJK6T2krVHa0GANe9Mf7i/Kylin-Server-V10-SP3-2403-Release-20240426-x86_64.isoisoarm版下载:https://distro-images.kylinos.cn:8802/web_pungi/download/share/0EBoRu1yPhkcA8qxLFe......
  • 国产操作系统上通过主机名查ip地址 _ 统信 _ 麒麟 _ 中科方德
    原文链接:国产操作系统上通过主机名查ip地址|统信|麒麟|中科方德Hello,大家好啊!今天给大家带来一篇在国产操作系统上通过主机名查找IP地址的文章。通过主机名查找IP地址是网络管理和故障排除中常见的操作之一。本文将详细介绍如何在国产操作系统(如统信UOS、麒麟KOS、中......
  • MyBatis-利用切面实现公有字段自动填充(非MyBatisPlus方式)
    需求:在MyBatis框架中,如何对createBy,createTime,updateBy等这些公有字段实现自动填充呢?网上搜了很多,实现的方案全是采用集成MyBatisPlus,利用其封装好的方法来实现的。。。。。数据准备:1、准备一张数据库表CREATETABLE`user`(`id`varchar(36)NOTNULL,`username`......
  • golang 实现tcp socket 通信
    都说golang适合网络编程,知道今天写了tcp我才知道他到底有多简洁。(虽然已经对着golang的webrtc研究很久了)首先是client端代码:packagemainimport( "bufio" "fmt" "net")funcmain(){ conn,err:=net.Dial("tcp","192.168.1.106:8080") iferr!=ni......
  • RabbitMQ延时任务通过死信队列实现(golang)
    最近在一个项目中,需要实现在用户上传图片30分钟后,删除对应图片,以保证用户隐私。我们使用rabbitmq来实现。基于rabbitmq实现延时任务有两种方式,一种为队列ttl+死信exchange,另一种为安装插件(https://github.com/rabbitmq/rabbitmq-delayed-message-exchange)。其中安装......
  • Golang:go-querystring将struct编码为URL查询参数的库
    Golang:go-querystring将struct编码为URL查询参数的库原创 吃个大西瓜 CodingBigTree 2024-05-0908:30 北京go-querystringisaGolibraryforencodingstructsintoURLqueryparameters.译文:go-querystring将struct编码为URL查询参数的Golang库文档ht......