127.0.0.1和0.0.0.0分析

来源:互联网 发布:linux增加权限命令 编辑:程序博客网 时间:2024/06/16 07:35

127.0.0.1和0.0.0.0

一、说明:

  1. IP地址表示:

    1.IP地址由两个部分组成,net-id和host-id,即网络号和主机号。

    1. net-id:表示ip地址所在的网络号。
    2. host-id:表示ip地址所在网络中的某个主机号码。

    2.IP-address ::= { <Network-number>, <Host-number> }

  2. IP地址分类:

    IP地址一共分为5类,即A~E,它们分类的依据是网络号和主机号,全0和全1的都保留不用。

    1. A类地址:第一个字节为网络号,后三个字节为主机号。该类IP地址的最前面为“0”,所以地址的网络号取值于1~126之间。一般用于大型网络。
    2. B类地址:前两个字节为网络号,后两个字节为主机号。该类IP地址的最前面为“10”,所以地址的网络号取值于128~191之间。一般用于中等规模网络。
    3. C类地址:前三个字节为网络号,最后一个字节为主机号。该类IP地址的最前面为“110”,所以地址的网络号取值于192~223之间。一般用于小型网络。
    4. D类地址:是多播地址。该类IP地址的最前面为“1110”,所以地址的网络号取值于224~239之间。一般用于多路广播用户。
    5. E类地址:是保留地址。该类IP地址的最前面为“1111”,所以地址的网络号取值于240~255之间。

    其中,ABC三类地址为单播地址(unicast),用于一对一通信,是最常用的。

  3. 特殊IP地址:

    1. {0,0}:网络号和主机号都全部为0,表示“本网络上的本主机”,只能用作源地址。
    2. {0,host-id}:本网络上的某台主机。只能用作源地址。
    3. {-1,-1}:表示网络号和主机号的所有位上都是1(二进制),用于本网络上的广播,只能用作目的地址,发到该地址的数据包不能转发到源地址所在网络之外。
    4. {net-id,-1}:直接广播到指定网络的所有子网络上。只能用作目的地址。
    5. {net-id,subnet-id,-1}:直接广播到指定网络的指定子网络上。只用作目的地址。
    6. {net-id,-1,-1}:直接广播到指定网络的所有子网络上。只能用作目的地址。
    7. {127,}:即网络号为127的任意ip地址。都是内部主机回环地址(loopback),永远都不能出现在主机外部的网络中。

二、127.0.0.1

127.0.0.1是一个回环地址,这个地址也是给本机loop back接口所预留的IP地址,但是并不表示”本机”。

  1. 测试使用:

    1.收到127.0.0.1的响应表示主机的TCP/IP安装成功。
    2.此方法只是测试网络层的ip联通性。此响应来自网络层。
    3.无法测试出具体TCP/IP的配置(地址、掩码、和网关)是否正确,也无法测试出网卡是否正常,因为数据在离开IP层之前就已经被送回去了。

  2. 本机进程间的通信:

    1.如apache+php+mysql这样的应用环境,应用程序与mysql数据库同时存在于同一个系统上面,常用环回地址127.0.0.1做套接字的ip地址。
    2.使用环回地址主要的原因是方便和稳定,如:网络接口的地址可能因为某种原因被更改(如服务器搬迁到别的地理位置),或者应用被迁移到另外的系统,导致ip改变,而使用环回地址就不会受ip地址改变的影响。

  3. DDos攻击防御:

    网站收到DDos攻击之后,将域名A记录到127.0.0.1,即让攻击者自己攻击自己。

三、0.0.0.0

  1. 说明:0.0.0.0表示整个网络(此网络上的此主机的源地址)

    • RFC:
      0.0.0.0/8 - Addresses in this block refer to source hosts on "this"
      network. Address 0.0.0.0/32 may be used as a source address for this
      host on this network; other addresses within 0.0.0.0/8 may be used to
      refer to specified hosts on this network ([RFC1122], Section 3.2.1.3).

      1. 0.0.0.0/8可以表示本网络中的所有主机
      2. 0.0.0.0/32可以用作本机的源地址
      3. 0.0.0.0/8也可表示本网络上的某个特定主机
    • 注:在路由器配置中可用0.0.0.0/0表示默认路由,作用是帮助路由器发送路由表中无法查询的包。如果设置了全零网络的路由,路由表中无法查询的包都将送到全零网络的路由中去。

  2. 作用:

    1. 当一台主机还没有被(DHCP)分配一个IP地址的时候,用于表示主机本身。
    2. 用作默认路由,表示”任意IPV4主机”。
    3. 用来表示目标机器不可用。
    4. 用作服务端,表示本机上的任意IPV4地址。

四、总结:

  • 127.0.0.1 是一个环回地址。并不表示“本机”。
  • 0.0.0.0才是真正表示“本网络中的本机”。
  • 一般我们在服务端绑定端口的时候可以选择绑定到0.0.0.0,这样我的服务访问方就可以通过我的多个ip地址访问我的服务(只需要内网访问的服务,可以只绑定内网地址,否则会出现内网能访问,外网不能访问)

五、参考:

  • 链接:
    https://tools.ietf.org/html/rfc5735#section-3
    https://en.wikipedia.org/wiki/0.0.0.0
    https://fossbytes.com/ip-address-0-0-0-0-meaning-default-route-uses/
    http://baike.baidu.com/item/127.0.0.1
    http://www.cnblogs.com/hnrainll/archive/2011/10/13/2210101.html
    http://blog.onlycatch.com/post/7e371ca28621
原创粉丝点击