用户访问一个网站的整过程

news/2024/5/20 1:09:43/文章来源:https://blog.csdn.net/tangyuan_sibal/article/details/88395361

原文网址:https://blog.csdn.net/yonggeit/article/details/72857630
这里写图片描述

 用户访问网站流程框架

第一步:客户端用户从浏览器输入www.baidu.com网站网址后回车,系统会查询本地hosts文件及DNS缓存信息,查找是否存在网址对应的IP解析记录。如果有就直接获取到IP地址,然后访问网站,一般第一次请求时,DNS缓存是没有解析记录的;

第二步:如果客户端没有DNS缓存或hosts没有对应www.baidu.com网站网址的域名解析记录,那么,系统会把浏览器的解析请求,交给客户端本地设置的DNS服务器地址解析(此DNS为LDNS,即Local DNS),如果LDNS服务器的本地缓存有对应的解析记录,就会直接返回IP地址;如果没有,LDNS会负责继续请求其它的DNS服务器;

第三步:LDNS会从DNS系统的“.”根开始请求www.baidu.com域名的解析,经过一系列的查找各个层次DNS服务器,最终会查找到www.baidu.com域名对应的授权DNS服务器,而这个授权DNS服务器,正是该企业购买域名时用于管理域名解析的服务器。这个服务器有www.baidu.com对应的IP解析记录,如果此时都没有,就表示企业的运维人员么有给www.baidu.com域名做解析;

第四步:baidu.com域名对应的授权DNS服务器会把www.baidu.com对应的最终IP解析记录发给LDNS;

第五步:LDNS把收到来自授权DNS服务器关于www.baidu.com对应的IP解析记录发给客户端浏览器,并且在LDNS本地把域名和IP的对应解析缓存起来,以便下一次更快的返回相同的解析请求的记录;

第六步:客户端浏览器获取到了www.baidu.com的对应IP地址,接下来浏览器会请求获得的IP地址对应的Web服务器,Web服务器接收到客户的请求并响应处理,将客户请求的内容返回给客户端浏览器;

至此,一次访问浏览网页的完整过程就完成了。

DNS解析原理

dns解析的流程:计算机之间只能通过ip相互通信,因为ip不好记,于是才使用dns服务器把域名解析为相应的ip,这里以解析www.baidu.com为例,当我们输入这个网址回车的时候,浏览器会首先查询浏览器的缓存,这个缓存存活时间可能只有1分钟,如果没找到,则去查询本地的dns缓存和hosts文件,如果有www.baidu.com这个域名对应的ip,则直接通过这个ip访问网站服务器。如果本地的dns缓存和hosts文件没找到,这时候就会把请求发送给,网卡配置信息里的dns服务器,默认有两个,只有当dns1不能访问时,才会使用dns2。我们也称网卡配置信息里的dns为local dns,这时候local dns会先查询它的缓存,有没有www.baidu.com相应的记录,如果有,则返回给用户,如果没有,就会访问根域名服务器,世界一共有13台根域名服务器,根域名服务器一看,是找.com的,于是会把.com的顶级域名服务器的ip发送给local dns,这时local dns再次访问.com的顶级域名服务器,.com的顶级域名服务器一看,是找一级域名baidu.com的,于是再将baidu.com的ip发送给local dns,然后继续往下找,直到找到www.baidu.com的权威dns的A记录或者cname,这时候local dns会把找到的www.baidu.com的ip发送给客户端,并记录在缓存中,这样的话,下次如果有其他的用户访问www.baidu.com这个域名时,local dns的缓存中就有记录了。客户端收到local dns发送过来的ip就会通过ip去访问服务器,并将这个ip记录在dns缓存中。

tcp/ip三次握手

这里写图片描述
通过dns解析之后,拿到了ip,就可以通过ip向服务器发送http请求了,因为http是工作在第七层应用层,tcp是工作在第四层传输层,所以发生http请求之前,还会进行tcp的三次握手。
tcp的三次握手是:客户端首先向服务器发送一个带有SYN标识和一个seq的随机数,服务端收到后,需要给客户端回应一个ack,ack的值就是刚才的seq随机数的值+1,在回应包里,还包含一个SYN的标识和一个seq随机数。客户端收到服务端发过来的回应包之后,再给服务端发送一个ack,ack的值就是刚才服务端发过来的seq的值+1。上面三步完成之后,三次握手就完成了,下面就可以开始传数据了

