Bob带着便携机从插网线到建立Google Web的连接(下)

简介: Bob带着便携机从插网线到建立Google Web的连接(下)

4


路由器在它的具有MAC地址OO:22:6B:45:1F的接口接收到该广播以太网帧,该帧中包含DHCP请求,并且从该以太网帧中抽取出IP数据报。该数据报的广播IP目的地址指示了这个IP数据报应当由在该节点的高层协议处理,因此该数据报的载荷(一个UDP报文段)被分解(3.2节)向上到达UDP, DHCP请求报文从此UDP报文段中抽取出来。此时DHCP服务器有了 DHCP请求报文。


5)我们假设运行在路由器中的DHCP服务器能够以CIDR (4.3.3节)块68. 85. 2. 0/ 24分配IP地址。所以本例中,在学校内使用的所有IP地址都在Comcast的地址块中。我 们假设DHCP服务器分配地址68. 85. 2. 101给Bob的便携机。DHCP服务器生成包含这个 IP地址以及DNS服务器的1P地址(68.87.71.226)、默认网关路由器的IP地址 (6& 85. 2. 1)和子网块(68.85.2.0/24)(等价为“网络掩码”)的一个DHCP ACK报文 (4.3.3节)。该DHCP报文被放入一个UDP报文段中,UDP报文段被放入一个IP数据报 中,IP数据报再被放入一个以太网帧中。这个以太网帧的源MAC地址是路由器连到归属 网络时接口的MAC地址(OO:22:6B:45:1F:1B),目的MAC地址是Bob便携机的MAC地 址(00: 16: D3:23:68:8A)O


6) 包含DHCP ACK的以太网帧由路由器发送给交换机。因为交换机是自学习的 (6.4.3节),并且先前从Bob便携机收到(包含DHCP请求的)以太网帧,所以该交换机 知道寻址到00: 16:D3:23:68:8A的帧仅从通向Bob便携机的输岀端口转发。


7) Bob便携机接收到包含DHCP ACK的以太网帧,从该以太网帧中抽取IP数据报, 从IP数据报中抽取UDP报文段,从UDP报文段抽取DHCP ACK报文。Bob的DHCP客户 则记录下它的IP地址和它的DNS服务器的IP地址。它还在其IP转发表中安装默认网关 的地址(4.1节)。Bob便携机将向该默认网关发送目的地址为其子网68. 85. 2. 0/24以外 的所有数据报。此时,Bob便携机已经初始化好它的网络组件,并准备开始处理Web网页 获取。(注意到在第4章给出的四个步骤中仅有最后两个DHCP步骤是实际必要的。) 6. 7.2 仍在准备:DNS和ARP 当Bob将www. google, com的URL键入其Web浏览器时,他开启了一长串事件,这将 导致谷歌主页最终显示在其Web浏览器上。Bob的Web浏览器通过生成一个TCP套接字 (2. 7节)开始了该过程,套接字用于向www. google, com发送HTTP请求(2.2节)。为了 生成该套接字,Bob便携机将需要知道www. google, com的IP地址。我们在2. 4节中学过, 使用DNS协议提供这种名字到IP地址的转换服务。


8) Bob便携机上的操作系统因此生成一个DNS查询报文(2.4.3节),将字符串 WWW. google, com放入DNS报文的问题段中。该DNS报文则放置在一个具有53号(DNS服务 器)目的端口的UDP报文段中。该UDP报文段则被放入具有IP目的地址68. 87. 71. 226 (在 328 第6韋 第5步中DHCP ACK返回的DNS服务器地址)和源IP地址68. 85. 2. 101的IP数据报中。


9) Bob便携机则将包含DNS请求报文的数据报放入一个以太网帧中。该帧将发送 (在链路层寻址)到Bob学校网络中的网关路由器。然而,即使Bob便携机经过上述第5 步中的DHCP ACK报文知道了学校网关路由器的IP地址(6& 85.2. 1),但仍不知道该网 关路由器的MAC地址。为了获得该网关路由器的MAC地址,Bob便携机将需要使用ARP 协议(6. 4. 1节)°


