0.0.0.0和255.255.255.255两个特殊ip地址有什么用?

作者:百哥
链接:https://www.zhihu.com/question/267097519/answer/1217741983
来源:知乎

提到“地址”,我们会想到快递,收发快递时候,得有发件人地址和收件人地址,才能保证快递能正确的送达目的地,比如这样ip地址其实就是互联网上的地址,全称Internet Protocol Address,我们在网上刷知乎啊,刷美剧啊,和师妹聊天啊,其实就是一个一个数据包在互联网上收发的过程。知乎有个ip,我们电脑有个ip,这篇回答就从知乎发到了电脑上。b站有个ip,我们电脑有个ip,后浪就从b站发到了电脑上。师妹手机有个ip,我们电脑有个ip,师妹消息总是不来,不知道为什么。那么,我们电脑的ip地址是什么样呢百度一下,怎么查看ip地址,我们能看到这样的内容ip地址分为ipv4和ipv6,当前主流是ipv4可以看出现在这台电脑的ip地址是192.168.11.165那么这个地址是怎么来的呢,我们打开电脑就开始刷知乎刷b站和师妹聊天,并没有设置地址呀在我们网络里有个“dhcp服务器”,dhcp服务器的作用就是给各个电脑(或手机)自动分配ip地址。那dhcp是如何工作的,这里就涉及到0.0.0.0和255.255.255.255这两个特殊地址的作用第一步,电脑开机,没地址,会发出一个请求地址的数据包。这个数据包叫dhcp discover,是要发给dhcp服务器的,向dhcp服务器请求地址。现在问题来了,是先有鸡还是先有蛋的问题。鸡是由蛋孵出来的,所以得先有蛋。蛋是鸡下的,所以得先有鸡。互联网上的报文必须有源地址和目标地址,所以得先有地址才能把数据包发出去。现在要发个包给dhcp服务器,但是没有地址,这个包怎么发出去呢?鸡和蛋的千古难题,无法考证但是dhcp是这么做的电脑发出的包,没地址没关系,就把源地址写成0.0.0.0,所以数据包中看到这个地址,说明源主机暂时还没有地址,但是为了遵循互联网协议标准,先把地址写上0.0.0.0目标地址应该是dhcp服务器,但是dhcp服务器是谁也不知道呀,这里就把目标地址写成255.255.255.255,这个特殊地址代表“广播”,顾名思义,就是给所有人都发。数据包的内容也很简单,意思就是“请dhcp服务器回答,我需要个地址”那么无关主机收到,就会丢弃这个包,因为自己不是dhcp服务器,不回答。dhcp服务器收到,那么就会履行他的职责,给电脑分配一个地址。如图,dhcp discover包,源地址是0.0.0.0,目标地址是255.255.255.255现在看dhcp工作的第二步,发offerdhcp服务器收到请求后,会给电脑分配地址,这也是通过一个数据包返回给电脑的。电脑收到这个包,就会根据dhcp协议为自己配上地址。等下,问题又来了,刚才说了电脑还没地址,那么dhcp服务器是怎么把这个包发给电脑的的呢?虽然电脑没ip地址,但是电脑有另外一个地址,“mac地址”,也就是前面那张图片上的“物理地址”,dhcp服务器也可以通过mac地址将数据包发给电脑,这样电脑收到后,就会给自己配上ip地址了。听起来很复杂,既然用mac地址就可以,为什么非得配ip地址,这么麻烦答案是这样的,虽然可以用mac地址通信,但是只限于本地通信,也就是一个很小的局域网,没办法加入互联网,所以也没办法刷知乎,看b站,和师妹聊天了。所以还是得有ip地址。现在来看dhcp工作的第二步,也就是dhcp服务器给电脑发的dhcp offer包。这里看到目标mac地址打开offer包,会看到服务器准备给电脑分配的地址。然后第三步,电脑会通过发送dhcp request包,确定使用这个地址。服务器明明都把地址发过来了,为什么电脑还要再申请一次呢?是因为网络中为了可靠性,可能会部署多台dhcp服务器,这样电脑可能会收到多个offer,到底使用哪个地址,则需要再发一个dhcp request来确认。服务器也是收到dhcp request后,才会真正的把这个地址分配出去。最后一步,dhcp服务器通过ack包,真正的把地址分配给电脑编辑于 2020-05-12​赞同 19​​2 条评论​分享​收藏​喜欢收起​更多回答车小胖​计算机网络 话题的优秀回答者5,435 人赞同了该回答IP地址* 0.0.0.0当主机启动时,如初生的婴儿(0.0.0.0),没有身份信息,需要向外界大声哭泣,“大神,请赐予我一个名字吧”!(Discovery)婴儿的呼唤被广播了出去,使用的是255.255.255.255这个地址。* 255.255.255.255255.255.255.255是一个特殊的广播地址,意味着所有的主机,有同学会好奇地问,是否是指互联网上所有主机?No!因为255.255.255.255传播范围非常有限,到了广播域的边界(网关)会自动终结,如果把广播比作谣言,那么网关是什么呢?“谣言止于智者”中的智者!那么能听到婴儿哭泣的都有哪些人?* 婴儿自己婴儿听到也没有用,因为无法给自己起名字,左耳进右耳出。* 大神大神,就是这里的DHCP Server,专业给别人起名字,应答了婴儿的啼哭,是这么回应的:“小宝贝,你的名字是192.168.0.2,喜欢吗?”(Offer)* 广播域其它主机其它主机也听到了,但是由于没有起名字(DHCP Server / Listening UDP Port 67)的功能,当作什么事没有。婴儿的反应婴儿听到了大神的天籁之音,停止了哭泣,于是很快乐地回复了大神的美意(Offer)“大神,我很喜欢192.168.0.2这个名字,就它了” (Request)大神最后的确认看到了小婴儿接受了自己的推荐的名字,大神很愉快滴回复了小婴儿:“祝一切都好,再见!” (ACK)大神为了防止 192.168.0.2这个名字被其他小朋友使用,将这个名字标记为“已使用”状态。盐选专栏告别瞎忙:实用时间管理术作者 纪元去试读​展开阅读全文​​赞同 5435​​248 条评论​分享​收藏​喜欢「已注销」62 人赞同了该回答因为你截图是DHCP的,所以就先说一下DHCP这里为什么是这样第一步,DHCP服务器发现0→ffffffff,首先,client side(发送方)不知道自己的ip地址,所以用0,表示“我不是我没有”,而client side不知道server的位置,所以要问所有人你是不是dhcpd,所以用ffffffff,表示“@所有人”第二步,offer,dhcpd向client提供备选ip地址server→ffffffff,这里因为client还没有ip,所有server只能用这个方式来告诉client第三步,request,client选择ip地址0→ffffffff,0是因为client还没有ip地址,ffffffff是因为网络上可能不只有一个dhcpd,所以依然要@所有人,通知其他的dhcpd“这个client被xxxx承包了”第四步,ACK,dhcpd通知client选择生效server→ffffffff,这里依然用广播地址,因为client还没有地址

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值