osi参考模型

这里写图片描述

TCP/IP模型处理过程

这里写图片描述

以太网的数据链路大致流程

这里写图片描述

路由解析:

这里写图片描述

静态路由

这里写图片描述

 动态路由

这里写图片描述

路由算法

这里写图片描述

http协议原理(www服务请求过程)请求细节,报文细节

这里就是开始发送http请求报文了

http的请求报文,主要包括,请求行,请求头部,空行,请求主体
这里写图片描述
而请求行又包括,请求方法,url,协议版本,请求方法主要有GET、HEAD、POST、PUT、DELETE、MOVE,url就是统一资源定位符,通过这个能在服务器上找到唯一的网页资源,协议版本,目前主流的是http1.1,开始流行的协议版本是http1.0,相对应http1.0,http1.1主要从可扩展性、缓存处理、带宽优化、持久连接、host头、错误通知、消息传递、内容协商等多方面做了一些优化,以上是请求行的内容
再来说一些,请求头部,请求头部主要有媒体类型,语言类型、支持压缩、客户端类型、主机名等,媒体类型主要有文本文件,图片文件,视频文件等,语言类型就是告诉服务器客户端的接受的语言,支持压缩的话,可以节省带宽,客户端类型,会显示客户端浏览器的版本信息,操作系统信息等
空行,代表请求头部的结束,也代表着请求主体的开始
请求报文主体,只有使用POST提交表单的时候才有

大规模网站集群架构细节

常见的网页资源有三种,分别是静态网页,动态网页,伪静态
静态网页就是没有后台数据库,不含php,jsp,asp等程序,不可交互的,开发者编写的是啥,显示的就是啥,不会有任何改变
动态网页,有后台数据库,支持更多的功能,如用户注册,登录,发帖,订单,博客等,动态网页并不独立存在于服务器上的网页文件,而是当用户请求服务器上的动态程序时,服务器解析这些程序,并调用数据库来返回一个完整的网页内容,它跟静态网页的url不同,它的url中包含?、&等特殊符号,搜索引擎收录的时候存在一定的问题。动态网页为了方便收录,常常会利用rewrite技术,把动态网页的URL伪装成静态网页URL,这就是伪静态。

不同的网页资源,打开的流程不一样,下面假设我们访问的是一个静态网站:
客户端会通过http协议,下载服务器上的html文件,然后去读这个html文件,根据html页面中的链接,自上而下的请求,每一个请求是一个链接,如果是图片的话,会下载边渲染,遇到js,就会加载js,当js比较内容较复杂时,浏览器就会等待,鼠标在转圈,我们称这个为js阻塞,当js下载完毕并执行完成之后,才会显示我们看到的网页。

当我们访问的是一个动态网页时,首先用户发出一个请求,服务器收到这个请求之后,这里假设服务器使用的是nginx,nginx会把这个请求转给php,php就会去查询数据库,根据数据库返回的值,生成一个完整的网页内容,发送给用户,用户收到之后,也是边下载边渲染,加载js,执行完毕之后,才会显示我们看到的网页

当服务器的访问量达到亿级PV时,这个访问的过程就更复杂了,用户的请求会先访问全国的CDN节点,通过CDN挡住全国80%的请求,当CDN上没有时,在访问服务器集群,这个集群一般都有一个4层的代理,这个4层的代理,使用软件来完成的话,就是LVS,使用硬件就是F5,4层的代理,后面才是7层的负载均衡,常用的是haproxy,nginx,然后才是多台web服务器,web服务器比较多的时候,就有两个问题,一个是用户数据的一致性,不能因为不同的web服务器提供服务,而导致数据不同步,这时候,我们就需要使用NFS共享存储,第二个问题是session,不能因为不同的web服务器提供服务,session找不到了,这时候,我们就需要使用memcached来存放并共享session。由于用户访问量太大,这时候的瓶颈就是数据库的压力,我们一般都是使用分布式缓存memcache,redis等,另外数据库还需要做读写分离等优化,后面的过程与访问动态网页类似

http协议原理(www服务响应过程)响应细节,报文细节

对应的,服务器收到请求报文之后,就会给出响应报文

