的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请求,这过程到底发生了什么?其实整个流程如下:
当用户输入url,操作系统会将输入事件传递到浏览器中,在这过程中,浏览器可能会做一些预处理,比如 Chrome 会根据历史统计来预估所输入字符对应的网站,例如输入goog,根据之前的历史发现 90% 的概率会访问「www.google.com 」,因此就会在输入回车前就马上开始建立 TCP 链接甚至渲染了。
接着是输入url之后,点击回车,这时浏览器会对 URL 进行检查,首先判断协议,如果是 http 就按照 Web 来处理,另外还会对这个 URL 进行安全检查
安全检查完成之后,在浏览器内核中会先查看缓存,然后设置 UA 等 HTTP 信息,接着调用不同平台下网络请求的方法。
注意:
浏览器和浏览器内核是不同的概念,浏览器指的是 Chrome、Firefox,而浏览器内核则是 Blink、Gecko,浏览器内核只负责渲染,GUI 及网络连接等跨平台工作则是浏览器实现的
dns查询ip
DNS,英文是Domain Name System,中文叫域名系统,是Internet的一项服务,他将域名和IP地址相互映射的一个分布式数据库
假设用户在浏览器中输入的是www.google.com,大概过程:
如果输入的是域名,则需要进行dns查询,将域名解析成ip;
进行DNS查询的主机或软件叫做DNS解析器,用户使用的工作站或电脑都属于解析器。域名解析就是利用DNS解析器得到对应IP过程,解析器会向域名服务器进行查询处理。
主要过程如下:
如果以上都没有找到,则继续往下向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内容,感兴趣的朋友可以关注下!!
404页面的目的是:告诉浏览者其所请求的页面不存在或链接错误,同时引导用户使用网站其他页面而不是关闭窗口离开。
现在大部分开源系统都会为大家考虑到404页面的跳转引导,比如:z-blog/wordpress,都是很不错的开源系统(注意不要用最原始的开源系统,而是采用带有模板的系统)。菜鸟后院网站本身也是wordpress的开源程序,然后我们用robin模板。(花299元拥有和菜鸟后院一样的网站,包括域名和1G阿里巴巴云空间)
搜索引擎使用 http 状态码来识别网页的状态。当搜索引擎获得不正确的链接时,网站应该返回一个状态代码404,告诉搜索引擎放弃索引该链接。如果返回一个200或302状态代码,搜索引擎会对链接进行索引,导致许多不同的链接指向相同的页面内容。结果,搜索引擎对这个网站的信任度大大降低。很多网站存在这个问题,那就是404页面返回的是200或302状态码而不是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初学者来说,还是有点复杂,同学们可以关注燃灯教育直播课程,参加我们的培训,理解起来会更透彻一点。
*请认真填写需求信息,我们会在24小时内与您取得联系。