计算机网络 - 电脑如何获取到IP的
Posted 灯火阑处
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络 - 电脑如何获取到IP的相关的知识,希望对你有一定的参考价值。
计算机网络内容目录
自动获取IP
我们的电脑分手动设置IP和自动获取IP,手动设置IP地址当然IP是自己设定的,那么自动获取IP是从哪里得到的IP地址,IP地址又是谁分配的呢。
一般没有特殊需求大家基本上是设置的 动态获取IP,因为如果自己静态配置的话,容易出错,例如你不小心配置了一个已经被其他人在使用的 IP 地址。所以我们一般选择的是动态获取IP。注意,这里的 IP地址不仅仅是指主机的唯一标识,还指DNS、网关等IP 地址。
客户端请求 ip
可能很多人都知道,是通过DHCP 服务器 来获取 IP 的,如果要给DHCP 服务器发报文来获取IP,必须得知道 DHCP 服务器的IP是多少,自己客户端的源IP 又是多少,当我们电脑刚开机,现在啥也不知道,第一步该如何做呢?如何发送报文呢?
之前我们说过广播和MAC地址的概念,广播这个东西很暴力,向所有局域网中得主机发送消息,告诉所有人,我急需一个 IP 地址。于是,我们发了一个广播通知了所有人。广播的目的 ip 是255.255.255.255,目的端口是 67,为了让别人知道它是来请求一个 ip 的,我们的客户端会把 0.0.0.0作为自己的源 ip,源端口是68 。意在告诉别人:我现在啥也没有,急需一个 ip,哪位老铁能给我提供一个 ip。
我们把这个请求 ip 的报文称之为discover 报文。
这里发送的报文都是采用 UDP 报文,而不是 TCP 报文
目的 ip 填255.255.255.255 代表这是一个广播报文,会发给局域网内的所有主机。其他主机收到广播报文之后,会进行判断这个广播报文是否是发给自己的,如果是发给自己的,则进行处理,否则就把这个广播报文丢弃。
这个时候, DHCP 服务器终于收到了我的广播,这个时候问题来了,DHCP 服务器是如何知道我是来请求一个 ip 的呢?
为了解决这个问题,我们需要在报文里做一个标记,告诉 DHCP 服务器我是来请求报文的,于是,啥也没有的我,在报文的源地址里填了 0.0.0.0。当DHCP服务器看到报文的源地址是 0.0.0.0时, 就知道我还没有被分配过 ip,急需一个ip来去冲浪了。
于是,DHCP服务器赶紧找了一个没有被使用ip地址发给我,包括 ip 地址,子码掩码,网关,ip 的有效期等信息,并且把这个 ip 地址标记为 已使用的状态。DHCP服务器要把IP通过报文发送给需求方,但是源IP是 0.0.0.0,怎么发送呢。通过MAC地址。在 discover报文 中,就会包含它的 MAC 地址了,DHCP 服务器,只需要发一个广播报文就可以了,广播报文的源ip是 DHCP 服务器自己的 ip,源端口是 67 ,目的地址是 255.255.255.255,目的端口是 68。
我们把 DHCP 提供 ip 地址的报文称之为 offer报文。当我们客户主机收到IP地址后就可以上网了
如果 DHCP 服务器没有在我们所在的局域网里怎么办?这个时候,这个discover 报文 就会通过我们的网关来进行传递,并且会把源 ip 替换成网络的 ip,源端口是 68,这里涉及到 NAT 地址到转换。可以看看我之前写的文章
DHCP 服务器收到报文之后,就可以根据源端口 68 来判断这是一个 discover 请求 报文了。就会把 offer 发给网关,网关再发给我们的主机。
关于租期
在DHCP客户端的租约时间到达 1/2 时,客户端会向为它分配 IP 地址的DHCP服务器发送 request 单播报文,以进行 IP 租约的更新。如果服务器判断客户端可以继续使用这个 IP 地址,就回复 ACK 报文,通知客户端更新租约成功。如果此IP地址不能再分配给客户端,则回复 NAK 报文,通知客户端续约失败。
如果客户端在租约到达 1/2 时续约失败,客户端会在租约到 7/8 时间时,广播发送 request 报文进行续约。DHCP服务器处理同首次分配 IP 地址的流程。
总结
255.255.255.255这个地址一般用来广播的时候使用,而0.0.0.0这个地址可以代表这是一个还没有分配 ip 的主机。
不过0.0.0.0还有其他作用,代表主机还没有分配ip地址只是其中的一个用处。例如:充当默认路由来使用,当一个路由器要发送路由表中无法查询的包时,如果设置了全零网络的路由时,我们就可以把这个包丢给全零网络的路由。
以上是关于计算机网络 - 电脑如何获取到IP的的主要内容,如果未能解决你的问题,请参考以下文章