知识整合:Web页面请求的历程

news/2024/11/7 22:46:32/

Web页面请求的历程

  • 内部涉及知识:
  • 一、准备:DHCP、UDP、IP 和以太网
  • 二、仍在准备:DNS和ARP
  • 三、仍在准备:域内路由选择到DNS服务器
  • 四、Web客户-服务器交互:TCP和HTTP
  • 五、HTTP请求响应格式
    • Requests部分
    • Responses 部分

下载一个Web页面。我们的场景: 一名学生Bob将他的便携机与学校的以太网交换机相连,下载一个Web页面(比如 www.google.com 主页)。如我们所知,为满足这个看起来简单的请求,背后隐藏了许多细节。

内部涉及知识:

1、七层参考模型及IP讲解
2、TCP三次握手讲解
3、TCP四次挥手讲解及抓包分析
4、DHCP协议讲解及抓包分析
5、静态综合实验讲解
7、静态路由讲解
8、RIP路由信息协议讲解
9、动态路由协议讲解
10、抓包进行分析RIP以及OSPF的包
11、动态路由OSPF配置综合实验讲解
12、Vlan虚拟局域网技术讲解
13、ACL访问控制列表讲解
14、NAT技术讲解
15、网络综合实验讲解

在这里插入图片描述

一、准备:DHCP、UDP、IP 和以太网

我们假定Bob启动他的便携机,然后将其用一根以太网电缆连接到学校的以太网交换机,交换机又与学校的路由器相连,如上图所示。学校的这台路由器与一个ISP连接,本例中ISPcomcast.net。在本例中,comcastnet为学校提供了DNS服务;所以,DNS服务器驻留在 Comcast网络中不学校网络。我们将假设DHCP服务器运行中,就像常见情况那样。

Bob首先将其便携机与网络连接时,没有IP 地址他就不能做任何事情(例如下载个Web网页)。所以,Bob的便携机所采取的一个网络相关的操作是运行 DHCP 协议,以从本地 DHCP 服务器获得一个IP地址以及其他信息。

  • 1)Bob 便携机上的操作系统生成一个 DHCP 请求报文,并将这个报文放入具有目的端口67(DHCP 服务器) 和源端口68 (DHCP 客户)的UDP报文段(该UDP 报文段则被放置在一个具有广播IP目的地址 (255.255.255.255)和源IP 地址0.0.0.0IP数据报中,因为 Bob的便携机还没有一个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:6B:45:1F 的接口接收到该广播以太网喷中包含 DHCP 请求,并且从该以太网帧,该帧中抽取出IP 数据报。该数据报的广播IP 目的地址指示了这个IP 数据报应当由在该节点的高层协议处理,因此该数据报的载荷 (一个UDP 报文段)被分解向上到达 UDPDHCP 请求报文从此 UDP 报文段中抽取出来,此时DHCP服务器有了DHCP请求报文。
  • 5)我们假设运行在路由中的 DHCP 服务器能够以CIDR68.85.2.0/24分配IP 地址。所以本例中,在学校内使用的所有IP 地址都在Comeast 的地址块中。我们假设 DHCP 服务器分配地址 68.85.2.101Bob 的便携机。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地址是Bob便携机的MAC地址(00:16:D3:23:68:8A)。
  • 6)包含DHCP ACK的以太网帧由路由器发送给交换机。因为交换机是自学习的,并且先前从Bob便携机收到(包含DHCP请求的)以太网帧,所以该交换机知道寻址到00:16:D3:23:68:8A的帧仅从通向Bob便携机的输出端口转发。
  • 7)Bob便携机接收到包含DHCP ACK的以太网帧,从该以太网帧中抽取IP数据报,从IP数据报中抽取UDP报文段,从UDP报文段抽取DHCP ACK报文。BobDHCP客户则记录下它的IP地址和它的DNS服务器的IP地址。它还在其IP转发表中安装默认网关的地址。Bob便携机将向该默认网关发送目的地址为其子网68.85.2.0/24以外的所有数据报。此时,Bob便携机已经初始化好它的网络组件,并准备开始处理Web网页获取。

二、仍在准备:DNS和ARP

