当前位置:首页 > 公众号精选 > 程序喵大人
[导读]     浏览器的请求数据包如何到达web服务器?      很多读者对于其中的完整流程不是特别的了解,下面一口君通过这22张图,详细的讲解我们点击浏览器的网址之后,数据包是如何经过重重险阻到达web server的。 1. LAN网络中的用户要访问位于远程网络中的服务器

浏览器的请求数据包如何到达web服务器

很多读者对于其中的完整流程不是特别的了解,下面一口君通过这22张图,详细的讲解我们点击浏览器的网址之后,数据包是如何经过重重险阻到达web server的。


1. LAN网络中的用户要访问位于远程网络中的服务器存储的网页。用户首先激活网页上的链接。

如果该域名对应的IP地址本地已经缓存,就直接访问该地址的80端口或者8080端口;如果没有缓存,那么浏览器会发出DNS请求给DNS服务器,获得该域名对应的IP地址。

获得地址后,浏览器会通过socket首先向服务器发送三次握手,建立起TCP连接。


2. 浏览器发出HTTP Get请求。应用层添加第7层报头,用于标识应用程序和数据类型。数据区需要按照HTTP协议填充对应数据,格式参考RFC2616。


3. 传输层标识上层服务是万维网(WWW)客户端。然后,传输层将此服务与TCP协议相关联并分配端口号。它使用随机选择的与此所建回话相关联的源端口12345,目的端口(80)与www服务相关联。
进行网络通信的进程必须绑定一个端口号,该端口号用于区分网络通信的进程。一个端口号只能被1个进程绑定。通常web服务器的端口号为80,8080。


4. TCP还发送确认号,告知www服务器期待接收的下一TCP数据短的序列号,序列号将指示此数据段在一系列相关数据段中所处的位置。此外还会根据建立会话的需要适当设置标志。该序列号非常有用,TCP要保证数据正确到达对方,并且对方要能够让数据有序重组,重组的依据就是这个序列号。


5. 网络层构建IP数据包,以便标识源主机和目的主机。就目的地址而言,客户端主机使用主机表中缓存的www服务器主机名关联的IP地址。而原地址则使用本机的IPv4地址。网络层还标识出此数据包中封装的上层协议为TCP数据段。


6.数据链路层参照地址解析协议(ARP)缓存来确定与路由器B接口关联的MAC地址,该接口被制定为默认网关。然后,它使用此地址构建以太网II帧,通过本地介质传输IPv4数据包。该帧中使用笔记本电脑的MAC地址作为源MAC地址,使用路由器B的Fa0/0接口的MAC地址作为目的MAC地址。


7. 该帧的类型字段中还使用值0800指示IPv4上层协议。该帧以前导码和帧首(SOF)指示符开始,以帧尾帧校验序列中用于产错校验的循环冗余校验(CRC)结束。然后,它使用CSMA/CD来控制将帧放置到介质上的过程。


8. 物理层开始将帧逐位编码到介质中。路由器A和服务器之间的网段是10Base-T网段;因此,对此比特编码时使用的是曼彻斯特差分编码。路由器B会缓冲收到的比特。

10BASE-T是双绞线以太网。


9. 路由器检查前导码和SOF中的比特位,查找表示帧开始位置的连续两个1的比特位。然后,路由器B开始缓存这些比特,作为重建帧的一部分。收到整个帧之后,路由器B生成帧的CRC。然后将此与帧结束位置的FCS进行对比,确定接收的帧完整无缺。当确认该帧未损坏时,再比对帧中的目的MAC地址和接口(Fa0/0)的MAC地址。如果二者相符,则删除帧头并将数据包向上传送到网络层。


10. 网络层将数据包的目的IPv4地址与路由表中的路由进行比对。找到与下一跳出接口S0/0/0相关联的符合项。然后将路由器B中的数据包传送到S0/0/0接口的电路。路由器值会查看数据包的IP层信息,并根据目的IP地址来查找路由表,路由器是搭建网路最重要的一个设备,用来连接不同的网络。


网络搭建好之后,每个路由器中都要提前建立好到各个网段的路由。通常路由条目由动态路由协议RIP、OSPF来动态创建。


