一名学生将便携机与学校的以太网交换机相连,下载一个Web页面
①准备:DHCP、UDP、IP和以太网
学生启动便携机,然后用一根以太网电缆连接到学校的以太网交换机,交换机与学校的路由器相连。学校的路由器与一台ISP连接,以上图为例,ISP为comcast.net。
ISP为学校提供了DNS服务,所以DNS服务器在Comcast网络中而不是学校网络中
便携机与网络连接时,没有IP地址就不能做任何事情。所以便携机采取的一个网络相关的动作是运行DHCP协议,以从本地DHCP服务器获得一个IP地址以及其他信息
DHCP是什么?为什么要使用?
动态主机配置协议DHCP(Dynamic Host Configuration Protocol)是一种网络管理协议,用于集中对用户IP地址进行动态管理和配置。
在IP网络中,每个连接Internet的设备都需要分配唯一的IP地址。DHCP使网络管理员能从中心结点监控和分配IP地址。当某台计算机移到网络中的其它位置时,能自动收到新的IP地址。DHCP实现的自动化分配IP地址不仅降低了配置和部署设备的时间,同时也降低了发生配置错误的可能性。另外DHCP服务器可以管理多个网段的配置信息,当某个网段的配置发生变化时,管理员只需要更新DHCP服务器上的相关配置即可,实现了集中化管理。
1)便携机上的操作系统生成一个DHCP请求报文,并将这个报文放入具有目的端口67(DHCP服务器)和源端口68(DHCP客户)的UDP报文段。该报文端被放置在一个具有广播IP目的地址255.255.255.255和源IP地址0.0.0.0的IP数据报中
2)包含DHCP请求报文的IP数据报被放置在以太网帧中。该以太网帧具有目的MAC地址FF:FF:FF:FF:FF:FF,将该帧广播到与交换机连接的所有设备上。以太网帧的源MAC地址是便携机的MAC地址00:16:D3:23:68:8A
3)包含DHCP请求的广播以太网帧是便携机发送到以太网交换机的第一个帧,该交换机在所有的出端口广播该帧,包括连接到路由器的端口
4)路由器在具有MAC地址00:22:6B:45:1F的接口接收该广播以太网帧(帧中包含DHCP请求),路由器从以太网帧中取出IP数据报。该数据报的广播IP目的地址表明这个IP数据报需要由该节点的高层协议处理,因此该数据报的载荷(一个UDP报文)被分解向上到达UDP,DHCP请求报文从UDP报文段中抽取出来。此时DHCP服务器获得DHCP请求报文
5)假设运行在路由器中的DHCP服务器能够以CIDR块68.85.2.0/24分配IP地址。则本例中,学校内使用的所有IP地址都在Comcast的地址块中。假设DHCP服务器分配地址68.85.2.101给便携机。DHCP服务器生成包含这个IP地址以及DNS服务器的IP地址(68.87.71.226)、默认网关路由器的IP地址(68.85.2.1)和子网块(68.85.2.0/24)的一个DHCP ACK报文。该DHCP报文将被放入一个UDP报文段中,UDP报文段放入一个IP数据报中,IP数据报放入一个以太网帧中。这个以太网帧的源MAC地址是路由器连到归属网络时接口的MAC地址(00:22;6B:45:1F:1B),目的MAC地址时便携机的MAC地址(00:16:D3:23:68:8A)
6)包含DHCP ACK的以太网帧由路由器发送给交换机。因为交换机时自学习的,并且先前从便携机收到以太网帧,所以该交换机知道要寻址到00:16:D3:23:68:8A的帧仅从通向便携机的输出端口转发
7)便携机接收到包含DHCP ACK的以太网帧,从该以太网帧中提取IP数据报,从IP数据报中提取UDP报文段,从UDP报文段中提取DHCP ACK报文。便携机的DHCP客户则记录它的IP地址和它的DNS服务器的IP地址。同时在IP转发表中安装默认网关的地址。便携机向该默认网关发送目的地址为子网68.85.2.0/24以外的所有数据报。便携机此时已经完成了网络组件的初始化,并开始准备进行Web网页的获取
②准备:DNS和ARP
当用户将www.google.com的URL键入Web浏览器时,开启了一长串的时间,这最终使得谷歌主页显示在Web浏览器。主机的Web浏览器通过生成一个TCP套接字开始该过程,套接字用于向www.google.com发送HTTP请求。为了生成该套接字,便携机需要知道www.google.com的IP地址,使用DNS协议提供这种名字到IP地址的转换服务
8)便携机上的操作系统生成一个DNS查询报文,将字符串www.google.com放入DNS报文的问题段中。该DNS报文则放置在一个具有53号(DNS服务器)目的端口的UDP报文段中。该UDP报文段则被放入具有IP目的地址68.87.71.226(DHCP ACK返回的DNS服务器地址)和源IP地址68.85.2.101的IP数据报中
9)便携机将包含DNS请求报文的数据报放入一个以太网帧中。将该帧发送到学校网络中的网关路由器。即使便携机知道了学校网关路由器的IP地址(通过DHCP ACK返回报文),也不知道对应的MAC地址。因此需要使用ARP协议
10)便携机生成一个具有目的IP地址68.85.2.1的ARP查询报文,将该ARP报文放置在一个具有广播目的地址的以太网帧中,并向交换机发送该以太网帧,交换机将该帧交付给所有连接的设备,包括网络路由器
11)网关路由器在通往学校网络的接口上接收到包含该ARP查询报文的帧,发现ARP报文中目标IP地址68.85.2.1匹配其接口的IP地址。网关路由器因此准备一个ARP回答,指示它的MAC地址00:22:6B:45:1F:1B对应IP地址68.85.2.1。网关路由器将ARP响应报文放入一个以太网帧中,目的地址为00:16:D3:23:68:8A,并向交换机发送该帧,再有交换机将该帧交付给便携机
12)便携机接收包含ARP回到报文的帧,并从ARP回答报文中抽取网关路由器的MAC地址(00:22:6B:45:1F:1B)
13)便携机最终能够使包含DNS查询的以太网帧寻址到网关路由器的MAC地址。帧中的IP数据报具有IP目的地址68.87.71.226(DNS服务器),该帧具有目的地址00:22:6B:45:1F:1B(网关路由器)。便携机向交换机发送该帧,交换机将该帧交付给网关路由器
③准备:域内路由选择到DNS服务器
14)网关路由器接收帧并抽取包含DNS查询的IP数据报。路由器查找该数据报的目的的地址(68.87.71.226),并根据转发表决定该数据报应被发送到Comcast网络中最左边的路由器。IP数据报被放置在链路层帧中,该链路将学校路由器连接到最左边的Comcast路由器,并且该帧通过这条链路发送
15)Comcast网络中的最左边路由器接收到该帧,抽取IP数据报,检查该数据报的目的地址(68.87.71.226),并根据其转发表确定出口。通过该出口向DNS服务器转发数据报,而转发表已经根据Comcast的域内协议(RIP、OSFP或IS-IS)以及因特网的域间协议BGP所填写
域内协议
RIP:RIP是一种基于距离矢量(Distance-Vector)算法的协议,它使用跳数(Hop Count)作为度量值来衡量到达目的地址的距离。由于RIP是基于距离矢量算法的路由协议,存在着收敛慢、路由环路、可扩展性差等问题
OSPF:开放式最短路径优先OSPF(Open Shortest Path First)是一个基于链路状态的内部网关协议。泛洪完成后在计算最短路径算法。每台路由器使用数据库建立一个完整的拓扑图并计算通向每个目的网络的最佳路径
IS-IS:IS-IS(Integrated IS-IS或Dual IS-IS)使用最短路径优先SPF(Shortest Path First)算法进行路由计算。将网络状态转化为一张带权有向图,每台设备根据有向图计算一条最短路径树,从而选择最短路径
域外协议
BGP:边界网关协议(Border Gateway Protocol,BGP)是一种用来在路由选择域之间交换网络层可达性信息的路由选择协议。当BGP运行于同一AS内部时,被称为IBGP(Internel BGP,内部边界网关协议);当BGP运行于不同AS之间时,称为EBGP(Externel BGP,外部边界网关协议)
16)最终包含DNS查询的IP数据报到达DNS服务器。DNS服务器抽取DNS查找报文,在DNS数据库中查询www.google.com,找到包含对应www.google.com的IP地址(64.233.169.105)的DNS源记录。这种缓存数据源于google.com的权威DNS服务器。该DNS服务器形成了一个包含这种主机名到IP地址映射的DNS回答报文,将该DNS回答报文放入UDP报文段中,将该报文段放入向便携机寻址的IP数据报中。数据报通过Comcast网络反向转发回学校网络路由器,并通过学校的交换机发送到便携机
17)便携机从DNS报文抽取出www.google.com的IP地址。最终,便携机准备接触www.google.com的服务器
④Web客户-服务器交互:TCP和HTTP
18)此时便携机已经拥有www.google.com的IP地址,它能生成TCP套接字,该套接字用于向www.google.com发送HTTP GET报文。当用户生成TCP套接字时,便携机中的TCP必须先与www.google.com中的TCP执行三次握手。便携机因此先生成一个具有目的端口80(针对HTTP)的TCP SYN报文段,将该数据报放置在居于目的IP地址64.233.169.105的IP数据报中,将数据报放入目的MAC地址00:22:6B:45:1F:1B的帧中,并向交换机发送该帧
19)在学校网络、Comcast网络和谷歌网络中的路由器朝着www.google.com转发包含TCP SYN的数据报,使用每台路由器中的转发表。不同网络之间链路转发的路由器的转发表项是由BGP协议决定的
20)最终,包含TCP SYN的数据报到达www.google.com。从数据报中抽取TCP SYN报文,并分解到与端口80相联系的欢迎套接字。对于谷歌HTTP服务器和便携机之间的TCP连接生成一个连接套接字。产生一个TCP SYNACK报文段,将其放入一个向便携机寻址的数据报中,最后放入链路层帧中,该链路将www.google.com连接到其第一条路由器
21)包含TCP SYNACK报文段的数据报通过谷歌、Comcast和学校网络,最终抵达便携机的以太网卡。数据报在操作系统中分解到步骤18生成的TCP套接字中,从而进入连接状态
22)借助便携机上的套接字,最终可以向www.google.com发送字节。便携机上的浏览器生成包含要获取的URL的HTTP GET报文。HTTP GET报文写入套接字,其中GET报文称为一个TCP报文段的载荷,该TCP报文段放置进一个数据报中,交付到www.google.com。
23)在www.google.com的HTTP服务器从TCP套接字读取HTTP GET报文,生成一个HTTP响应报文,将请求的Web页内容放入HTTP响应体中,并将报文发送进入TCP套接字中
24)包含HTTP回答报文的数据报通过谷歌、ComCast和学校网络转发,抵达便携机。便携机上的Web浏览器程序从套接字读取HTTP响应,从HTTP响应体中抽取Web网页的html,最终显示了Web网页
至此,打开一个网页的流程彻底结束
⑤结语
上述过程尽量展示了计算机网络自顶向下方法的许多基础知识。但也忽略了一些可能的附加协议(运行在学校网关路由器中的NAT,到学校网络的无线接入,接入学校网络或对报文段或数据报加密的安全协议,网络管理协议),以及公共因特网中对Web缓存,DNS等级体系的考虑
至此沿着协议栈向下的旅程结束,有关物理层的讨论严格意义上并不属于计算机网络,而是属于通信理论
NAT:是一种地址转换技术,可以将IP数据报文头中的IP地址转换成另一个IP地址,并通过转换端口号达到地址重用的目的。用于缓解IPv4公网地址枯竭