Bobwww.google.comURL键入其Web浏览器时,他开启了一长串事件,这将导致谷歌主页最终显示在其Web浏览器上。BobWeb浏览器通过生成一个TCP套接字开始了该过程,套接字用于向www.google.com发送HTTP请求。为了生成该套接字,Bob便携机将需要知道www.google.comIP地址。使用DNS协议提供这种名字到IP地址的转换服务。

  • 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.101IP数据报中。
  • 9)Bob便携机则将包含DNS请求报文的数据报放入一个以太网帧中。该帧将发送(在链路层寻址)到Bob学校网络中的网关路由器。然而,即使Bob便携机经过上述第5步中的DHCP ACK报文知道了学校网关路由器的IP地址(68.85.2.1),但仍不知道该网关路由器的MAC地址。为了获得该网关路由器的MAC地址,Bob便携机将需要使用ARP协议。
  • 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回答,指示它的MAC地址00:22:6B:45:1F:1B对应IP地址68.85.2.1。它将ARP回答放在一个以太网帧中,其目的地址为00:16:D3:23:68:8ABob便携机),并向交换机发送该帧,再由交换机将帧交付给Bob便携机。
  • 12)Bob便携机接收包含 ARP回答报文的帧,并从ARP回答报文中抽取网关路由器的MAC地址(00:22:6B:45:1F:1B)。
  • 13)Bob便携机现在(最终!)能够使包含DNS查询的以太网帧寻址到网关路由器的MAC地址。注意到在该帧中的IP数据报具有IP目的地址68.87.71.226DNS服务器),而该帧具有目的地址00:22:6B:45:1F:1B(网关路由器)。Bob便携机向交换机发送该帧,交换机将该帧交付给网关路由器。

三、仍在准备:域内路由选择到DNS服务器

  • 14)网关路由器接收该帧并抽取包含DNS查询的IP数据报。路由器查找该数据报的目的地址(68.87.71.226),并根据其转发表决定该数据报应当发送到Comcast网络中最左边的路由器。IP数据报放置在链路层帧中,该链路适合将学校路由器连接到最左边Comcast路由器,并且该帧经这条链路发送。
  • 15)在Comcast网络中最左边的路由器接收到该帧,抽取IP数据报,检查该数据报的目的地址(68.87.71.226),并根据其转发表确定出接口,经过该接口朝着DNS服务器转发数据报,而转发表已根据Comcast的域内协议(如RIPOSPFIS-IS)以及因特网的域间协议BGP所填写。
  • 16)最终包含DNS查询的IP数据报到达了DNS服务器。DNS服务器抽取出DNS查询报文,在它的DNS数据库中查找名字www.google.com,找到包含对应www.google.comIP地址(64.233.169.105)的DNS源记录。(假设它当前缓存在DNS服务器中。)前面讲过这种缓存数据源于google.com的权威DNS服务器。该DNS 服务器形成了一个包含这种主机名到IP地址映射的DNS回答报文,将该DNS回答报文放入UDP报文段中,该报文段放入寻址到Bob便携机(68.85.2.101)的IP数据报中。该数据报将通过Comcast网络反向转发到学校的路由器,并从这里经过以太网交换机到Bob便携机。
  • 17)Bob便携机从DNS报文抽取出服务器www.google.comIP地址。最终,在大量工作后,Bob便携机此时准备接触www.google.com服务器!

四、Web客户-服务器交互:TCP和HTTP

  • 18)既然Bob便携机有了www.google.comIP地址,它能够生成TCP套接字,该套接字将用于向www.google.com发送 HTTP GET 报文。当Bob生成TCP套接字时,在Bob便携机中的TCP必须首先与www.google.com中的TCP执行三次握手。Bob便携机因此首先生成一个具有目的端口80(针对HTTP的)的TCP SYN报文段,将该TCP报文段放置在具有目的IP地址64.233.169.105www.google.com)的IP数据报中,将该数据报放置在MAC地址为00:22:6B:45:1F:1B(网关路由器)的帧中,并向交换机发送该帧。
  • 19)在学校网络、Comcast网络和谷歌网络中的路由器朝着www.google.com转发包含TCP SYN的数据报,使用每台路由器中的转发表,如前面步骤14~16那样。前面讲过支配分组经Comcast和谷歌网络之间域间链路转发的路由器转发表项,是由BGP协议决定的。
  • 20)最终,包含TCP SYN的数据报到达www.gogole.com。从数据报抽取出TCP SYN报文并分解到与端口80相联系的欢迎套接字。对于谷歌HTTP服务器和Bob便携机之间的TCP连接生成一个连接套接字。产生一个TCP SYNACK报文段,将其放人向Bob便携机寻址的一个数据报中,最后放入链路层帧中,该链路适合将www.google.com连接到其第一跳路由器。
  • 21)包含TCP SYNACK报文段的数据报通过谷歌、Comcast和学校网络,最终到达Bob便携机的以太网卡。数据报在操作系统中分解到步骤18生成的TCP套接字,从而进入连接状态。
  • 22)借助于Bob便携机上的套接字,现在(终于!)准备向www.google.com发送字节了,Bob的浏览器生成包含要获取的URLHTTP GET 报文。HTTP GET报文则写人套接字,其中GET报文成为一个TCP报文段的载荷。该TCP报文段放置进一个数据报中,并交付到www.google.com,如前面步骤18~20所述。
  • 23)在www.google.comHTTP服务器从TCP套接字读取HTTP GET报文,生成一个HTTP响应报文,将请求的Web页内容放入HTTP响应体中,并将报文发送进TCP套接字中。
  • 24)包含HTTP回答报文的数据报通过谷歌、Comcast和学校网络转发,到达Bob便携机。BobWeb浏览器程序从套接字读取HTTP响应,从HTTP响应体中抽取Web网页的html,并最终(终于!)显示了Web网页。