响应报文主要包含起始行、响应头部、空行、响应报文主体
这里写图片描述
起始行一般包含http版本号,数字状态码,状态情况
而数字状态码,常见有以下几种
200 代表ok
301 永久跳转
403 没权限
404 没有这个文件
500 未知的错误
502 网关错误
503 服务器超载,停机维护
504 网关超时
响应头部,主要包括,服务器的web软件版本,服务器时间,长连接还是短连接,设置字符集等等
这里的空行和请求报文空行一样

HTTP报文结构

(1)HTTP报文大致可以分为报文首部和报文主体两块
这里写图片描述
(2)请求报文和响应报文的结构实例
这里写图片描述

 HTTP/1.1规范定义了如下47种首部字段

(1)通用首部字段
这里写图片描述
(2)请求首部字段 
这里写图片描述
  (3)响应首部字段
这里写图片描述
这里写图片描述
  (4)实体首部字段
这里写图片描述

tcp/ip四次挥手过程

当浏览器加载一个完整的页面时,还需要与服务器断开连接,这个过程就是tcp的四次挥手
首先客户端会发送一个带有FIN标识和一个seq随机数,服务端收到之后,会回应一个ack,ack的值等于刚才的seq的值+1,发送之后,服务器会再发一个包,这个包里面也带有FIN标识和一个seq随机数,客户端收到之后,回应一个ack,ack的值等于刚才的seq值+1,以上完成之后,服务器和客户端的4次挥手就完成了!

持久连接

  在HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接。因此,每次的请求都会造成无谓的TCP连接建立与断开,增加通信量的开销。为了解决这个问题,HTTP/1.1想出了持久连接(也称为HTTP keep-alive),其特点是:只要任意一端没有明确提出断开连接,则保持TCP连接状态。
  这里写图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_877634.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机网页的设计vs2008开发wap网站(一)

vs2008开发wap网站(一)首先新创建个项目,打开VS2008,新建个网站项目,我们添加新项时会发现以前在vs2003或vs2005中的“移动Web窗体”项没有了,下图为vs2003和2005中的。 vs2008中就没有“移动Web窗体”这一项,这…

优化网站性能 提高网站速度访问速度的14条实践

相信互联网已经越来越成为人们生活中不可或缺的一部分。ajax,flex等等富客户端的应用使得人们越加“幸福”地体验着许多原先只能在C/S实 现的功 能。比如Google机会已经把最基本的office应用都搬到了互联网上。当然便利的同时毫无疑问的也使页面的速度越来越慢。自己…

利用代码托管平台 Pages 搭建静态个人网站

一、写在前面 笔者最近接触生成个人博客的开源项目,玩着挺有意思的。用简单的命令生成vue或go的项目模板。通过markdown语言文档生成静态页面。网上也有很多教学博客。感谢各位大神博主的分享。这里也简单记录下我的使用笔记。 二、开源的hexo框架 框架简介 官方…

推荐3个网页设计在线配色网站

推荐3个网页设计在线配色网站 对于网页设计师而言,每个网站的设计都需要一套最适合它的配色方案,配色方案的选择关系到整个网站的成功与失败。你会不会因为苦恼于一个很急的网站项目的配色方案迟迟没有确定,而抓狂呢?下面暴风彬彬…

提高网站设计可用性(有效性)的10条原则

决定一个网站成败命运的,不是视觉设计,而是设计的可用性和有效性。访问网页的用户们握着鼠标,决定一切,“以用户为中心”已然是成功网站的标准设计方向。总之,用户不用的功能,就不该存在。 我们并不打算重复…

精选31个网站界面设计实践教程

精选31个网站界面设计实践教程 设计一个网站从来都不是一件容易的事。如果你去询问一位在该行业有丰富经验的网页设计师,他会告诉你以前根本没有太多关于Web设计/开发的资源、文章和各种沟通交流平台,更不用说高质量免费教程了。 如果您打算建立自己的个…

Photoshop 爱好者应该收藏的42个网站

Photoshop 是 Adobe 公司旗下最为出名的图像处理软件之一,集图像扫描、编辑修改、图像制作、广告创意,图像输入与输出于一体的图形图像处理软件。今天,本文与大家分享42个非常有用的 Photoshop 设计教程和素材资源网站,希望能帮助…

分享20佳极具创意的网站导航菜单设计案例

导航菜单作为网站必不可少的组成部分,关系着网站的可用性和用户体验。有吸引力的导航能够吸引用户去浏览更多的网站内容,增加用户在网站的停留时间。为了让导航能够和网页内容完美的融合在一起,设计前需要设仔细分析网页结构。下面收集了20佳…

