整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

网站请求的过程是怎样的?(面试常问)

的2022年愿望是什么?

今年自己也定了个目标,我要写16本编程的书。

同步开启每天更新公众号的任务。因为公众号更新的内容也是我自己每天书里摘录的一些内容。这样也能够坚持的把书写下去。


那么,你今年的愿望又是什么呢?可以在留言下记录下来哦~


面试中爱问的问题:网站请求的过程是怎样的?

这个问题如果你如果有逛过一些编程社区,或者是看过一些编程网站,这个问题你会发现经常会出现。特别是新人去面试的过程中,也会经常遇到。在这里我也就简单的写写我自己整理出来的笔记。希望对你的认识有所帮助。


答案:

一个Web应用程序一般都是由客户端程序与服务端程序两部分组成。其中,客户端主要是指用户和浏览器,用户可以通过浏览器查找所需的资源,而这些资源则位于服务器上。浏览器是一个工具软件,它主要有两个作用:一是完成与服务端的交互,二是完成HTML(Hyper Text Mark-up Language,超文本标记语言,用来告诉浏览器怎样给用户展示内容)的解析,从而实现把用户需要查看的资源信息以直观的形式展现出来。服务端用来接收客户端发来的请求,并对该请求进行处理,找到客户端请求的资源,最后把查找到的资源返回给客户端,这些资源主要包括HTML页面、图片、音频、视频、PDF文件等内容。

下图2-1给出了最基本的页面请求与响应的流程。

图2-1页面请求与响应

(1) 用户通过浏览器输入链接地址来请求所需的资源。

(2) 浏览器接受用户的请求,并把该请求组装成指定的格式发送给服务端,客户端与服务端之间通过HTTP协议来完成具体的交互。其中请求的数据流中主要包含HTTP(Hypertext transfer protocol,超文本传输协议,建立在TCP/IP协议基础上的一个协议,主要用来实现客户端与服务端之间的通信)请求方法(GET或POST)、请求的网址(URL,全称Uniform Resource Locator,统一资源定位符)以及请求的一些参数信息。(当然在把数据发送给服务器之前,首先需要根据网页地址获取服务器的IP地址,这就需要通过访问DNS服务器来完成)。

(3) 服务器接收到客户端发来的请求,并查找用户所需要的资源。

(4) 服务器查找到用户请求的资源后,把该资源返回给客户端。

(5) 服务器通过把响应消息组装成特定的消息格式后返回给客户端,这个过程通过HTTP协议来完成。响应的数据流主要包含状态码(代表请求成功或失败),Content-type(例如text、picture、HTML等),响应消息的内容(图片或HTML格式的内容)。

浏览器对HTML进行解析后并把响应结果展现给用户。


更多精彩文章,欢迎关注《琉忆编程库》。

当你在浏览器输入url到发起http请求,这过程到底发生了什么?其实整个流程如下:

  1. 域名解析
  2. 为了将消息从你的PC上传到服务器
  3. 上.需要用到1P协议、ARP协议和0SPF协议
  4. 发起TCP的3次握手
  5. 建立TCP连接后发起http请求
  6. 服务器响应htp请求
  7. 浏览器解析htm代码,并请求html代码中的资源(如js、css、图片等)
  8. 断开TCP连接
  9. 浏览器对页面进行渲染呈现给用户


用户输入url

当用户输入url,操作系统会将输入事件传递到浏览器中,在这过程中,浏览器可能会做一些预处理,比如 Chrome 会根据历史统计来预估所输入字符对应的网站,例如输入goog,根据之前的历史发现 90% 的概率会访问「www.google.com 」,因此就会在输入回车前就马上开始建立 TCP 链接甚至渲染了。

接着是输入url之后,点击回车,这时浏览器会对 URL 进行检查,首先判断协议,如果是 http 就按照 Web 来处理,另外还会对这个 URL 进行安全检查

安全检查完成之后,在浏览器内核中会先查看缓存,然后设置 UA 等 HTTP 信息,接着调用不同平台下网络请求的方法。

注意:

浏览器和浏览器内核是不同的概念,浏览器指的是 Chrome、Firefox,而浏览器内核则是 Blink、Gecko,浏览器内核只负责渲染,GUI 及网络连接等跨平台工作则是浏览器实现的



http网络请求

  • 通过 DNS 查询 IP;
  • 通过 Socket 发送数据

dns查询ip

DNS,英文是Domain Name System,中文叫域名系统,是Internet的一项服务,他将域名和IP地址相互映射的一个分布式数据库

假设用户在浏览器中输入的是www.google.com,大概过程:

如果输入的是域名,则需要进行dns查询,将域名解析成ip;

进行DNS查询的主机或软件叫做DNS解析器,用户使用的工作站或电脑都属于解析器。域名解析就是利用DNS解析器得到对应IP过程,解析器会向域名服务器进行查询处理。

主要过程如下:

  • 从浏览器缓存中查找域名www.google.com的IP地址
  • 在浏览器缓存中没找到,就在操作系统缓存中查找,这一步中也会查找本机的hosts看看有没有对应的域名映射(当然已经缓存在系统DNS缓存中了)
  • 在系统中也没有的话,就到你的路由器来查找,因为路由器一般也会有自己的DNS缓存