上面的场景已经涉及许多网络基础,同时上述例子看起来是尽可能详尽,我们已经忽略了一些可能的附加协议(例如,运行在学校网关路由器中的NAT,到学校网络的无线接入,接入学校网络或对报文段或数据报加密的安全协议,网络管理协议),以及人们将会在公共因特网中遇到的一些考虑(Web缓存,DNS等级体系)

五、HTTP请求响应格式

Requests部分

Header解释示例
Accept指定客户端能够接收的内容类型Accept: text/plain, text/html
Accept-Charset浏览器可以接受的字符编码集Accept-Charset: iso-8859-5
Accept-Encoding指定浏览器可以支持的web服务器返回内容压缩编码类型。Accept-Encoding: compress, gzip
Accept-Language浏览器可接受的语言Accept-Language: en,zh
Accept-Ranges可以请求网页实体的一个或者多个子范围字段Accept-Ranges: bytes
AuthorizationHTTP授权的授权证书Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Cache-Control指定请求和响应遵循的缓存机制Cache-Control: no-cache
Connection表示是否需要持久连接。(HTTP 1.1默认进行持久连接)Connection: close
CookieHTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。Cookie: $Version=1; Skin=new;
Content-Length请求的内容长度Content-Length: 348
Content-Type请求的与实体对应的MIME信息Content-Type: application/x-www-form-urlencoded
Date请求发送的日期和时间Date: Tue, 15 Nov 2010 08:12:31 GMT
Expect请求的特定的服务器行为Expect: 100-continue
From发出请求的用户的EmailFrom: user@email.com
Host指定请求的服务器的域名和端口号Host: www.zcmhi.com
If-Match只有请求内容与实体相匹配才有效If-Match: “737060cd8c284d8af7ad3082f209582d”
If-Modified-Since如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT
If-None-Match如果内容未改变返回304代码,参数为服务器先前发送的Etag,与服务器回应的Etag比较判断是否改变If-None-Match: “737060cd8c284d8af7ad3082f209582d”
If-Range如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。参数也为EtagIf-Range: “737060cd8c284d8af7ad3082f209582d”
If-UnmodifiedSince只在实体在指定时间之后未被修改才请求成功If-Unmodified-Since: Sat, 29 Oct 2010 19:43:31 GMT
Max-Forwards限制信息通过代理和网关传送的时间Max-Forwards: 10
Pragma用来包含实现特定的指令Pragma: no-cache
Proxy-Authorization连接到代理的授权证书Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Range只请求实体的一部分,指定范围Range: bytes=500-999
Referer先前网页的地址,当前请求网页紧随其后,即来路Referer: http://www.zcmhi.com/archives/71.html
TE客户端愿意接受的传输编码,并通知服务器接受接受尾加头信息TE: trailers,deflate;q=0.5
Upgrade向服务器指定某种传输协议以便服务器进行转换(如果支持)Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
User-AgentUser-Agent的内容包含发出请求的用户信息User-Agent: Mozilla/5.0 (Linux; X11)
Via通知中间网关或代理服务器地址,通信协议Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
Warning关于消息实体的警告信息Warn: 199 Miscellaneous warning

Responses 部分