免费下载精美网站模板的25个网站推荐

免费下载精美网站模板的25个网站推荐 这篇文章向大家推荐25个免费下载网站模板的网站,这些网站分享了众多精美的网站模板,您可以免费下载使用,相信这些精美的 网站模板 既能够帮助您节省大量的时间和精力,又能有很满意的效果&…

学习 Web 开发技术的16个最佳教程网站和博客(留着回家学习)

学习 Web 开发技术的16个最佳教程网站和博客 互联网经过这么多年的发展,已经出现了众多的 Web 开发技术,像 .Net/Java/PHP/Python/Ruby 等等。对于 Web 开发人员来说,不管是初学者还是有一定经验的开发人员都需要时刻学习新的开发技术。如今&…

使用 jQuery Mobile 及 ASP.NET 开发跨行动装置网站 (Mobile Web)

转:http://msdn.microsoft.com/zh-tw/hh875190.aspx 在行動式裝置普及化的現在,要開發一個能夠跨行動式裝置的原生應用程式 (Native App) 是非常不容易的,除了需要了解不同的作業系統的差異 (Ex: Windows Phone、Android、iOS),還…

Bootstrap网站页面练习实例

整体页面 整个页面分为6大部分 整体效果 在使用Bootstrap时要注意响应式,组件要看情况设置固定的宽高。 导航栏 在使用导航栏的时候要注意搜索框组件,它的宽度设置成响应式 media screen and (min-width:768px) and (max-width:988px) {.input-gro…

自学编程推荐的11个学习及刷题网站

初学编程,很多人会选择先自学,那么这时候选择适合自己的学习平台是特别关键的,今天小优就给大家整理了11个学习及刷题网站。 一起来收藏起来! 第一类:课程学习类网站 1、菜鸟教程 菜鸟教程是 Runoob开发的一个编程…

一行css代码让整个网站变灰, 通过js控制定点触发和关闭

今天是5.12是个特殊的日子,有的时候吧 会把整个网站变灰的需求 这个我们用css过滤器 一行代码就能实现了 filter: grayscale(100%);问题是 出在定点触发 这块,我们可以通过js 来实现 核心就是时间的判断这块 比如: 我们要在5.12凌晨十二点触发 到 5.13的凌晨关闭 就可以这样写…

爬虫实战练习之网站图片批量下载

爬虫实战练习之网站图片批量下载 难点1.接口地址的规律2.设置请求头的内容3.寻找图片的url(主要为节点路径)4.编写函数 难点 1.接口地址的规律 # ----------------------------解析实战----------------------------- from urllib.request import HTTPHandler, build_opener,…

大型网站技术架构 提纲

序 《大型网站技术架构》是自己接触的第一本架构知识的书籍,还是在14年时买的实体书,前后读了几遍,颇有所得,后来实体书被朋友借走再没归还,也就没再翻过。 个人觉得这本书作为一本入门书籍颇为合适,里面…

网站扫描二维码登录

https://login.weixin.qq.com/l/obsbQ-Dzag 接下来详细介绍一下扫码登录具体的每个步骤:扫码登录完整流程①:用户 A 访问微信网页版,微信服务器为这个会话生成一个全局唯一的 ID,上面的 URL 中 obsbQ-Dzag 就是这个 ID&#xff0c…

测试、分析网站网页的速度,以及优化的方向

分析页面执行速度,定位优化方向 PageSpeed Insights简介、优势下载、使用 时隔很久我又出现了,最近真的是太忙了,现在一个一个介绍我的这最近一段时间的 PageSpeed Insights 这个是我自己百度了一番后发现比较方便的一款测试、分析网页的的…

爬取某视频网站评论

爬取某视频网站评论 效果展示 实现细节 0x01 评论来源 B站的评论需要滑到评论区才会加载,显然是Ajax动态加载的,只 request 页面html是肯定爬不到的。 F12查看源代码, 点击查看网络 终于找到了!!! https://api.b…

系统架构-如何搭建大型网站系统

一、概述 往往程序员在面试的时候,很多时候面试官会考察你对一个大型网站系统的设计思路。 首先我们要思考一个问题,什么样的网站才是大型网站,从网站的技术指标角度考虑这个问题人们很容易犯一个毛病就是认为网站的访问量是衡量的指标&…