V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhoudaiyu
V2EX  ›  cURL

cURL 为什么会把十进制数字转为 IP?

  •  1
     
  •   zhoudaiyu · 60 天前 via iPhone · 1579 次点击
    这是一个创建于 60 天前的主题,其中的信息可能已经有所发展或是发生改变。

    curl 8000 会转换为 curl 0.0.31.64 ,后面的 IP 就是把 8000 转为二进制高位补 0,然后再从高位到低位 8 个数字一切割转为十进制。不太明白 curl 为啥这么设计?

    第 1 条附言  ·  60 天前

    学到了学到了,谢谢大家

    12 条回复    2021-04-17 15:41:35 +08:00
    phpfpm
        1
    phpfpm   60 天前
    ip 就是这样啊。。。。
    xiri
        2
    xiri   60 天前
    不止 curl,ping 也是一样的
    gstqc
        3
    gstqc   60 天前
    IPv4 地址是 4 个字节
    可以转换成 integer 的表达形式,取值是 [0, 4294967295], [2^0 - 1, 2^32 - 1]
    在网络数据包中都是用 4 个字节来存储

    1.1.1.1 只是便于人类阅读使用的格式而已
    Tink
        4
    Tink   60 天前 via Android
    没毛病呀
    iseki
        5
    iseki   60 天前 via Android
    小时候还看有教程教过把 IP 转写成十进制,迷惑不懂的人的小把戏(
    crclz
        6
    crclz   60 天前
    《计算机网络》谢希仁
    weyou
        7
    weyou   60 天前 via Android
    ip 地址在计算机内部本来就是用 32bit 的整数来表达的啊。不止 curl,ping,很多网络工具都这样,最常见的比如浏览器。其实这不是这些网络工具的功能,其根本原因是 socket 库里的 inet_aton 函数就支持这个特性。也就是你自己写个需要用到 ip 地址的工具,也会天然支持这个特性。
    nightwitch
        8
    nightwitch   60 天前
    因为 ip 地址的合法表示就是一个 uint32.
    表示成你熟悉的 xxx.xxx.xxx.xxx 只是为了方便人类好读。
    ericls
        9
    ericls   60 天前 via iPhone
    用户输入的永远是 string
    ch2
        10
    ch2   60 天前
    ip 地址本来就是个数字,点分十进制是转化的结果
    TyteKa
        11
    TyteKa   59 天前
    是 libc 做的
    krixaar
        12
    krixaar   59 天前
    当年 COD:MW3 刚出的时候,想在寝室打 Spec OPs 局域网联机,等 teknogods 做补丁,然后他们出的补丁为了好看,IP 地址分成四段还补零,然后寝室就有特定的人连不上,最后发现至少在 Win 上,IP 地址前头带零的当作八进制( ping 127.0.0.9 是可行的,ping 127.000.000.009 是不可行的,因为八进制没有 9 ),还专门跑他们网站上去提了 bug……
    这里面坑是真多。
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2362 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 13:57 · PVG 21:57 · LAX 06:57 · JFK 09:57
    ♥ Do have faith in what you're doing.