如果以上都没有找到,则继续往下向dns域名服务器查询

  • 用户电脑的解析器向LDNS(也就是Local DNS,互联网服务提供商ISP),发起域名解析请求,查询www.google.com的IP地址,这是一个递归查找过程
  • 在缓存没有命中的情况下,LDNS向根域名服务器.查询www.google.com的IP地址,LDNS的查询过程是一个迭代查询的过程
  • 根告诉LDNS,我不知道www.google.com对应的IP,但是我知道你可以问com域的授权服务器,这个域归他管
  • LDNS向com的授权服务器问www.google.com对应的IP地址
  • com告诉LDNS,我不知道www.google.com对应的IP,但是我知道你可以问google.com域的授权服务器,这个域归他管
  • LDNS向google.com的授权服务器问www.google.com对应的IP地址
  • google.com查询自己的ZONE文件(也称区域文件记录),找到了www.google.com对应的IP地址,返回给LDNS
  • LDNS本地缓存一份记录,把结果返回给用户电脑的解析器
  • 在这之后,用户电脑的解析器拿到结果后,缓存在自己操作系统DNS缓存中,同时返回给浏览器,浏览器依旧会缓存一段时间。

注意,

域名查询时有可能是经过了CDN调度器的(如果有cdn存储功能的话)

而且,需要知道dns解析是很耗时的,因此如果解析域名过多,会让首屏加载变得过慢,可以考虑dns-prefetch优化

tcp/ip请求

有了 IP 地址,就可以通过 Socket API 来发送数据了,这时可以选择 TCP 或 UDP 协议。

http本质是tcp协议。

TCP是一种面向有连接的传输层协议。他可以保证两端(发送端和接收端)通信主机之间的通信可达。他能够处理在传输过程中丢包、传输顺序乱掉等异常情况;此外他还能有效利用宽带,缓解网络拥堵。

建立TCP连接一开始都要经过三次握手:

三次握手


第一次握手,请求建立连接,发送端发送连接请求报文

第二次握手,接收端收到发送端发过来的报文,可知发送端现在要建立联机。然后接收端会向发送端发送一个报文

第三次握手,发送端收到了发送过来的报文,需要检查一下返回的内容是否是正确的;若正确的话,发送端再次发送确认包

在TCP连接建立完成之后就可以发送HTTP请求了。

注意

浏览器对同一个域名有连接数限制,大部分是 6,http1.0中往往一个资源下载就需要对应一个tcp/ip请求,而像 HTTP 2.0 协议尽管只使用一个 TCP 连接来传输数据,但性能反而更好,而且还能实现请求优先级。


后面会分享更多devops和DBA内容,感兴趣的朋友可以关注下!!

04页面是什么,有什么作用?

404页面的目的是:告诉浏览者其所请求的页面不存在或链接错误,同时引导用户使用网站其他页面而不是关闭窗口离开。

现在大部分开源系统都会为大家考虑到404页面的跳转引导,比如:z-blog/wordpress,都是很不错的开源系统(注意不要用最原始的开源系统,而是采用带有模板的系统)。菜鸟后院网站本身也是wordpress的开源程序,然后我们用robin模板。(花299元拥有和菜鸟后院一样的网站,包括域名和1G阿里巴巴云空间)

页面应该达到什么样的效果才能满足SEO的要求?

搜索引擎使用 http 状态码来识别网页的状态。当搜索引擎获得不正确的链接时,网站应该返回一个状态代码404,告诉搜索引擎放弃索引该链接。如果返回一个200或302状态代码,搜索引擎会对链接进行索引,导致许多不同的链接指向相同的页面内容。结果,搜索引擎对这个网站的信任度大大降低。很多网站存在这个问题,那就是404页面返回的是200或302状态码而不是404状态码。

正确建立404页面的方法是:(仅适合Apache服务器)

  • 在.htaccess 文件中加入代码: ErrorDocument 404 /Error.html
  • 建立一个简单的html404页面命名 Error.html
  • 把 Error.html放置在网站根目录
  • 如果碰到困难,参考本站:错误网页
  • 注意:不要将404错误直接,跳转到网站首页,这将导致首页不被收录,正确的做法是在404页面加上一个返回首页的链接,让用户判断,并选择是否返回首页,或者返回其他页面,这也是用户体验的一种表现,搜索引擎对于这种做法比较友好。
  • /Error.html 前面不要带主域名,否则返回的状态码是302或200状态码。

现在我们购买的虚拟主机一般提供有404页面的制作方法,流程:

1、做一个简单的404页面,命名如:404.html;

2、通过ftp把这个404页面上传到网站根目录;

3、进入虚拟主机管理后台,找到404页面提交的入口,添加以上404页面的地址,如:www.cnbackyard.com/404.html(一般空间服务商都有带着种功能,也可以直接找他们技术客服完成这步操作)

4、输入一个错误的链接进行访问测试,随便输入,比如:www.cnbackyard.com/123.html,如果正确返回到404.html页面,则算正确;

5、使用站长工具(http://tool.chinaz.com/pagestatus),输入任意一个错误网址,检查返回值是否为404。如果返回值是200,代表该主机商设置有误,可以与其技术反馈。

以上操作方法对于一个seo初学者来说,还是有点复杂,同学们可以关注燃灯教育直播课程,参加我们的培训,理解起来会更透彻一点。