美文网首页百人计划软件测试精进之路数据蛙数据分析每周作业
网络协议入门:浏览器打开一个页面会用到什么协议?

网络协议入门:浏览器打开一个页面会用到什么协议?

作者: cynthia猫 | 来源:发表于2019-03-28 07:08 被阅读3次

    精选自本人公众号「Cynthia晶姐」,2019.3.28的内容。

    在互联网时代混,就一定离不开网络协议。因此本文我们来聊聊网络协议。

    image

    举例:在浏览器中打开一个页面,需要输入地址。随便输入一个以HTTP开头的URL地址,比如我的简书首页地址:https://www.jianshu.com/u/8f1bb9388ce9 这个URL是以https开头的,用到了HTTPS协议,浏览器发送HTTPS请求,接收到HTTPS返回,然后解析,展现给你这个URL所对应的页面。

    当然除了HTTPS协议之外,还有很多的网络协议。有些朋友学习过计算机网络课程,知道网络协议是分层的。

    网络协议的分层

    国际标准化组织在 1984年 提出的模型标准,也就是OSI模型里分了七层。OSI 模型是从上往下的,越底层越接近硬件,越往上越接近软件,这七层模型分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。但是网络七层模型是一个标准,而非实现。

    那么在实际应用里,我们使用的是TCP/IP模型,它将 OSI 模型由七层简化为四层,这四层是:网络访问层、网络层、传输层、应用层。在每一层里都有许多的网络协议,这里我就不展开来说了。

    浏览器访问一个页面用到的协议

    光是看上面七层四层模型的概念,是不是枯燥的快睡着了?那么我们具体的来看一看,从浏览器输入URL地址,到页面呈现在你面前,会用到哪一层的什么协议。

    首先,我们输入的网址,这是一个URL。但是浏览器并不知道这个地址如何访问,所以需要使用DNS协议,去查找它的IP地址。

    你会留意到,有些网站是用http开头,有些则是用https开头的。HTTP协议是非加密协议,而HTTPS是一个加密协议,对于需要加密传输的数据,可以使用HTTPS协议。

    应用层

    刚才提到的DNS/HTTP/HTTPS协议,都是应用层的协议。因此通过这些协议封装的包,需要交给下一层,直到最底层,才能通过网卡,网线等硬件进行数据传输。

    传输层

    应用层的下一层是传输层。传输层有面向连接的TCP协议和无连接的UDP协议。面向连接的TCP协议会保证这个包能够到达目的地,如果一次没有到达就会重新发送,直到送达。

    而面向无连接的UDP协议是尽最大努力交付,并不能保证可靠交付,其优点就是对系统资源要求少,程序结构简单。

    因此,两种协议有各自的适用场景。对数据可靠性要求高的,例如支付场景可以选用TCP协议,而对数据可靠性要求没那么高,但是希望不要占用太多系统资源的,例如视频通话场景,则可以选用UDP协议。

    网络层

    当包在传输层封装完毕之后,就会继续交给传输层的下一层,也就是网络层。网络层的协议是IP协议。IP协议里面就有源IP和目标IP地址,也就是浏览器所在机器的IP地址,和所要访问的目标网站的IP地址。所以,刚才我们利用DNS协议通过网站URL查找到的IP地址,就在这里派上用场了!

    知道了目标IP地址,一般我们不能直接找到他,除非这个地址是在本地。而我们访问的网站,一般都是在外面,所以我们要离开本地出去。怎么去呢,就要通过网关。

    你可以查看一下本地机器的IP配置,linux下通过ifconfig命令就可以查看。这个IP配置可能是你自己或者网络管理员手动配置的,也可能是自动配置的。如果是自动配置,会通过DHCP协议进行配置,这里就先不展开来说了。

    本机的IP配置里面有一个网关的IP地址,因此要先找到网关。通过IP地址怎么找到网关呢?大家应该知道,每一个网卡都有一个全世界唯一的MAC地址,这个是在出厂的时候就被厂家设定好了的。因此只要我们知道网关的MAC地址,就一定能找到它了。

    网络访问层

    所以,我们有了网关的IP地址,再通过ARP协议发出询问,网关就会答复一个它的MAC地址。此时,网络层的包就可以交给下一层了,也就是网络访问层,在这一层里封装了本地的MAC地址和网关的MAC地址。

    网关一般是路由器,它收到包之后,会判断如何走才能到达目标IP。当然到达目标IP可能会通过多个网关,那么如何进行判断到达目标IP的路径呢?

    网关之间会通过路由协议进行沟通,常用的路由协议有OSPF和BGP。每一个网关都会判断这个包里的目标IP地址是不是在自己的网络里,如果不在,则会告诉你,下一步应该去哪个网关比较近,直到来到目标IP所在网络的网关,这个网关知道目标IP的MAC地址,也就抵达了目的地。

    所以就这样经过多个网关,最终我们的数据包就到达了目标IP对应的机器上。

    送达目标机器,进行处理

    目标机器收到了这个包之后,会把层层封装的包再一个个拆掉,最终该网站对应的进程得到了HTTP请求的内容,对其进行处理,并给出返回内容。这个包就像来的时候一样再返回到我们自己的电脑上,最终被浏览器接收,然后把HTTP响应的内容解析后,展现在我们的眼前。

    本文对你有没有帮助呢?欢迎参与讨论,如有疏漏也欢迎留言指出。


    说明:这是我公众号「Cynthia晶姐」的内容精选,更多内容欢迎关注公众号查看。

    Cynthia晶姐

    相关文章

      网友评论

        本文标题:网络协议入门:浏览器打开一个页面会用到什么协议?

        本文链接:https://www.haomeiwen.com/subject/ujktbqtx.html