1.获取IP地址
(1)因为Bob的便携机还不具有一个IP地址,操作系统生成一个DHCP请求报文,并将这个报文放入具有目的地端口67 (DHCP服务器)和源端口68 (DHCP客户)的UDP报文段,该UDP报文段则被放置在一个具有广播IP目的地地址(255.255.255.255)和源IP地址0.0.0.0的IP数据报中。
(2)包含DHCP请求报文的IP数据报则被放置在以太网帧中。该以太网帧具有目的MAC地址FF:FF:FF:FF:FF:FF,使该帧将广播到与交换机连接的所有设备(如果顺利的话也包括DHCP 服务器),该帧的源MAC地址是Bob便携机的MAC 地址00:16:D3:23:68:8A 。
(3)包含DHCP 请求的广播以太网帧是第一个由Bob 便携机发送到以太网交换机的帧。该交换机在所有的出端口广播入帧,包括连接到路由器的端口。
(4)路由器在它的具有MAC 地址00: 22: 68: 45: IF 的接口接收到该广播以太网帧,该帧中包含DHCP 请求,并且从该以太网帧中抽取出IP 数据报。该数据报的广播IP 目的地址指示了这个lP 数据报应当由在该结点的高层协议处理,因此该数据报的载荷(一个UDP 报文段) 被分解向上到达UDP, DHCP 请求报文从此UDP 报文段中抽取出来。此时DHCP 服务器有了DHCP 请求报文。
(5)我们假设运行在路由器中的DHCP 服务器能够以CIDR 块68.85.2. 0/24分配IP 地址。所以本例中,在学校内使用的所有IP 地址都在Comcast 的地址块中。我们假设DHCP 服务器分配地址68. 85. 2. 101 给Bob 的便携机。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: IF: 1B) ,目的MAC 地址是Bob 便携机的MAC 地址(OO: 16: 03: 23: 68: 8A) 。
(6)包含DHCP ACK 的以太网帧由路由器发送给交换机。因为交换机是自学习的,并且先前从Bob 便携机收到(包含DHCP 请求的)以太网帧,所以该交换机知道寻址到OO: 16: D3: 23: 68: 8A 的帧仅从通向Bob 便携机的输出端口转发。
(7)Bob 便携机接收到包含DHCP ACK 的以太网帧,从该以太网帧中抽取IP 数据报,从IP 数据报中抽取UDP 报文段,从UDP 报文段抽取DHCP ACK 报文。Bob 的DHCP 客户则记录下它的IP 地址和它的DNS 服务器的TP 地址。它还在其IP 转发表中安装默认网关的地址 。Bob 便携机将向该默认网关发送目的地址为其子网68 . 85. 2. 0/24 以外的所有数据报。此时, Bob 便携机巳经初始化好它的网络组件,并准备开始处理Web 网页获取。
2.DNS与ARP
(8)Bob 便携机上的操作系统因此生成一个DNS 查询报文,将字符串www. google. com 放入DNS 报文的问题段中该DNS 报文则放置在一个具有53 号(DNS 服务器)目的端口的UDP 报文段中。该UDP 报文段则被放入具有IP 目的地址68. 87. 71. 226 (在第5 步中DHCP ACK 返回的DNS 服务器地址)和源IP 地址68.85.2. 101 的IP 数据报中。
(9)Bob 便携机则将包含DNS 请求报文的数据报放入一个以太网帧中。该帧将发送(在链路层寻址)到Bob 学校网络中的网关路由器。然而,即使Bob 便携机经过上述第5步中的DHCP ACK 报文知道了学校网关路由器的IP 地址(68. 85. 2. I) ,但仍不知道该网关路由器的MAC 地址。为了获得该网关路由器的MAC 地址, Bob 便携机将需要使用ARP协议获得网关路由器对应的MAC地址
(10)Bob 便携机现在能够使包含DNS 杳询的以太网帧寻址到网关路巾器的MAC 地址。
3.域内路由选择到DNS 服务器
(11) 网关路由器接收该帧并抽取包含DNS 查询的IP 数据报。路由器查找该数据报的目的地址(68. 87. 71. 226) .并根据其转发表决定该数据报应当发送到哪个路由器。
(12)路由器接收到该帧,抽取IP 数据报,检查该数据报的目的地址(68. 87. 71.226) ,并根据其转发表确定出接口,经过该接口朝着DNS 服务器转发数据报,而转发表己根据Comcast 的域内协议(如RIP 、OSPF 或IS-IS, 4.6 节)以及因特网的域间协议BGP 所填写。
(13)最终包含DNS 查询的IP 数据报到达了DNS 服务器DNS 服务器抽取出DNS 查询报文,DNS回答报文将通过反向转发到学校的路由器,并从这里经过以太网交换机到Bob 便携机。
4.Web 客户-服务器交互: TCP 和HTTP
(14)既然Bob便携机有了google的IP地址,它能够生成TCP套接字,该套接字将用于向www.google com发送HTTP GET报文。当Bob生成TCP套接字时,在Bob便携机中的TCP必须首先与google中的TCP执行三次握手,Bob便携机因此首先生成一个具有目的端口80(针对HTTP的)的TCP SYN报文段,将该TCP报文段放置在具有目的IP地址64.233.169.105(google)的IP数据报中,将该数据报放置在MAC地址为00:2:6B:45:1F:1B(网关路由器)的帧中,并向交换机发送该帧。
(15)在学校网络、Comeast网络和谷歌网络中的路由器朝着google转发包含TCP SYN的数据报,使用每台路由器中的转发表。最终,包含TCP SYN的数据报到达google。从数据报抽取出TCP SYN报文并分解到与端口80相联系的欢迎套接字。对于谷歌HTTP服务器和Bob便携机之间的TCP连接生成一个连接套接字。产生一个TCP SYNACK报文段,将其放入向Bob便携机寻址的一个数据报中,最后放入链路层帧中,该链路适合将google连接到其第一跳路由器。
(16)包含TCP SYNACK报文段的数据报通过谷歌、Comcast和学校网络,最终到达Bob便携机的以太网卡。数据报在操作系统中分解TCP套接字,从而进入连接状态。
(17)借助于Bob便携机上的套接字,现在准备向google发送字节了,Bob的浏览器生成包含要获取的URL的HTTP GET报文,HTTP CET报文则写入套接字,其中GET报文成为一个TCP报文段的载荷。该TCP报文段放置进一个数据报中,并交付到google。
(18)在google的HTTP服务器从TCP套接字读取HTTP GET报文,生成一个HTTP响应报文,将请求的Web页内容放入HTTP响应体中,并将报文发送进TCP套接字中。
(19)包含HTTP回答报文的数据报通过谷歌、Comeast和学校网络转发,到达Bob便携机。Bob的Web浏览器程序从套接字读取HTTP响应,从HTTP响应体中抽取Web网页的html,并终于显示了Web网页。显示了Web网页。