查看原文
其他

新手必读的家庭网络通信流程(篇一)-设备IP地址的获取

小白学智能 小白学智能 2024-03-05

当我们在浏览器的地址栏中输入baidu.com,单击回车之后,百度的首页内容便出现在我们面前

这短短不到1s的时间里,究竟发生了哪些事情?


我们将其具体分成两个部分,其一是局域网内设备获取IP地址的过程,IP地址的获取是设备正常上网所必需的;其二是上网过程中,我们完成对一个网址的访问,这个过程所包括的内容


今天,我们先来探索一下在家庭局域网内,设备是怎样获取IP地址的,基于此,我们也能对家庭网络通识知识进行简单的了解


网络基本通讯流程是我们折腾软路由以及从新手到老手过渡所必备的基础知识,希望大家能够看懂本节内容。


内容有点多,瓜子、板凳、笔记本准备好后我们就正式开始啦


首先,我们创建一个常见的家庭网络环境


我们在运营商处拉了一条宽带,他会给我们一个光猫,然后我们会买一个路由器,使用网线将路由器的WAN口与光猫相连,通常情况下,路由器上会标注WAN口和LAN口,路由器通过PPPOE拨号获取运营商分配的公网IP,假设为2.2.2.2。当然也可能是光猫负责拨号,这种情况下路由器获取到的就是光猫分配的内网IP,比如192.168.0.2,总是,不管怎样,路由器的WAN口都会获取到一个IP。


除了WAN口,路由器上还有多个LAN口,为了便于理解,这些LAN口,我们可以将其视为一台单独的交换机,与路由器区分开(假设路由器上有一个虚拟的LAN口,与交换机连接)。



路由器上连接交换机的这个网口会有一个IP地址,假设为192.168.1.1,这个是路由器的内网IP,访问这个IP地址便可以进入到路由器的管理界面,同时,这个IP地址一般也是你家里局域网的网关,家中所有的网络设备都会通过网线或者WiFi的方式连接到这台“交换机”,大部分家庭网络的网络拓扑就是这个样子。


一般我们并不需要进行其他设置,装宽带的师傅会帮我们配置好,确保我们可以正常上网。


接下来,我们需要了解一下局域网内的设备是如何获取上网所必需的IP地址。


假设此时有另外一台电脑要连接到当前的局域网内,假设该电脑获取IP的方式为自动获取




当我们用网线将电脑与“交换机”连接时,一个叫做DHCP的应用层协议便会开始工作,DHCP是用来动态获取IP地址的



在这个过程中,电脑的DHCP客户端会发起一个DHCP请求,找DHCP服务器获取IP地址,这个请求会被一层层的封装。


以TCP/IP四层网络模型为例(应用层、传输层、网络层、网络接口层),每一层都有其特定的任务




数据来到传输层,传输层会指定这个DHCP请求通过什么传输协议发往什么端口,DHCP规定客户端默认使用68号UDP端口,服务端默认使用67号UDP端口,也就是请求会使用UDP的68号端口发往UDP的67号端口,由此可知源端口是68,目标端口是67,使用UDP的方式传输。


接着数据来到网络层,网络层需要确定数据包发给哪个网络设备,也就是负责封装IP地址。


电脑现在的目的是找DHCP服务器要IP地址,但它现在并不知道谁是DHCP服务器,不知道该发给谁。所以干脆一不做二不休,直接发给这个网络里的所有设备,所以目标IP是一个广播IP,即255.255.255.255,同时,接收方也需要知道是谁发给它的数据,所以还需要加上源IP,但是电脑现在并没有IP,所以会直接用0.0.0.0这个IP,接着数据会继续向下来到网络接口层,这一层会封装MAC地址,每个网卡都有唯一的MAC地址,也叫物理地址。


源MAC地址是你电脑网卡的MAC地址,这里假设为CC:CC:CC:CC:CC:CC,同样由于不知道数据该发给谁,所以目标MAC是FF:FF:FF:FF:FF:FF的广播MAC地址,然后这个经过层层封装的数据包会从电脑的网卡接口发出,顺着网线来到“交换机”的1号LAN口






普通的家用交换机是一个只能解析网络接口层数据的设备,也就是说它只能看到MAC地址,里面的IP和端口等信息对于它而言属于毫无规则的数据,它并不能看懂


交换机内部有一个MAC地址映射表,它会根据MAC地址对数据进行转发,至于转发的内容是什么并不关心



交换机从LAN口收到数据后,会将该LAN口对应的MAC地址保存在映射表中,然后查看目标MAC,发现是FF:FF:FF:FF:FF:FF的广播MAC地址,于是交换机会将电脑的数据给每一个连接的接口都发一份,当另一台电脑收到数据包时,会根据网络模型一层一层的解封装