10) Bob便携机生成一个具有目的IP地址68. 85. 2. 1 (默认网关)的ARP查询报文, 将该ARP报文放置在一个具有广播目的地址(FF: FF:FF:FF:FF:FF)的以太网帧中,并 向交换机发送该以太网帧,交换机将该帧交付给所有连接的设备,包括网关路由器。


11)网关路由器在通往学校网络的接口上接收到包含该ARP查询报文的帧,发现在 ARP报文中目标IP地址68. 85. 2. 1匹配其接口的IP地址。网关路由器因此准备一个ARP I答,指示它的MAC地址OO:22:6B:45:1F:1B对应IP地址68. 85. 2. 1 o它将ARP回答放 在一个以太网帧中,其目的地址为00:16:D3:23:68:8A (Bob便携机),并向交换机发送 该帧,再由交换机将帧交付给Bob便携机。


12) Bob便携机接收包含ARP回答报文的帧,并从ARP回答报文中抽取网关路由器 的 MAC 地址(00:22:6B:45: IF: 1B)。


13) Boh便携机现在(最终!)能够使包含DNS查询的以太网帧寻址到网关路由器的 MAC地址。注意到在该帧中的IP数据报具有IP目的地址68. 87.71.226 ( DNS服务器), 而该帧具有目的地址OO:22:6B:45:1F:1B (网关路由器)。Bob便携机向交换机发送该帧, 交换机将该帧交付给网关路由器。 6. 7.3仍在准备:域内路由选择到DNS服务器


14) 网关路由器接收该帧并抽取包含DNS查询的IP数据报。路由器查找该数据报的 目的地址(68. 87.71.226),并根据其转发表决定该数据报应当发送到图6 32的Comcast 网络中最左边的路由器。IP数据报放置在链路层帧中,该链路适合将学校路由器连接到最 左边Comcast路由器,并且该帧经这条链路发送。


15) 在Comcast网络中最左边的路由器接收到该帧,抽取IP数据报,检查该数据报的 目的地址(68. 87. 71.226),并根据其转发表确定出接口,经过该接口朝着DNS服务器转 发数据报,而转发表已根据Comcast的域内协议(如RIP、OSPF或IS IS, 5.3节)以及因 特网的域间协议BGP (5.4节)所填写。


16) 最终包含DNS查询的IP数据报到达了 DNS服务器。DNS服务器抽取出DNS查 询报文,在它的DNS数据库中查找名字www. google, com ( 2. 4节),找到包含对应 WWW. google, com的IP地址(64.233.169.105)的DNS源记录° (假设它当前缓存在DNS 服务器中。)前面讲过这种缓存数据源于google, com的权威DNS服务器(2.4.2节)。该 DNS服务器形成了一个包含这种主机名到IP地址映射的DNS回答报文,将该DNS回答报 文放入UDP报文段中,该报文段放入寻址到Bob便携机(68. 85. 2. 101)的IP数据报中。 该数据报将通过Comcast网络反向转发到学校的路由器,并从这里经过以太网交换机到 Bob便携机。


17) Bob便携机从DNS报文抽取出服务器www. google, com的IP地址。最终,在大量 工作后,Bob便携机此时准备接触www. google, com服务器! e. com WWW. 511 WWW. 链路层和局域网 329 6. 7. 4 Web客户-服务器交互:TCP和HTTP


18)既然Bob便携机有了 www. google, com的IP地址,它能够生成TCP套接字(2. 7 节),该套接字将用于向www. google, com发送HTTP GET报文(2. 2. 3节)。当Bob生成 TCP套接字时,在Bob便携机中的TCP必须首先与www. google, com中的TCP执行三次握手 (3. 5.6节)。Bob便携机因此首先生成一个具有目的端口 80 (针对HTTP的)的TCP SYN 报文段,将该TCP报文段放置在具有目的IP地址64. 233. 169. 105 (www. google, com)的IP 数据报中,将该数据报放置在MAC地址为OO:22:6B:45:1F:1B (网关路由器)的帧中, 并向交换机发送该帧。


19) 在学校网络、Comcast网络和谷歌网络中的路由器朝着www. google, com转发包含 TCP SYN的数据报,使用每台路由器中的转发表,如前面步骤14〜16那样。前面讲过支 配分组经Comcast和谷歌网络之间域间链路转发的路由器转发表项,是由BGP协议决定 的(第5章)。 ;


