今天我们不聊冷冰冰的技术,高大上的行业和令人焦虑的未来,我们聊点有意思的。
很多年轻人现在都喜欢看B站,虽然我不咋看,但我也倒是常常听说。
登录一个网站,年轻人看到的只是网站本身,但网络工程师登录一个网站,看到的可就多了。
我从一个故事来和你讲起,坐稳扶好,系上安全带,坐稳了啊。
前两天都忙着在外头和一堆人头肩并肩,挤着去景点玩,今天可算可以在家宅着玩玩了。
打开电脑,你把刚送来的炸鸡外卖放在桌上,极具仪式感准备登录b站开一部快乐肥宅剧下饭时,你发现:
在浏览器网址框内输入www.bilibili.com之后,经过0.5秒的反应时间,就会看到b站的主页。
身为网工,你的筷子突然一顿,脑海里开始不受控制的思考起一个神秘的问题:
“这0.5秒的时间内,电脑是做了多少操作,才找到b站这个页面的?”
这就是网络工程师的专属思考角度:
在这简单的2秒反应时间的背后,为了找到b站这个页面,你的电脑到底飞速干了多少活儿?
首先,我们要知道,平时我们在这个浏览器搜索的网址并不是IP地址,而是域名。
像www.bilibili.com,它就是一个典型的域名,图上的知乎也是。
那B站的IP地址是啥?是110.76.40.240。
域名的出现主要是方便人们记忆,一大串数字对于你来说记起来肯定不如bilibili快。
问你百度的IP地址是啥,你不太清楚;
但问你百度的网址是啥,你马上就能想起www.baidu.com,就是这么个道理。
IP地址究竟是啥?
思博老杨再之前的文章里详细分析过:
简单来说,IP地址是人们在Internet上为了区分数以亿计的主机而给每台主机分配的一个专门的地址,通过IP地址就可以访问到每一台主机。
IP本身没有什么实际的意义,很难记忆,所以才有了域名。但是路由器只认识二进制的IP地址,所以,你记住了域名,电脑记不住,就会出现一个问题:
当你使用域名访问某一个网站时,需要先将域名翻译成对应的IP地址,这个过程叫做“域名解析”。
但是……我平时输入的时候可没有翻译过啊,这背后是谁再操作?老杨第二点就给你说明白。
补充一个小技巧:
如果你想查看某一个网站的IP地址,要咋整?老杨平时喜欢用ping来查看:通过win+R打开cmd ,输入ping+空格+域名就可以了。
DNS(Domain Name System)是指域名系统,它主要是提供一种从主机名到IP地址的目录服务。
而DNS协议是指将域名转换为IP地址的一个规则。这就是第一点里提及的“域名解析”。
你平时输入网址的时候,没有人给你翻译成IP地址,但是客户端自动就是可以跳转到对应的页面去,就是DNS在后面的默默奉献。
为啥要特地整一个DNS呢?
因为一开始,咱们的域名和IP的对应关系都存在host的文件里。
如果一个新的计算机要接入网络,或者某个IP需要改改,都要去信息中心定期对文件里的内容进行更新,延迟了很久,操作起来也贼麻烦,所以才有了自动翻译机——DNS系统。
所以,当你输入www.bilibili.com时,再你按下回车键后,停顿的1-2秒内,DNS系统已经悄悄地帮你把这个b站的域名翻译成110.76.40.240给路由器看,这才能跳到你想要看到的二次元页面。
看到下面这张图,你就会发现你几乎时时刻刻都在能看到它:
但老杨这里想讲的是HTTP协议。
HTTP(Hyper Text Transfer Protocol)超文本传输协议是一个应用层协议,也是互联网上应用最为广泛的一种网络协议。
而HTTP报文是HTTP协议一种纯文本的数据格式,分为请求报文和响应报文,两种报文都具有类似的结构,分别由三个部分构成:起始行、首部、主体。
当一个你用你的电脑登录一个网站时,通过HTTP协议将这个你请求的这个“内容”封装到HTTP请求报文之中。
然后,服务器收到这个请求报文之后,根据协议规范解析报文,然后给你返回相应报文之后,你才能看到你想要看的网站页面。
关于HTTP状态码的科普内容,感兴趣的小友可以戳这里:
TCP的中文名叫做传输控制协议,是供已经连接因特网的计算机进行通信的通信协议。TCP是互联网协议之一,也是主要的协议之一。
TCP/IP 定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准。所以讨论这个问题,必须要涉及到TCP这个东西。
详解TCP三次握手可以看这篇:如果TCP不握手三次,改成两次或者四次会怎样?
说完上面四个基础概念,我们再绕回题目本身。
首先要强调一点,计算机本身是不会找到你想要的那个网站的,它只是了解到你的“需求”之后,再去找“别人”处理这件事。
这个“别人”就是路由器。
路由器的世界也是层级分明,计算机问离它最近的路由器,这个村子里的路由器不知道的话,就会网上禀报,报到县里的、镇里的、城里的、全国的,一个个往上禀报,总有一个路由器会知道。
毕竟骨干的路由器知道网络世界里的所有“路径”,最后找到你需要的那个服务器,路由器发起了请求连接,你就能登录上。
并且,IP地址并不是像大海捞针一样的搜寻的。因为全球的IP地址都已经是固定好且唯一的标识,这就和我们的世界地图一样, 具有唯一性。
地址们都在嗷嗷待哺的等待着人们的“需求”,这个“需求”不仅可以被动的靠路由器一层一层传输,也可以靠0.0.0.0这个“万能喇叭”来实现。
一旦对应的网站服务器能接收到你的请求,就会双眼放光,开始一番猛如虎的连接操作,在0.5秒内,你就能看到对应的网站页面。
那路由器,到底是怎么具体的找到我想要的那个网站的呢?
根据前面两个大点,我们再捋一遍背后的整个操作过程。(终于可以用上第一点里的知识了)
小杨下班回家打开电脑,把外卖放在桌上,极具仪式感准备登录b站开一部快乐肥宅剧配饭。
他在浏览器网址框内输入www.bilibili.com,
这里的网址是域名,所以需要“翻译”成计算机能看懂的语言,就需要"DNS"出场。
所以,在你按下回车键enter之后:
你的浏览器会率先使用DNS获得对应的IP地址。
如果本地的DNS服务器没有,就像更高级的DNS服务器求助,一直到你获得了B站的IP地址:110.76.40.240。
获取到了110.76.40.240之后,登录这个IP地址的需求就变成了你的“请求”。浏览器会把你的这个“请求”变成HTTP请求报文发送给TCP。
在这个发送的过程里,就出现了最经典的“TCP的三次握手”场景。
具体是咋握手的,我们看这里:
首先,TCP先收到了服务器发来的请求“有个用户要登录B站看番”。
这时候它有点慌,心里想:这个请求靠不靠谱啊?必须要测试一下,验证验证可不可靠。
所以,TCP设计的“三次握手”出现了,为的是让这俩货接触一下,自证清白,获取TCP的信任。
你的计算机给服务器发消息,“诶哥们,我能不能登个B站啊?”
服务器说:“可以啊大兄弟,这点小事算啥,你收得到我的信息吗?”
计算机说:“收到了!真是太好了,感恩的心感谢有你,祝哥们发大财!”
通过这三次握手,TCP确认了“我要登录B站看番”是ok的,接下来,它就会把你这个请求再次打包成一个IP报文,发送给B站的服务器。
在B站确认你的请求之后,它也会发送一个IP报文给你,以此表示确认建立链接。
经历上述几个过程以后,(也就是你在输入框里输入网址并按回车后的0.5秒内)你顺利打开了B站,开始看起快乐肥宅剧。
写到这里,觉得用这句话结尾,应该是最好的:哪有什么岁月静好,不过是有人在替你负重前行
小编送福利时间,CCNA、CCNP、CCIE课程免费试听名额~~立即抢占:
相关课程内容推荐
思科认证备考须知:CCNA 备考指南
思博全新思科课程399活动价限额限时优惠:新版CCNA 课程
思博CCNA课程安排表: CCNA课表
CCNA入门:CCNA证书是什么意思?
网络工程师初级证书有哪些:H3CNE与CCNA、HCIA哪个比较好?
即刻预约
免费试听-咨询课程-获取免费资料