什么?你不知道0.0.0.0和255.255.255.255这两个地址是干嘛的?

在我们电脑的ip配置里,有静态配置 ip 地址和动态获取 ip 地址两种选择。

我敢保证绝大部分人使用的都是动态获取 ip 地址,因为如果自己静态配置的话,容易出错,例如你不小心配置了一个已经被其他人在使用的 ip 地址。所以我们一般选择的是动态获取 ip 地址。注意,这里的 ip 地址不仅仅是指主机的唯一标识,还指DNS、网关等 ip 地址。

对于动态获取 ip 地址,如果你的电脑关机重启了之后,此时可以说你的电脑如同一个初生的婴儿,啥 ip 也没有。这个时候最重要的事情就是让自己获得一个 ip ,好让自己可以去冲浪,可是问题来了,你该给谁发送报文以此来获取 ip 呢?

有人可以会说,我可以给 DHCP 服务器发送一个报文来动态获取 ip,然而问题是,你知道 DHCP 服务器的 ip 是多少吗?你不知道,你是一个刚出生的婴儿,你啥也不知道。

居然我们不知道该找谁来给我们分配一个 ip 地址,那就只能暴力一点,发个广播吧,告诉所有人,我急需一个 ip 地址。于是,我们发了一个广播通知了所有人。

目的 ip 填 255.255.255.255 代表这是一个广播报文,会发给局域网内的所有主机。其他主机收到广播报文之后,会进行判断这个广播报文是否是发给自己的,如果是发给自己的,则进行处理,否则就把这个广播报文丢弃。

这个时候, DHCP 服务器终于收到了我的广播,这个时候问题来了,DHCP服务器是如何知道我是来请求一个 ip 的呢?

为了解决这个问题,我们需要在报文里做一个标记,告诉 DHCP服务器我是来请求报文的,于是,啥也没有的我,在报文的源地址里填了 0.0.0.0。当DHCP服务器看到报文的源地址是 0.0.0.0时, 就知道我还没有被分配过 ip,急需一个ip来去冲浪了。

于是,DHCP服务器赶紧找了一个没有被使用ip地址发给我,并且把这个 ip 地址标记为 已使用的状态。

有人可能会说,我没有 ip 地址,DHCP服务器怎么发送给我呢?好吧,我没有 ip 地址,但我有全球唯一的 Mac地址啊。这样,我就能顺利着拿到我的 各种 ip参数了。

总结下:

255.255.255.255这个地址一般用来广播的时候使用,而0.0.0.0这个地址可以代表这是一个还没有分配 ip 的主机。

不过0.0.0.0还有其他作用,代表主机还没有分配ip地址只是其中的一个用处。例如:充当默认路由来使用,当一个路由器要发送路由表中无法查询的包时,如果设置了全零网络的路由时,我们就可以把这个包丢给全零网络的路由。

作者介绍

在校生一枚,目前维护公众号 【苦逼的码农】,欢迎你关注一起学习,后台回复【666】送你一份我精选的电子书单

原文地址:https://www.cnblogs.com/kubidemanong/p/10120615.html

时间: 2024-08-04 20:12:08

什么?你不知道0.0.0.0和255.255.255.255这两个地址是干嘛的?的相关文章

.net Mongo Driver 1.0与2.0的对比与2.0的优化

前言 最近闲的时间有点多,所以还是写博客吧. 有人说Mongo 2.0的写法难以把控,好多地方不知道咋用,所以坚持用1.0(不愿意去尝试2.0),我感觉不可理解.所以写篇博客比较下. Mongo C#驱动1.0到2.0设计方面的差别非常大. 正文 先说1.0吧,更像是Mongo 各功能的直译,所以写法与mongo原生查询修改等比较类似,易上手.但是设计上确实存在很多问题.简单说几点: a.在query的构建方面,虽然有问题,但是勉强能接受 1 var modelCursor = collecti

sata2.0和sata3.0的区别

sata是指电脑主板上的硬盘接口,3.0是2.0的升级版本,发布于2009年,所以2010年之前的电脑主板基本都只提供sata2.0接口,如果你不知道自己的电脑是sata2.0还是sata3.0,想想你购买这部电脑的时间:如果你的电脑购买于2010年及之后,则主板可能同时提供sata2.0和sata3.0接口,,可使用鲁大师等硬件检测工具来进一步确认,sata3.0的接口兼容2.0,所以如果你的电脑只提供3.0,仍可使用2.0的硬盘: sata2.0和sata3.0最关键的区别在于传输速度,sa

