自适应网站如何做mip,网站后台管理系统软件,公司在线起名免费网,万网空间最多放几个网站Web页面请求的历程 内部涉及知识#xff1a;一、准备:DHCP、UDP、IP 和以太网二、仍在准备#xff1a;DNS和ARP三、仍在准备#xff1a;域内路由选择到DNS服务器四、Web客户-服务器交互#xff1a;TCP和HTTP五、HTTP请求响应格式Requests部分Responses 部分 下载一个Web页面… 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连接本例中ISP为comcast.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.0的IP数据报中因为 Bob的便携机还没有一个IP 地址。2)包含 DHCP 请求报文的IP 据报则被放置在以太网中。该以太网具有目的MAC地址FF:FF:FF:FF:FF:FF使该将广播到与交换机连接的所有没备(如果顺利的话也包括DHCP服务器):该帧的源 MAC 地址是 Bob 便携机的MAC地址00 : 16 : D3 : 23 : 68 : 8A3)包含DHCP请求的广播以太网是第一个由 Bob 便携机发送到以太网交换机的顿该交换机在所有的出端口广播入帧包括连接到路由器的端口。4)路由器在它的具有 MAC 地址00:22:6B:45:1F 的接口接收到该广播以太网喷中包含 DHCP 请求并且从该以太网帧该帧中抽取出IP 数据报。该数据报的广播IP 目的地址指示了这个IP 数据报应当由在该节点的高层协议处理因此该数据报的载荷 (一个UDP 报文段)被分解向上到达 UDPDHCP 请求报文从此 UDP 报文段中抽取出来此时DHCP服务器有了DHCP请求报文。5)我们假设运行在路由中的 DHCP 服务器能够以CIDR块68.85.2.0/24分配IP 地址。所以本例中在学校内使用的所有IP 地址都在Comeast 的地址块中。我们假设 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地址00226B451F1B目的MAC地址是Bob便携机的MAC地址0016D323688A。6包含DHCP ACK的以太网帧由路由器发送给交换机。因为交换机是自学习的并且先前从Bob便携机收到包含DHCP请求的以太网帧所以该交换机知道寻址到0016D323688A的帧仅从通向Bob便携机的输出端口转发。7Bob便携机接收到包含DHCP ACK的以太网帧从该以太网帧中抽取IP数据报从IP数据报中抽取UDP报文段从UDP报文段抽取DHCP ACK报文。Bob的DHCP客户则记录下它的IP地址和它的DNS服务器的IP地址。它还在其IP转发表中安装默认网关的地址。Bob便携机将向该默认网关发送目的地址为其子网68.85.2.024以外的所有数据报。此时Bob便携机已经初始化好它的网络组件并准备开始处理Web网页获取。
二、仍在准备DNS和ARP
当Bob将www.google.com的URL键入其Web浏览器时他开启了一长串事件这将导致谷歌主页最终显示在其Web浏览器上。Bob的Web浏览器通过生成一个TCP套接字开始了该过程套接字用于向www.google.com发送HTTP请求。为了生成该套接字Bob便携机将需要知道www.google.com的IP地址。使用DNS协议提供这种名字到IP地址的转换服务。
8Bob便携机上的操作系统因此生成一个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数据报中。9Bob便携机则将包含DNS请求报文的数据报放入一个以太网帧中。该帧将发送在链路层寻址到Bob学校网络中的网关路由器。然而即使Bob便携机经过上述第5步中的DHCP ACK报文知道了学校网关路由器的IP地址68.85.2.1但仍不知道该网关路由器的MAC地址。为了获得该网关路由器的MAC地址Bob便携机将需要使用ARP协议。10Bob便携机生成一个具有目的IP地址68.85.2.1默认网关的ARP查询报文将该ARP报文放置在一个具有广播目的地址FFFFFFFFFFFF的以太网帧中并向交换机发送该以太网帧交换机将该帧交付给所有连接的设备包括网关路由器。11网关路由器在通往学校网络的接口上接收到包含该ARP查询报文的帧发现在ARP报文中目标IP地址68.85.2.1匹配其接口的IP地址。网关路由器因此准备一个ARP回答指示它的MAC地址00226B451F1B对应IP地址68.85.2.1。它将ARP回答放在一个以太网帧中其目的地址为0016D323688ABob便携机并向交换机发送该帧再由交换机将帧交付给Bob便携机。12Bob便携机接收包含 ARP回答报文的帧并从ARP回答报文中抽取网关路由器的MAC地址00226B451F1B。13Bob便携机现在最终能够使包含DNS查询的以太网帧寻址到网关路由器的MAC地址。注意到在该帧中的IP数据报具有IP目的地址68.87.71.226DNS服务器而该帧具有目的地址00226B451F1B网关路由器。Bob便携机向交换机发送该帧交换机将该帧交付给网关路由器。
三、仍在准备域内路由选择到DNS服务器
14网关路由器接收该帧并抽取包含DNS查询的IP数据报。路由器查找该数据报的目的地址68.87.71.226并根据其转发表决定该数据报应当发送到Comcast网络中最左边的路由器。IP数据报放置在链路层帧中该链路适合将学校路由器连接到最左边Comcast路由器并且该帧经这条链路发送。15在Comcast网络中最左边的路由器接收到该帧抽取IP数据报检查该数据报的目的地址68.87.71.226并根据其转发表确定出接口经过该接口朝着DNS服务器转发数据报而转发表已根据Comcast的域内协议如RIP、OSPF或IS-IS以及因特网的域间协议BGP所填写。16最终包含DNS查询的IP数据报到达了DNS服务器。DNS服务器抽取出DNS查询报文在它的DNS数据库中查找名字www.google.com找到包含对应www.google.com的IP地址64.233.169.105的DNS源记录。假设它当前缓存在DNS服务器中。前面讲过这种缓存数据源于googlecom的权威DNS服务器。该DNS 服务器形成了一个包含这种主机名到IP地址映射的DNS回答报文将该DNS回答报文放入UDP报文段中该报文段放入寻址到Bob便携机68.85.2.101的IP数据报中。该数据报将通过Comcast网络反向转发到学校的路由器并从这里经过以太网交换机到Bob便携机。17Bob便携机从DNS报文抽取出服务器www.google.com的IP地址。最终在大量工作后Bob便携机此时准备接触www.google.com服务器
四、Web客户-服务器交互TCP和HTTP
18既然Bob便携机有了www.google.com的IP地址它能够生成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地址为00226B451F1B网关路由器的帧中并向交换机发送该帧。19在学校网络、Comcast网络和谷歌网络中的路由器朝着www.google.com转发包含TCP SYN的数据报使用每台路由器中的转发表如前面步骤1416那样。前面讲过支配分组经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的浏览器生成包含要获取的URL的HTTP GET 报文。HTTP GET报文则写人套接字其中GET报文成为一个TCP报文段的载荷。该TCP报文段放置进一个数据报中并交付到www.google.com如前面步骤1820所述。23在www.google.com的HTTP服务器从TCP套接字读取HTTP GET报文生成一个HTTP响应报文将请求的Web页内容放入HTTP响应体中并将报文发送进TCP套接字中。24包含HTTP回答报文的数据报通过谷歌、Comcast和学校网络转发到达Bob便携机。Bob的Web浏览器程序从套接字读取HTTP响应从HTTP响应体中抽取Web网页的html并最终终于显示了Web网页。
上面的场景已经涉及许多网络基础同时上述例子看起来是尽可能详尽我们已经忽略了一些可能的附加协议例如运行在学校网关路由器中的NAT到学校网络的无线接入接入学校网络或对报文段或数据报加密的安全协议网络管理协议以及人们将会在公共因特网中遇到的一些考虑Web缓存DNS等级体系。
五、HTTP请求响应格式
Requests部分
Header解释示例Accept指定客户端能够接收的内容类型Accept: text/plain, text/htmlAccept-Charset浏览器可以接受的字符编码集Accept-Charset: iso-8859-5Accept-Encoding指定浏览器可以支持的web服务器返回内容压缩编码类型。Accept-Encoding: compress, gzipAccept-Language浏览器可接受的语言Accept-Language: en,zhAccept-Ranges可以请求网页实体的一个或者多个子范围字段Accept-Ranges: bytesAuthorizationHTTP授权的授权证书Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQCache-Control指定请求和响应遵循的缓存机制Cache-Control: no-cacheConnection表示是否需要持久连接。HTTP 1.1默认进行持久连接Connection: closeCookieHTTP请求发送时会把保存在该请求域名下的所有cookie值一起发送给web服务器。Cookie: $Version1; Skinnew;Content-Length请求的内容长度Content-Length: 348Content-Type请求的与实体对应的MIME信息Content-Type: application/x-www-form-urlencodedDate请求发送的日期和时间Date: Tue, 15 Nov 2010 08:12:31 GMTExpect请求的特定的服务器行为Expect: 100-continueFrom发出请求的用户的EmailFrom: useremail.comHost指定请求的服务器的域名和端口号Host: www.zcmhi.comIf-Match只有请求内容与实体相匹配才有效If-Match: “737060cd8c284d8af7ad3082f209582d”If-Modified-Since如果请求的部分在指定时间之后被修改则请求成功未被修改则返回304代码If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMTIf-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 GMTMax-Forwards限制信息通过代理和网关传送的时间Max-Forwards: 10Pragma用来包含实现特定的指令Pragma: no-cacheProxy-Authorization连接到代理的授权证书Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQRange只请求实体的一部分指定范围Range: bytes500-999Referer先前网页的地址当前请求网页紧随其后,即来路Referer: http://www.zcmhi.com/archives/71.htmlTE客户端愿意接受的传输编码并通知服务器接受接受尾加头信息TE: trailers,deflate;q0.5Upgrade向服务器指定某种传输协议以便服务器进行转换如果支持Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11User-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: bytesAge从原始服务器到代理缓存形成的估算时间以秒计非负Age: 12Allow对某网络资源的有效的请求行为不允许则返回405Allow: GET, HEADCache-Control告诉所有的缓存机制是否可以缓存及哪种类型Cache-Control: no-cacheContent-Encodingweb服务器支持的返回内容压缩编码类型。Content-Encoding: gzipContent-Language响应体的语言Content-Language: en,zhContent-Length响应体的长度Content-Length: 348Content-Location请求资源可替代的备用的另一地址Content-Location: /index.htmContent-MD5返回资源的MD5校验值Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQContent-Range在整个返回体中本部分的字节位置Content-Range: bytes 21010-47021/47022Content-Type返回内容的MIME类型Content-Type: text/html; charsetutf-8Date原始服务器消息发出的时间Date: Tue, 15 Nov 2010 08:12:31GMTETag请求变量的实体标签的当前值ETag:“737060cd8c284d8af7ad3082f209582d”Expires响应过期的日期和时间Expires: Thu, 01 Dec 2010 16:00:00 GMTLast-Modified请求资源的最后修改时间Last-Modified: Tue, 15 Nov 201012:45:26 GMTLocation用来重定向接收方到非请求URL的位置来完成请求或标识新的资源Location: http://www.zcmhi.com/archives/94.htmlPragma包括实现特定的指令它可应用到响应链上的任何接收方Pragma: no-cacheProxy-Authenticate它指出认证方案和可应用到代理的该URL上的参数Proxy-Authenticate: Basicrefresh应用于重定向或一个新的资源被创造在5秒之后重定向由网景提出被大部分浏览器支持Refresh: 5; urlhttp://www.zcmhi.com/archives/94.htmlRetry-After如果实体暂时不可取通知客户端在指定时间之后再次尝试Retry-After: 120Serverweb服务器软件名称Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)Set-Cookie设置HttpCookie Set-Cookie: UserIDJohnDoe; Max-Age3600; Version1Trailer指出头域在分块传输编码的尾部存在Trailer: Max-ForwardsTransfer-Encoding文件传输编码Transfer-Encoding:chunkedVary告诉下游代理是使用缓存响应还是从原始服务器请求Vary: *Via告知代理客户端响应是通过哪里发送的Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)Warning警告实体可能存在的问题Warning: 199 Miscellaneous warningWWW-Authenticate表明客户端请求实体应该使用的授权方案WWW-Authenticate: Basic