本篇一句话总结:计算机网络中的七层模型分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
正文开始:
如果你有一定的工作经验,去面试的话,面试官大概率会问你:
说一下从输入网址到获得页面的过程是怎样的?
有一定开发经验的同学都知道,有如下几个过程:
(1). 浏览器对输入的域名进行解析,获取域名对应的IP地址;
(2). 浏览器获得IP地址后,浏览器向服务器请求建立TCP链接;
(3). 链接建立后,浏览器向服务器发送HTTP请求;
(4). 服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,一般处理就是执行controller里面的方法,并将处理结果及相应的视图返回给浏览器;
(5). 浏览器根据其请求到的视图、数据渲染页面,显示给用户。
(虽然你可能还不知道域名如何解析成IP,也不知道什么是TCP链接,也不知道HTTP请求具体是什么个概念,但先照着标准答案回答了先)
三次握手
你回答了之后,然后面试官可能会继续问你,浏览器向服务器发起请求时,是怎样建立TCP链接的?
这时候对计算机网络不太了解的同学可能就懵逼了,答不上来,然后面试官可能就会觉得,这个人连这个问题都不知道,行不行啊。了解一点计算机网络的同学就知道,就是三次握手嘛。为什么是三次而不是两次四次,不了解的同学可以看这里。
一般面试官听到三次握手也就满意了,但是你如果去阿里腾讯这些大公司去面试的话,他们肯定会追问说:“嗯,那你再说一下OSI七层模型吧?” 或者会问:“那你知道TCP/IP五层模型吗?” 。如果你这个问题答上来并说清楚了,面试官绝对眼前一亮,对你的印象分蹭蹭蹭地涨,离拿到offer就不远了。
所以我们非常有必要清楚,什么是OSI七层模型,和TCP/IP五层模型。
OSI七层模型、TCP/IP五层模型
OSI定义了网络互连的七层框架,分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
TCP/IP五层模型是把上三层都归为应用层,其原理还是跟OSI七层一样。
如下图:
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。共23个字,但它在计算机界的地位,就跟我们5000字的道德经在中国的地位一样。小兵我大学的时候就学过计算机网络这门课,但说来惭愧,那时候吊儿郎当地没听过几节,工作后得重新学习时才发现,卧槽,好像错过了一个亿。这时候想学也没老师教了,只能自己找找资料自己领悟了。在费了不少时间后,小兵我终于对这个模型有了更深刻的认识。然后觉得,好像不是错过了一个亿,是错过了两个亿!!发现它就是我们现今很多技术的总纲!!可以说没有它分布式相关的技术就无从谈起!! 下面小兵我就来说一下我是怎么认识这个两个亿的模型的。
以需求为源头
我是先从需求角度,再从实现的角度去理解这个模型的,
就是为什么人们要提出这个模型?基于什么样的需求才提出的这个模型?如果叫我实现那我如何实现?
然后我们很容易得出答案,需求就是:实现两台计算机通信。
我们先看一下两个主机H1、H2通信的总图,见下图左。图是从网上随便找的,有点模糊,内容好像很多,可能会觉得看不懂,但那都没关系,如果你是第一次看这张图,只要清楚一个事情,那就是数据是从主机H1的应用层产生的,最终会发送到主机H2的应用层。也就是说
数据从一台计算机的应用层,发送到目标计算机的应用层,就实现了两台计算机通信。
而且数据在应用层产生后,并不是变魔术变到了目标计算机的应用层,而是走了长长的一条路,
是从应用层 -> 传输层 -> 网络层 -> 链路层 -> 物理层,中间又经过了N个路由器的物理层链路层网络层,才最终到达目标计算机的应用层。
然后从下图右我们可以看到,我们在应用层产生的数据,到了传输层之后就改叫为【报文】,到了传输层之后就成为【包】,到了数据链路层后就称为【帧】了,到了物理层,就是比特流【bit】了。名字不同,证明数据一路传输下去,每层都对数据做了一些其它的处理,具体什么处理呢,一两句话还真讲不清,我们在后面讲解每层的作用时会说到。
即我们在浏览器输入baidu.com,就是数据baidu.com在应用层产生,然后这条数据进入传输层,网络层,链路层,物理层,经路由转发,最终到达百度服务器,也就是目标计算机的应用层。这就实现了计算机的通信了。然后目标应用层收到这条数据后,会对你的数据进行解析,解析后发现,它需要把百度首页返回给你,然后它就返回了一个html文件给你的浏览器,返回的时候就是要走一条相反的路,从服务器本机的应用层走到物理层,然后中间也是要各路由转发,最终达到你的浏览器,你的浏览器收到这个html之后就可以展示出百度首页了。这就是实现了两台计算机的通信,浏览器、服务器的相互通信也就是HTTP协议的内容了。
上面说了一堆,终于要开始讲到各层的扮演的角色,各层的作用了。讲之前我再次总结一下上面那一大对废话:
总结1:数据从应用层产生
总结2:应用层的数据,发送到目标计算机的应用层,就是实现了两台计算机通信
总结3:应用层的数据,发送到目标计算机的应用层,中间要走很长的一段路
有了