其他
当我们在浏览器的地址栏中输入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个小时。