11.路由器B创建PPP帧,通过WAN传输数据包。PPP报头中添加了01111110二进制标志,表示帧的开始位置。然后添加地址字段1111111,表示广播(意思是“发送到所有站点”)。由于PPP是点对点协议,用作两个节点之间的直接链路,所以此字段没有实际意义。路由器的所有接口地址都不能处于同一网段,一般一个出接口连接一个独立的网段。路由器和路由器之间两个网口传输数据一般用PPP协议。


12. 此外还包括值为0021(十六进制)的协议字段,表示封装的是IPv4数据包。帧尾以帧校验序列中用于差错校验的循环冗余校验结束。值为01111110的二进制标志表示PPP帧的结束位置。


13. 由于两台路由器之间已经建立了电路和PPP会话,因此物理层开始将帧逐位编码到介质中。接收路由器(路由器A)会缓冲收到的比特。比特的表示类型和编码类型取决于使用的WAN技术的类型。


14. 路由器A检查标志中的比特,确定帧的开始位置。然后,路由器A开始缓存这些比特,作为重建帧的一部分。按照帧尾中的标志所示收到整个帧之后,路由器A生成帧的CRC。然后将此与帧结束位置的FCS进行比对,确定接收的帧完整无缺。当确认该帧未损坏时,则删除帧头并将数据包向上传送到路由器A的网络层。


15. 网络层将数据包的目的IPv4地址与路由表中的路由进行比对。找到直接连接到接口Fa0/0的匹配项。然后,将路由器A中的数据包传送到Fa0/0接口的电路。


16. 数据链路层参照路由器A的ARP缓存来确定Web服务器接口关联的MAC地址。然后,它使用此MAC地址构建以太网Ⅱ帧,通过本地介质将IPv4数据包传输到服务器。该帧中使用路由器A的fa0/0接口的MAC地址作为源MAC地址,使用服务器的MAC地址作为目的MAC地址。该帧的类型字段中还使用值0800指示IPv4上层协议。该帧以前导码和帧首(SOF)指示符开始,以帧尾帧校验序列中用于差错校验的循环贰余校验结束。然后,它使用CSMA/CD来控制将帧放置到介质上的过程。

CSMA/CD即载波侦听多路访问/冲突检测,是广播型信道中采用一种随机访问技术的竞争型访问方法,具有多目标地址的特点。


17. 物理层开始将帧逐位编码到介质中。路由器A和服务器之间的网段是100Base-T网段;因此,对比特编码时使用的是4B/5B编码。服务器会缓冲收到的比特。


18. Web服务器检前导码和SOF中的比特位,查找表示帧开始位置的连续两个1的比特位。然后,服务器开始缓存这些比特,作为重建帧的一部分。收到整个帧之后,服务器生成帧的CRC。然后将此与帧结束位置的FCS进行比对,确定接收的帧完整无缺。


19. 当确认该帧未损坏时,再比对帧中的目的MAC地址与服务器网卡的MAC地址。如果二者相符,则删除帧头并将数据包向上传送到网络层。


20. 网络层检查数据包的目的IPv4地址,确定目的主机。由于此地址与其自身的IPv4地址相符,因此服务器处理该数据包。网络层标识出上层协议是TCP,并将包含的数据段传送到传输层的TCP服务。


21. 服务器的传输层检查TCP数据段,确定数据段中包含的数据所属的会话。此操作通过检查源端口和目的端口来完成。唯一的源端口和目的端口标识与Web服务器服务的现有会话。使用序列号按照正确的顺序放置此数据段,向上发送到应用层。

前面说过一个端口只能被一个进程绑定,所以该数据只会传送给web服务器进程,而不会被其他进程截获。


22. 在应用层,HTTP Get请求传送到Web服务器服务(httpd)。然后,该服务可以确定对请求做出的响应。


实际的网络环境中,服务器直接连接的路由器A和本地路由器B之间可能连接了非常多的网络设备,比如卫星、网桥、光纤等,这些设备的组网会更加复杂,涉及到的网络协议也更多。所有这些基础网络设施都由运营商建设,造价特别的昂贵,如果没有中兴、华为大力发展网络设备,我们基本不可能用如此低的价格来上网冲浪,也不会诞生美团、支付宝、微信、抖音这些互联网公司。相信随着5G的普及,未来会有更多的中国本土的新兴互联网公司。