首先网络接口层会查看目标MAC地址是不是发给自己的,发现是FF:FF:FF:FF:FF:FF,虽然不是自己的MAC地址DD:DD:DD:DD:DD:DD(这里的电脑通过网线连接在“交换机”的LAN4口),但这是一个广播MAC地址,所以还是会接受它,继续向上来到网络层,目标IP是255.255.255.255,虽然不是自己的IP,但这是一个广播IP,此电脑也会接受这个数据包。


来到传输层,发现是通过UDP的方式发给67号端口,由于此电脑并没有运行DHCP服务,所以并没有监听67号端口,于是便会将这个数据包丢掉。



同样的数据来到路由器,一般的家用路由器会提供很多服务,比如DHCP、DNS、DDNS、QOS、端口转发以及防火墙等。网络接口层会接受这个FF:FF:FF:FF:FF:FF的广播MAC地址,同样网络层会接受这个255.255.255.255的广播IP地址,来到传输层,发现目标端口是UDP的67端口。一般情况下路由器都会默认开启DHCP服务,而DHCP默认的监听端口就是UDP的67端口,因此这个数据包将会交给DHCP服务。DHCP服务收到数据后,将会从自己的IP地址池中选择一个未被占用的IP地址,假设为192.168.1.3,除了IP地址外,还会包含子网掩码、网关、DNS服务器以及租约信息,假设租约为12个小时。


然后重新封装数据包,源端口是本机的DHCP服务67端口,目标端口是对方发过来的端口,也就是68端口,并且通过UDP传输,网络层封装源IP地址为路由器自身IP地址,即192.168.1.1,由于目标设备没有IP地址,所以目标IP还是255.255.255.255。


来到网络接口层,源MAC地址是路由器LAN口的MAC地址,路由器从刚才电脑发过来的数据包中已经知道了电脑的MAC地址,所以目标MAC就是电脑的MAC地址


数据来到交换机后,由于交换机只能解析MAC地址,当它看到目标MAC是CC:CC:CC:CC:CC:CC时,会查看自己的MAC地址映射表,发现CC:CC:CC:CC:CC:CC在LAN1口,于是便会将这个数据包从LAN1口发送出去,电脑在收到数据包后还会一层一层的解封装。



接口层发现目标MAC是自己的MAC地址,于是接受该数据,网络层发现目标IP的广播IP,进行接受,传输层发现是发往UDP的68端口,而DHCP客户端监听了该端口,于是数据将会由DHCP应用程序处理,DHCP会拿着这些信息给电脑进行相关配置,于是我们的电脑就有了IP地址、网关、DNS等信息了,并且在6个小时后,也就是租约的二分之一,会再次发起DHCP请求续约IP地址,续约成功的话,租期重新变成12个小时。 


如果DHCP服务器没有回应,会在时间剩余四分之一、八分之一的时候再尝试发送续约请求,如果续约请求发送成功,租约变成12个小时,如果失败了,说明路由器提供的DHCP服务挂掉了,等到租约到期之后,便会释放该IP地址, 然后重新发起DHCP获取IP的广播请求。


但是由于这个局域网内唯一的DHCP服务器挂掉了,所以电脑永远也得不到DHCP的回应。当尝试多次都没有收到回复后,DHCP客户端会给电脑自动分配一个全球统一的网段IP,地址是169.254.*.*,确保还能和局域网内的其他设备正常通信。


所以当你发现电脑获取到了169.254.*.*开头的IP,便说明你家里的局域网中没有提供DHCP服务的设备。此时,便需要检查网络。


除了一台没有DHCP服务器的情况,还有可能是配置不当导致整个局域网中存在有多台DHCP服务器的情况。此时会出现一个“DHCP攻击”的概念,大家可先自行了解。


如果电脑关机了,没有再次发送续约请求,租约到期后,路由器的DHCP服务就会释放掉这个IP,将其重新放回到地址池中,再分配给有需要的设备,所以像商场之类的公众场合,WiFi设置的IP租期都会较短,确保人走后,设备所占用的IP能够尽快释放,以供别人使用,防止地址池被占满。家庭网络则可以设置的长一点,一般默认12小时。


这便是DHCP的整个执行流程。


当然,这些是相对简化过的,以便于更好的理解,实际上可能会更加复杂。


当我们输入baidu.com的时候,百度的网页是如何展现在我们的面前?


下一篇,我们将对这个过程进行简单的学习。



图片来源:互联网



...

不见不散




继续滑动看下一个

新手必读的家庭网络通信流程(篇一)-设备IP地址的获取

小白学智能 小白学智能
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存