打开网站执行了那些操作
《小李的别虐日常》
今天李四觉得闲来无事,正好看见了老王在试穿张三给他的新帽子,李四信心满满想要在老王面前装个B,来反正你也是闲来无事,你来考考我;老王说:你个憨憨,莫来烦我,给爷爬。李四一看说:你也敢自称爷,你考倒我我就叫你一声爸爸,老王露出了姨母笑,你个憨憨是不是没有经历过社会的毒打,看你这么想叫我我爸爸的份上,我就来杀杀你的锐气,结果被老王粉丝炖粉条似的乱问,李四被问到了怀疑人生。其中一个问题让他影响深刻----当你打开一个网站计算机都执行了那些操作。
————————————————————(以上可以忽略)正文开始——————————————
让我们现了解一下网络常用术语:
- 客户端 : 连接网站的的软件,即浏览器 。
- 服务器 : 网站背后的计算机,一个可以接受和处理用户信息电脑 。
- 域名 : 方便人快速的记住网站地址,一般标识网站一个/多个ip地址。
- ISP : 互联网提供商,客户端和服务端的中间人,假如访问
www.baidu.com
时,当浏览器收到请求后它也不知道向哪里去找www.baidu.com
,因此isp的工作是进行DNS(域名系统)查找此网站的ip。 - DNS : 域名系统;跟踪域名在互联网的ip地址的分布式数据库。先不担心分布式数据库如何操作的,只知道如何工作的-输入域名自动查找相对应的ip地址。
(网上找的图)
- IP地址 : 互联网协议地址;tcp/ip网络设备的数字标识符(计算机,服务器,路由器,打印机)。互联网每台计算机都有相对应的IP地址,用于识别互联网上的计算机,IP以四组数字(列182.61.200.7),为了在网络定位你的设备,通过tcp/ip协议把ip地址转换成物理地址,这个物理地址内置(即mac地址)在您的硬件中
- MAC和ip区别 : 通俗的讲mac是你的身份证唯一且不会乱,ip相当于你家的地址,这样就可找到你人了,在局域网内,通过ARP来将ip和mac对应起来,就是ARP表里存ip和mac的对应关系。
- 端口 : 如果把ip地址比作房子,端口就是房子的门,房子可以有几个门,一个ip地址最多可以有65535,端口号只有整数0-65535
- HTTP : 超文本传输协议;Web浏览器和Web服务器用于通过互联网进行通信的协议。
- TCP/IP : 传输控制协议/互联网协议。广泛使用的通信协议;tcp/ip别作用网络传输数据的标准。
好的让我们来看看输入域名后发生了啥
在浏览器上输入全球最大的同性交友网站(github)url
(网上找的图)
一、dns查找服务器本身ip
(1)首先是DNS去查找浏览器的本地缓存,一般浏览器都会保存一段时间内访问过的网址DNS的信息,各个浏览器保存的时间不等。
(2)如果浏览器没有缓存,则取查找本地操作系统缓存继续查找对应DNS信息
(3)如果还没有则取isp查找,一般请求的域名基本上都能在这里找到。
(4)结果还没找到则isp 将请求根域名服务器进行搜索,这个是面向全球顶级DNS服务器。
如果最后根服务器还没有找到那只有一个原因:这个域名根本不存在,没有在域名网上注册过,或者域名已经过期了。
这也是因为你打开一个新网站慢了,如果没有没有缓存,就会一层一层的去查找下去,查完还要一层层返回,列如"blog.github.com"",域名现解析出这个是个.com域名,然后在.com域名里查找是.github,最后是blog。
dns查找ip顺序:
graph LR
浏览器缓存-->操作系统缓存
操作系统缓存-->路由器缓存
路由器缓存-->isp域名服务器缓存
isp域名服务器缓存-->根域名服务器
二、建立tcp链接
浏览器获取到网站的ip后,向服务器发送tcp链接请求,之后tcp三次握手建立链接。
三、浏览器发送HTTP请求
浏览器和服务器建立连接后,浏览器会马上给服务器发送一个HTTP请求,请求方式为git,其实就是建立完tcp连接中,按照HTTP协议标准发送一个索要网页的请求。
在发送http请求的时候都会包含一些列如:主机(hots)、用户代理(user-agent)、Connection(连接属性),用户代理其实就是自己浏览器的一些信息,connection如果是keep-alive就代表传输内容后不要断开连接,不断开的话下次连接就会很快。可能还会有一些Cookies,cookies一般保存的是jSESSIONID,在每次发送http请求时会重复发给服务端。
web服务器接到请求后查找html页面,如果存在准备响应并返回HTML发送到您的浏览器中,如果服务器找不到就会发送一个http 404状态码–代表找不到页面。
四、浏览器等待响应
服务端收到请求后,会解析请求(读header),生成一个响应头和具体响应内容,传回浏览器,响应头里有一些必要信息列:status code 它一般分5种:
- 1** 消息系列(信息,服务器收到请求,需要请求者继续执行操作)
- 2** 成功系列(成功,操作被成功接收并处理)
- 3** 重定向系列(重定向,需要进一步的操作以完成请求)
- 4** 请求错误系列(请求错误,请求包含语法错误或无法完成请求)
- 5** 服务端错误系列(服务器错误,服务器在处理请求的过程中发生了错误)
五、浏览器渲染页面
服务端返回HTML信息后,浏览器渲染HTML,然后加载一些css样式、JavaScript文件
六、关闭tcp连接
当数据完成请求到返回的过程之后,根据Connection的Keep-Alive属性可以选择是否断开TCP连接,HTTP/1.1一般支持同一个TCP多个请求,而不是1.0版本下的完成一次请求就发生断开。TCP的断开与连接不一样,断开可以分为主动关闭和被动关闭,需要经过4次握手。
当浏览器需要的全部数据都已经加载完毕,一个页面就显示完了。
--------------------这就是访问一个网站的全部过程啦!
本文参考资料:
url:https://blog.csdn.net/vM199zkg3Y7150u5/article/details/78474503?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.nonecase ,https://blog.csdn.net/kongmin_123/article/details/82555936