Header解释示例
Accept-Ranges表明服务器是否支持指定范围请求及哪种类型的分段请求Accept-Ranges: bytes
Age从原始服务器到代理缓存形成的估算时间(以秒计,非负)Age: 12
Allow对某网络资源的有效的请求行为,不允许则返回405Allow: GET, HEAD
Cache-Control告诉所有的缓存机制是否可以缓存及哪种类型Cache-Control: no-cache
Content-Encodingweb服务器支持的返回内容压缩编码类型。Content-Encoding: gzip
Content-Language响应体的语言Content-Language: en,zh
Content-Length响应体的长度Content-Length: 348
Content-Location请求资源可替代的备用的另一地址Content-Location: /index.htm
Content-MD5返回资源的MD5校验值Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==
Content-Range在整个返回体中本部分的字节位置Content-Range: bytes 21010-47021/47022
Content-Type返回内容的MIME类型Content-Type: text/html; charset=utf-8
Date原始服务器消息发出的时间Date: Tue, 15 Nov 2010 08:12:31GMT
ETag请求变量的实体标签的当前值ETag:“737060cd8c284d8af7ad3082f209582d”
Expires响应过期的日期和时间Expires: Thu, 01 Dec 2010 16:00:00 GMT
Last-Modified请求资源的最后修改时间Last-Modified: Tue, 15 Nov 201012:45:26 GMT
Location用来重定向接收方到非请求URL的位置来完成请求或标识新的资源Location: http://www.zcmhi.com/archives/94.html
Pragma包括实现特定的指令,它可应用到响应链上的任何接收方Pragma: no-cache
Proxy-Authenticate它指出认证方案和可应用到代理的该URL上的参数Proxy-Authenticate: Basic
refresh应用于重定向或一个新的资源被创造,在5秒之后重定向(由网景提出,被大部分浏览器支持)Refresh: 5; url=http://www.zcmhi.com/archives/94.html
Retry-After如果实体暂时不可取,通知客户端在指定时间之后再次尝试Retry-After: 120
Serverweb服务器软件名称Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
Set-Cookie设置HttpCookie Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
Trailer指出头域在分块传输编码的尾部存在Trailer: Max-Forwards
Transfer-Encoding文件传输编码Transfer-Encoding:chunked
Vary告诉下游代理是使用缓存响应还是从原始服务器请求Vary: *
Via告知代理客户端响应是通过哪里发送的Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
Warning警告实体可能存在的问题Warning: 199 Miscellaneous warning
WWW-Authenticate表明客户端请求实体应该使用的授权方案WWW-Authenticate: Basic

http://www.ppmy.cn/news/911161.html

相关文章

原来我还可以这样活:拆掉思维里的墙

第25节:第二种心智模式(6) 无趣之人,往往不是无能之人,而是无胆之人。 所以每天问问自己,你到底是没有兴趣,还是不敢有兴趣? 生命就好像镜子一样,有趣之人对生活保持着极高的投入度,…

leetcode:四数之和(详解)

内容:题目,代码实现及注解,思路详解 题目: 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个…

CAN转ETHERCAT网关can协议和canfd协议

大家好,今天要跟大家分享一款自主研发的通讯网关,YC-ECT-CAN。这款产品能够将各种CAN总线和ETHERCAT网络连接起来,实现高效的数据传输和通信。那么,这款通讯网关具体有哪些功能和特点呢?接下来,我们就一起来…

刷脸支付帮助店铺构建细致准确的用户画像

蜻蜓是支付宝在2018年年底推出的一款“刷脸”支付产品,摆放在收银台上,顾客在付款时先输入手机号码,然后面对摄像头进行人脸识别,几秒钟便可成功支付。作为目前人脸识别技术最广泛的一种应用方式,“刷脸”支付逐渐在全…

商业银行纷纷发力聚合支付:进行费率补贴 即时生成收款码

候维科技随着移动支付的普及发展,商家的“收银台”也在发生变革。近日,津云记者发现,不少商家的“收银台”开始变得清爽起来,从原来架着多个收款二维码变成了单个银行的“聚合支付”收款码。津云记者了解到,从2018年开…

中信银行上线票付通产品 为电商打造专属电票服务

中新网1月30日电 日前,随着银耐联平台817万元耐火材料订单的线上票据支付成功,中信银行“票付通”产品实现上线投产。作为上海票据交易所第一批试点金融机构,中信银行首发推出业内全新的电票支付产品,开启了电商电票支付新历程。 …

3.2 金融服务

自有人类社会以来,金融交易就是必不可少的经济活动,涉及货币、证券、保险、抵押、捐赠等诸多行业。交易角色和交易功能的不同,反映出不同的生产关系。通过金融交易,可以优化社会运转效率,实现资源价值的最大化。可以说…

理解LLM中的ReAct

large language models (LLMs)大语言模型在语义理解和交互式决策方面有着不错的表现。ReAct在一次交互中循环使用推理和行动两个操作解决复杂问题,推理即利用模型自身语义理解能力,行动则利用模型以外的能力(如计算、搜索最新消息&#xff0c…