Android从1.0到 6.0各版本的差别

Android 系统从2008年到现在(2016年4月),八年时间里版本从1.0一直升到6.0,由于Android系统更新速度快,导致市面上的Android设备运行的Android系统版本不一(专业术语叫碎片化严重)2016年的最新Android版本分布图(截止到2016年1月) ,从图中可以知道目前主流的系统是三款,但是还是有些版本的系统还在使用,作为Android程序开发者,必须尽量照顾到各种版本的系统,否则你提出的解决方案是不完善的,对于Android开发者来说,很有必要知道android

探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用

前言 首先说明这并不是一个教程贴,而记事本应用是网上早有的案例,对于学习 vuex 非常有帮助.我的目的是探索 vuex 2.0 ,然后使用 vue 2.0 + vuex 2.0 重写这个应用,其中最大的问题是使用 vue-cli 构建应用时遇到的问题.通过这些问题深入探索 vue 以及 vuex . 我对于框架的学习一直断断续续,最先接触的是 react,所以有一些先入为主的观念,喜欢 react 更多一点,尤其在应用的构建层面来说.之所以断断续续,是因为自己 JS 基础较弱,刚开始学习的时候

127.0.0.1和0.0.0.0地址的区别

在进行网络编程时,会将服务器的IP地址设置为127.0.0.1.然后绑定端口,开始监听.但是对于服务器来说,除了127.0.0.1,还有内网IP和公网IP,绑定本地的话只能局域网传输,所以,应该怎么绑定? 先复习一下IP类型: IP地址一共分为5类,即A-E,它们分类的依据是其net-id所占的字节长度以及网络号前几位. A类地址:网络号占1个字节.网络号的第一位固定为0. B类地址:网络号占2个字节.网络号的前两位固定为10. C类地址:网络号占3个字节.网络号的前三位固定位110. D类地址

本机ip、127.0.0.1和0.0.0.0区别及内环流量

所谓内环流量 简单的说是指 计算机内部,程序间通讯产生的流量,或者叫 本地流量,对应的是来自网络的流量. 比如,你安装了卡巴斯基,avast 或者 NOD32,这些程序都有 网络监控功能,会接管来自网络的流量,当你上网.下载的时候,上传.下载都会被 卡巴斯基.NOD32 接管,然后再分发给 实际的进程.在不区分内环流量的时候,你会发现所有带网络监控功能的安全软件上传.下载量都非常大,这就是因为他们接管网络流量导致的. 别外常见的情况是,使用 在线视频类软件遇到的,在优酷看视频的时候,流量都被 i

C#最新功能(6.0、7.0)

原文:C#最新功能(6.0.7.0) 一直用C#开发程序,.NET的功能越来越多,变化也挺大的,从最初的封闭,到现在的开源,功能不断的增加,一直在进步.作为C#的强烈支持者,C#的变化,我不能不关注,这篇文章主要介绍,C#6.0和C#7.0增加的功能.C#的发展史和.NET以前的版本,请看C#和.NET版本,这边文章中有介绍. C# 6.0版 1. 静态导入 using static 增强功能可用于导入单个类的静态方法.例如:using static System.String;可以直接用Str

NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

转自:http://blog.csdn.net/enjoyyl/article/details/47397505?from=timeline&isappinstalled=0#10006-weixin-1-52626-6b3bffd01fdde4900130bc5a2751b6d1 NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0环境配置 引言 DIGITS简介 DIGITS特性 资源信息 说明 DIGI

REFORM-3PC.V7.0+FRNC-5PC.V8.0

Bentley.WaterGEMS.V8i.SS5.08.11.05.61 1CD 给水管网建模 REFORM-3PC.V7.0 FRNC-5PC.V8.0 通用加热炉工艺计算软件 REFORM-3PC 烃类蒸汽转化炉的炉膛截面评级程序Steam Hydrocarbon Reforming Simulation Program Chasm.Ventsim.Visual.Premium.v3.8.2.9.build.10.06.2014.Win32_64 1CD Bentley.AutoPIPE.