本文试图通过一个例子总结计算机网络相关知识,该例子来源于《计算机网络——自顶向下方法》一书,本文对其中细节加了补充。
0. 场景与网络环境
一名学生Bob启动他的计算机,然后将其用一根网线连接到学校的以太网交换机,然后通过浏览器访问Google主页。
网络环境
Bob的计算机与交换机相连
交换机与学校路由器相连
路由器与一个ISP相连,本例中ISP为comcast.net
本例中comcast.net为学校提供了DNS服务,所以DNS服务器驻留在Comcast网络中而不是学校网络中。
1. 获取IP地址及其他网络配置
Bob的计算机目前还没有IP地址,如何动态获取IP地址?
运行动态主机配置协议(Dynamic Host Configuration,DHCP),以从本地的DHCP服务器获取一个IP地址以及其他信息。
DHCP服务器发现
在UDP分组中向端口67发送一个DHCP发现报文(DHCP discover message)。但这个UDP数据报发送给谁呢?此时主机不知道它所连接网络的IP地址,更不用说用于该网路的DHCP服务器地址了。在这种情况下,DHCP客户生成包含DHCP发现报文的IP数据报,目的地址为广播IP地址255.255.255.255,源地址为0.0.0.0。该IP数据报传递给链路层,链路层然后将该帧广播到所有该子网连接的子网。DHCP服务器提供
DHCP服务器收到一个DHCP发现报文时,用一个DHCP提供报文(DHCP offer message)向客户作出响应,仍然使用IP广播地址255.255.255.255。 为什么这个服务器必须采用广播?
在子网中可能有几个DHCP服务器,该客户也许会发现它所处于能在几个提供者之间进行选择的优越位置。每台服务器提供的报文包含有收到的发现报文的事务ID、向客户推荐的IP地址(yiaddr,your
internet address)、网络掩码以及IP地址租用期(address lease time),即IP地址有效时间。DHCP请求
客户主机从一个或多个服务器提供中选择一个,并向选中的服务器提供报文用DHCP请求报文(DHCP request
message)进行响应,回显配置参数。DHCP ACK
服务器用DHCP ACK报文(DHCP ACK message)对DHCP请求报文进行响应,证实所要求的参数。仅最后两部是必要的
Bob计算机上的操作系统生成一个DHCP请求报文,并将这个报文放入目的地端口67(DHCP服务器)和源端口68(DHCP客户