本例虽然组网基础相对简单,但是万变不离其宗,基本原理一致。网络博大精深,在实际开发产品中应用非常广泛,后面一口君还会陆续发布关于网络的文章,敬请关注下方微信号。



一口君个人微信


添加一口君个人微信即送Linux、嵌入式等独家入门视频


→ 精选技术资料共享

→ 高手如云交流社群





本公众号全部原创干货已整理成一个目录,请在公众号里回复「 m 」获取!或者关注进入后台点击左下角干货」!

推荐阅读



【1】手把手教Linux驱动1-模块化编程
【2】手把手教Linux驱动2-模块参数param和符号导出export用法
【3】手把手教Linux驱动3-之字符设备架构详解,有这篇就够了

【4】手把手教Linux驱动4-进程、文件描述符、file、inode关系详解
【5】
玩转内核链表list_head,如何管理不同类型节点的实现(万字文)可以收藏
【6】I2C干货-基于Cortex-A9(重新整理)
【7】一文搞懂ADC裸机和基于Linux驱动编写方法
【8】一文讲懂什么是vlan、三层交换机、网关、DNS、子网掩码、MAC地址
【9】详解实时查看网卡流量的几款工具
【10】如何高效阅读代码?Linux大神拍了拍你并教给你这三个步骤


5T技术资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,单片机,树莓派,等等。在公众号内回复「1024」,即可免费获取!!




先赞,在看 天天变美,月月变瘦 ↓↓↓





免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在这篇文章中,小编将为大家带来浏览器缓存的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: 浏览器 缓存 浏览器缓存

为增进大家对浏览器缓存的认识,本文将对浏览器缓存的清空方法以及清空浏览器缓存时需要注意的事项予以介绍。

关键字: 浏览器 指数 缓存

浏览器缓存是计算机存储技术中的一种机制,主要用于临时存储网页资源(如图片、脚本、样式表等),以便在用户再次访问相同网站时能够快速加载页面内容,提高浏览速度。然而,随着时间的推移,缓存中的数据可能会过期或导致网站显示不正常...

关键字: 浏览器 缓存清除

纳德拉曾表示:“当公司的核心产品不复往日风采时,推到重来极其困难。我一直在观察那些能做到这一点的公司,并由此获得启发。” 在《刷新:重新发现商业与未来》这本书中,纳德拉回顾了自己早年的工作经历,并对就任微软首席执行官以来...

关键字: 核心产品 浏览器 市场

今天,微软为Win11推送了22H2版本Release预览版的KB5019509更新,在现有22H2稳定版的基础上,提前加入了部分新功能。在KB5019509更新中,Win11终于加入了用户翘首以盼的标签式文件资源管理器...

关键字: WIN 微软 RELEASE 浏览器

QQ浏览器是腾讯科技(深圳)有限公司开发的一款浏览器,其前身为TT浏览器。QQ浏览器秉承TT浏览器1-4系列方便易用的特点,但技术架构不同;交互和视觉表现也重新设计。

关键字: QQ 浏览器 IE

举个单位的例子吧,我们单位前几年请外边的网络公司开发一个网上报账APP,所有人员报账只需将相关报账票据上传网上后,一切审批流程都在网上流转。

关键字: 工程师 IE 浏览器

微软Edge浏览器将在2029年或更晚的时间点前继续支持IE模式。因此,网站只要与之前的网页引擎兼容,就不会遇到问题。不过,微软在推广Edge浏览器时的步子很大。微软将在未来几个月“稳步”将用户从IE引导至Edge浏览器...

关键字: 微软 IE 浏览器

在2022年6月补丁中,Internet Explorer浏览器正式退出历史舞台。微软表示从现在起IE浏览器不会有任何的错误或者漏洞修复,希望用户切换到Microsoft Edge浏览器上。

关键字: 浏览器 Internet Explorer

(全球TMT2022年5月17日讯)近日,Cision旗下公司美通社宣布推出新服务 -- 中国大陆新媒体精选发布。此项服务将帮助企业把品牌新闻稿发布到较为广泛的各类新媒体平台,借助权威媒体的转载构建相关受众强品牌认知,...

关键字: 微信 CIS 浏览器 矩阵
关闭
关闭