20) 最终,包含TCP SYN的数据报到达www.googole.com。从数据报抽取出TCP SYN 报文并分解到与端口 80相联系的欢迎套接字。对于谷歌HTTP服务器和Bob便携机之间 的TCP连接生成一个连接套接字(2.7节)。产生一个TCP SYNACK (3.5.6节)报文段, 将其放入向Bob便携机寻址的一个数据报中,最后放入链路层帧中,该链路适合将 WWW. google, com连接到其第一跳路由器。


21) 包含TCP SYNACK报文段的数据报通过谷歌、Comcast和学校网络,最终到达 Bob便携机的以太网卡。数据报在操作系统中分解到步骤18生成的TCP套接字,从而进 入连接状态。


22) 借助于Bob便携机上的套接字,现在(终于!)准备向www. google, com发送字节 T, Bob的浏览器生成包含要获取的URL的HTTP GET报文(2.2.3节)。HTTP GET报文 则写入套接字,其中GET报文成为一个TCP报文段的载荷。该TCP报文段放置进一个数 据报中,并交付到WWW. google, com,如前面步骤18-20所述。


23) 在www. google, com的HTTP服务器从TCP套接字读取HTTP GET报文,生成一 个HTTP响应报文(2. 2节),将请求的Web页内容放入HTTP响应体中,并将报文发送 进TCP套接字中。


24)包含HTTP回答报文的数据报通过谷歌、Comcast和学校网络转发,到达Bob便 携机。Bob的Web浏览器程序从套接字读取HTTP响应,从HTTP响应体中抽取Web网页 的html,并最终(终于!)显示了 Web网页:进行总结

目录
相关文章
|
5月前
|
数据库
如何在web.config文件中配置连接Access数据库?
如何在web.config文件中配置连接Access数据库?
34 0
|
2月前
|
存储 网络协议 Linux
《网络是怎么样连接的》读书笔记 - WEB服务端请求和响应(五)
《网络是怎么样连接的》读书笔记 - WEB服务端请求和响应(五)
37 0
|
3月前
|
前端开发 数据库 Python
使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
【1月更文挑战第13天】使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
89 7
|
2月前
|
JavaScript 前端开发 Java
MooTools、Backbone、Sammy、Cappuccino、Knockout、JavaScript MVC、Google Web Toolkit、Google Closure、Ember、Batman 以及 Ext JS。
MooTools、Backbone、Sammy、Cappuccino、Knockout、JavaScript MVC、Google Web Toolkit、Google Closure、Ember、Batman 和 Ext JS 都是 JavaScript 框架,用于开发 Web 应用程序。它们分别提供了不同的功能和特性,以帮助开发者更高效地构建和维护 Web 应用程序。
17 2
|
4月前
|
存储 网络协议 Linux
《网络是怎么样连接的》读书笔记 - WEB服务端请求和响应(五)
《网络是怎么样连接的》读书笔记 - WEB服务端请求和响应(五)
29 0
《网络是怎么样连接的》读书笔记 - WEB服务端请求和响应(五)
|
6月前
|
C# Windows
C#建立最简单的web服务,无需IIS
C#建立最简单的web服务,无需IIS
|
6月前
|
前端开发 JavaScript 内存技术
什么是 Web 应用里加载 google font 带来的 FOIT 和 FOUT 问题?
什么是 Web 应用里加载 google font 带来的 FOIT 和 FOUT 问题?
44 0
|
7月前
|
网络协议 网络虚拟化 数据安全/隐私保护
Bob带着便携机从插网线到建立Google Web的连接(上)
Bob带着便携机从插网线到建立Google Web的连接(上)
61 0
|
24天前
|
监控 JavaScript 前端开发
《理解 WebSocket:Java Web 开发的实时通信技术》
【4月更文挑战第4天】WebSocket是Java Web实时通信的关键技术,提供双向持久连接,实现低延迟、高效率的实时交互。适用于聊天应用、在线游戏、数据监控和即时通知。开发涉及服务器端实现、客户端连接及数据协议定义,注意安全、错误处理、性能和兼容性。随着实时应用需求增加,WebSocket在Java Web开发中的地位将更加重要。
|
1月前
|
Web App开发 前端开发 开发工具
介绍Web开发的基础知识
介绍Web开发的基础知识
29 7