说在前面的话
下面的例子是来自与计算机网络自顶向下方法,根据书上的描述、我的理解以及一些相应的修改,进行回顾总结。
场景:用户Bob有一个笔记本电脑,他用网线连接到学校实验室的网络,然后准备访问谷歌(www.google.com),假设学校的网络是接在了一个ISP上,该ISP又和google的网络是相连的,同时,DNS服务由该ISP提供,DHCP服务(后面会提到)由学校路由器提供,Bob的笔记本通过交换机和学习的路由器互联,场景图示如下:
详细流程
假设最开始Bob的计算机对网络的信息什么都不知道(即从来没做过任何关于网络信息的缓存),那么Bob访问google主页会经历以下步骤:
第一关——主要通过DHCP来得到一个本机IP地址
- (1)Bob的笔记本一开始是没有IP地址的,没有IP地址,也就没办法上Internet。于是,将利用
DHCP(Dynamic Host Configuration Protocol)动态主机配置协议
请求从DHCP服务器那边分到一个IP地址。笔记本上的操作系统将生成一个DHCP报文,并将这个报文放入一个UDP报文
中(DHCP协议是建立在UDP协议上的哈),该UDP报文的目的端口是67
(DHCP服务器的端口),源端口是68
(Bob笔记本的端口)。由于此时这台笔记本还没有被分到一个具体的IP,而UDP报文肯定又要封装到IP数据报中,于是这时的IP数据包的源IP地址是0.0.0.0(表示本网络)
,目的IP地址是255.255.255.255(广播)
- (2)包含DHCP请求报文的IP数据报又被封装在
以太网帧
(假设链路层用的是以太网)中,该以太网帧具有的源MAC地址是00:16:D3:23:68:8A(Bob笔记本网卡的MAC地址)
,目的MAC地址是FF:FF:FF:FF:FF:FF(广播)
,为什么这里需要广播呢?因为客户端(Bob的笔记本)也不知道自己所处的局域网中到底由哪台机器来提供DHCP服务,所以自然就把DHCP请求向各个机器都发一遍,相当于一个一个问,诶,兄弟,你能给我分个IP地址吗