浏览器输入baidu.com加载的过程是什么,听完我的回答和尚摇了摇头,就这?

下半年第一天,今天是七一建党节哦

前言

回答这个问题的时候是去年三月份,我入职不到三个月还没转正。

和尚是一个互联网大厂朋友的外号,初中那货剃了光头,后来便有了和尚这个亲切的外号。

去年那时候我两住一起,下班都会在地铁站等彼此,地铁离家较远,走路20分钟左右,那段路便成了我两吹牛皮,讨论技术,畅想未来的梦想之路。

有次和尚问我:在浏览器输入baidu.com加载的过程是什么?

我:巴拉巴拉…

和尚:就这?
在这里插入图片描述
和尚:这也是一道经典的面试题,我给你讲讲。

正文

和尚:输入域名后,浏览器会先查询自己DNS缓存,如果没有查到,下一步会在本机的缓存中查找,还是没查到,则在本地host文件中查找,还没查到咋办?操作系统会去查找本地域名服务器,又没找到,再向上层域名服务器依次查找。

我:那域名服务器有哪些?域名服务器中也没查到咋办?

和尚:DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。

你购买一台服务器后,将域名解析到主机上,才能通过域名访问。一般解析后不会立马生效,需要过几个小时才能访问。所以只要你解析了域名到主机肯定能查到。

域名服务器一般分为:本地域名服务器,根域名服务器,权威域名服务器,顶级域名服务器。找到后返回,浏览器会缓存以便下次访问。

查到IP地址后,浏览器会发送http请求,通过三次握手建立连接,四次挥手断开连接。

我:什么是http请求,为啥连接需要三次握手,断开却要四次挥手?

和尚:我也不知道,可能舍不得断开吧。

我:呸,渣男。分手吧。
在这里插入图片描述
和尚:http是一个简单的请求-响应协议。它运行在TCP上。

图解三次 “握手”,通俗易懂。

在这里插入图片描述
以生活中的例子讲解,假设客户端是小明,服务端是小红。

  1. 小明喜欢小红好久了,终于鼓起勇气给小红发了一条微信:我喜欢你,我们谈恋爱吧!发完小明晚上忐忑的睡不着觉,不知道小红有没有看到消息,看到消息后的反应是什么。

  2. 小红收到消息后,哇,这厮终于开窍了,再不表白老娘都毕业了。说完小红的脸红了,回复小明:我也喜欢你。

  3. 小明收到后确定了小红也喜欢自己,开心之余给小红发了消息:宝贝,好想和你约会,看电影,去浪迹天涯,等疫情过去了,我们去旅游。

通过三次心灵的碰撞,双方都知道了对方的心意。
在这里插入图片描述
第一次握手:客户端发消息到服务端,客户端什么都不能确定。服务器收到后确定了自己接收正常,客户端发送正常。

第二次握手:服务器发送消息,客户端收到后确定了自己发送正常,接收正常,服务端发送正常,接收正常。

第三次握手:客户端发给服务器,服务器收到后确定了自己发送正常,接收正常,客户端发送正常,接收正常。

图解四次“挥手”,通俗易懂。

在这里插入图片描述

  1. 有次视频通话小红没戴口罩,小明深思熟虑后,发消息给小红:分手吧。疫情这么严重你竟然不戴口罩。

  2. 小红内心:终于要分手了,长出一口气,比当初答应在一起还开心。然后给小明回复:等我追完这剧。

  3. 没等小明反应,小红说我看完了,分手吧。

  4. 小明收到后立马回复:再也不见。

为什么建立连接只需要三次握手,断开却需要四次?

因为TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议。TCP是全双工模式。

三次握手:

第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己还要发送SYN请求信息,将SYN设置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态;

四次挥手:

第一次客户端告诉服务端,我发完了,但还能接收服务端的消息。第二次服务器可能数据还未发完,只能先回复给客户端我收到了你的请求,但我需要确定一下数据发完没。第三次服务器发现如果没有数据要返回了会立马回应,有的话返回完数据后再给客户端回应,告诉客户端我发完了。第四次客户端说我知道了,然后愉快的挥手告别。
在这里插入图片描述

和尚:OSI七层模型与TCP,IP四层模式你知道吗?

我:这个我知道,就不一一列出了,综合它们的优点说一下。

综合OSI和TCP/IP模式的优点,有五层参考模型。

应用层:支持各种网络应用。FTP、SMTP、HTTP。

传输层:进程-进程之间的数据传输。TCP、UDP。

网络层:源主机到目的主机的数据分组路由与转发。

链路层:相邻网络元素(主机,交换机,路由器)之间的数据传输。

物理层:比特传输。

最后服务器处理数据,实际上可能会先经过负载均衡机器,根据相应的规则分发到对应的机器,经过一系列处理后返回数据到浏览器。浏览器通过http协议收到服务器发来的http response之后,需要对收到的response中的数据解析渲染,最后我们才能看到如下画面。
在这里插入图片描述

总结

当然了,真正的流程不会像我说的这么简单,HTTP协议,DNS解析都相对复杂,在这里我只是描述了大概的过程。

欢迎在下方留言。如果你喜欢这篇文章,别忘了点赞,你们的支持就是失忆的动力。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

失忆老幺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值