有没有好奇过,用浏览器访问某个网站时,中间经历了什么,如何到达对方的?(初学版)

网友投稿 260 2022-09-20


有没有好奇过,用浏览器访问某个网站时,中间经历了什么,如何到达对方的?(初学版)

前言

前一篇介绍了OSI参考模型/TCP/IP协议体系每层的作用以及分层的好处,但是对于一个应用数据访问来说,在TCP/IP协议体系中,它不是独立完成的,而是各层之间共同完成,直到从物理层介质变成比特流发送出去,这一篇就以一个平时常用的网站访问来了解下整个的通信过程。(这个过程不严谨,只是让初学者理解起来更加方便,省去了一些细节的过程。)

当我打开浏览器,访问自己博客时,中间经历了什么,它是如何到达对方服务器的呢?

这里只是讲解重点部分,很多协议的细节或者网络环境都进行了简化,这个其实就是后面我们要学的,但是对于初学者来说,先了解一个通信的大致过程,以及数据包在处理过程中,每一层发生了什么事情,这样在后续的学习中就会一个很大的帮助。

(1)打开浏览器,输入ccieh3c.com,这个时候应用程序浏览器会查找hosts文件或者DNS缓存,是否有这个域名对应的IP信息,如果没有则会发送给DNS进行请求,转换成对应的IP。(这里假设ccieh3c.com的地址是1.1.1.1,浏览器知道,DNS协议在后续会讲解)得到IP后,浏览器开始打包访问的请求,使用HTTP或者HTTPS,不管使用哪种,里面请求的是ccieh3c.com的首页,对应的协议会把这个请求给组织好进行封装,然后通过socket接口交给下一层传输层去完成。

(2)传输层有两种协议,一种TCP(面向连接协议),一种UDP(无连接协议),而HTTP使用的是TCP协议,简单理解面向连接就是TCP能够保证数据能够到达对方,如果对方没收到,就会重新发送,直到对方收到为止。(这里暂时省去了TCP的细节)TCP会产生两个端口号,一个是访问者自己浏览器随机生成的端口号(假设为21345),服务器WEB的端口号为标准端口号(80),这个端口号我们在后续会在提及,传输层封装完毕,会交给下一层网络层。

(3)在TCP/IP中网络层使用的是IP协议,IP协议里面涉及两个重要地址,一个是源IP地址,一个是目的IP地址,源地址表示访问者,目的就是我们要去访问的服务器地址1.1.1.1,大家可能好奇,平时我打开电脑就能上网了呀,并没有去设置过什么IP地址,那是因为在网络里面有另外一个协议帮助电脑自动获取地址,这个协议就是DHCP。

这个时候电脑操作系统知道了服务器的目标IP,就开始根据这个IP找服务器,并且操作系统会做一个判断,这个目标IP地址是不是本地,还是其他的地方的,显然在服务器IP 1.1.1.1与本地电脑IP 192.168.255.2不在一个地方,不在一个地方的话,那怎么去往对方呢?操作系统会进行一个操作,把这个数据丢给默认网关,192.168.255.254,让网关来进行转发。

(4)这个时候是不是就万事大吉了,知道了服务器的IP地址,也知道去往对方交给网关处理就行了,但是要考虑这样一个问题,这个数据是要继续往下面封装的,下一层是数据链路层,在数据链路层里面可能存在着多个设备,那访问者怎么来确定你就是我要找的网关呢?

这个时候就要介绍另外一种地址了,物理地址(MAC地址),当设备出厂的时候,厂家会把这个地址烧录进网卡接口里面,它的作用就是在链路层里面来进行通信,并且这个地址由于出厂就已经固定烧录在网卡里面了,具有唯一性,所以能够来定位确认到某一台设备,明白了这个,访问者只要在链路层里面找这个物理MAC地址,不就能够确认网关是谁了吗?又出现一个新的问题了,访问者他不可能天生就知道网关的MAC地址是多少,那如何得知呢?访问者这个时候会在本地链路里面大吼一声,谁是192.168.255.254啊,告诉我!!网关听到这个后,发现找的是自己,也大吼一声,我就是!这是我的物理MAC地址!,这样访问者就知道了网关的MAC地址了,这个靠大吼一声的协议就是ARP协议,而这种链路层网络叫做以太局域网。(这个也是我们学习的重点)链路层封装完毕后,最终交给物理层(网卡)变成比特流1010101010,通过物理介质网线发送出去。

到这里,访问者电脑总算是完成了整个的数据封装流程,把这个浏览器的请求发送出去,交给网关了。

(5)网关收到以后,需要考虑一个问题,这个数据是给自己的呢?还是交给其他地方的?这个时候网关就需要做一个操作,就是把数据给解封装,因为网关只有看到了对应的信息,它才能够判断这个包到底是给自己的还是交给其他。

接下来的流程就不提物理层了,只要是正常规范的网卡跟线路它都能够去处理这些比特流的内容,后续重点放在二层、三层上面(这个也是路由交换的重点。)网关通过解封装后,得到以太网头部,发现目标MAC是自己,继续解封装,得到IP头部,发现目标IP地址是1.1.1.1,这个地址不是自己,那就是需要交给其他地方的,网关会执行一个操作,查找路由表,选择去往1.1.1.1的最优路径。这里从图上面可以发现去往目的地可以通过B,也可以通过C到达,也非常像我们去往一个地方,比如去北京,都知道做飞机是最快的,但是可能从你源地方那没有机场,你需要做班车或者地铁到最近的机场才行。同样的,网关查路由表发现去往目的IP 1.1.1.1,有B、C两条路径可以发送,它会通过路由算法做出一个计算,选择一条最优的路径抵达到对方,然后发送出去,比如这里从B去往目的地最优,这个条目会体现在路由表里面,网关知道去往1.1.1.1,发送给B,这个时候就有2个疑问了,第一:链路层与网络层的头部已经被解封装去掉了,路由器需要重新封装,第二:封装的内容怎么填写。

从访问者电脑到网关,以太网的头部源MAC地址是电脑的,目的MAC地址是网关的,那么到了网关这里,网关的网卡接口也有自己的MAC地址,B路由器的接口也有自己的MAC地址,这时候网关封装链路层的以太网头部在用之前的信息就不行了,因为它表示的是电脑找网关这段链路中用的,而到了这里则变成了网关去往1.1.1.1,交给B处理,那是不是以太网头部的源MAC变成了网关接口的MAC,而目的MAC变成了B的,这样B在收到这个包以后,它会发现原来是找它的,它也跟网关一样执行一样的解封装,查路由表,在封装,最终到达D。(网关到B,B到D获取的MAC同样通过ARP协议)

在这个结构里面,D的身后就是WEB服务器了,D在收到这个数据以后,也跟之前网关、B的操作一样,解封装链路层,发现目的MAC是找自己,解封网络网络层后 ,发现IP是1.1.1.1,就在自己身后,通过ARP得到服务器的MAC,然后封装好 ,交给服务器。

服务器收到以后,开始如下的解封装。

(6)服务器收到请求后会进行回包,最终跟来的时候一样,通过封装,然后中间经过路由器转发,最终也到达客户端,解封装,最终内容呈现在了浏览器的界面上。(是不是觉得不可思议,平时我们打开浏览器输入一个域名回车,中间竟然发生了这么多的事情。)

从上面例子划出重点

从上面的通信例子,跟我们生活中寄快递是不是有点类似,在某平台购买了一个商品,卖家作为发送方,将商品进行打包,通过快递平台选择一家,让其收件、打印单号(包含收件人信息:地址+姓名+电话),快递小哥会上门收件,回到快递点,快递公司会通过去往相近地区统一装车发往下一个转运中心,可能中间会经过一个或者多个转运中心,期间也可能会经历一次或者多次卸车、装车的过程,以及去往的路径也不一样,可能某一段走的陆运、某一段走的是空运,到达了最近的转运中心,开始卸车,将同一个区域的送往代理点,代理点的送货员将对应快递送到指定的地址(这个地址可能是某公司、某小区、某学校,这是没办法确定具体的收件人),最终会通过电话号码联系到最终的收件人进行收件,这样完成了整个的运输过程, 买家收到以后,就是一个拆件的过程。这里说下,快递的举例是没法全部跟上面的通信过程全部对应上的,只是说很多流程比较相似,便于初学者理解,毕竟用生活的例子代入进来比枯燥的协议流程要容易理解些,通过一个网络通信的流程以及生活的例子,这里列出几个重点信息(也是我们后续要学的内容)

总结

到这里呢,这篇内容就接近尾声了,这里先说下,最开始的案例有部分的流程是不对的,但是对于初学者来说,只能简化按这样的顺序讲解,否则就非常的复杂,不易于理解,后续在随着深入,博主会继续把这个流程在梳理一次,这样印象就更加深刻了,从最开始的举例,到中间的生活中的快递举例,在到后面的重要细节总结,一直在重复的讲解数据在传递过程中发生的事情,因为这个流程很关键,也是我们学习的重点,所以不断的重复加深印象,了解了整个通信过程,好处在于后续学习协议的时候会更加理解,并且排错的时候知道如何下手,因为清楚的知道每一层的作用,大致能够定位卡在哪个地方,比如网络层,目的IP在路由表中不存在,那自然数据就发不出去了,又或者以太网头部封装中,网关设备的MAC获取错误,自然数据会转发给错误的设备,希望大家可以多花时间去理解这个大致通信过程,做到心底有底,剩下的内容就是我们接下来要慢慢去学习的细节部分,完善整个路由交换的知识框架,这样才好进行网络的规划、对接、运用什么技术实现客户的需求等。顺便接下来留几个疑问,这样也是下面要开始涉及的内容了。

什么是IP地址,它的作用是什么呢?电脑系统是怎么知道要把这个数据交给网关处理呢?以及什么情况下才需要交给网关处理?DNS是做什么用的?ARP协议它如何实现的?服务器在解封装的时候,它是在下一层的时候就知道上一层使用的是什么协议?还是必须解封装后,抵达上一层,才能知道呢?电脑的IP地址是哪里来的?在网络传输中,IP与MAC哪个变化,哪个是不变化的?像网关这样有多个接口的设备,它在封装MAC的时候以哪个口进行封装呢?

(可以尝试自己根据上面的举例理解下,这样提高学习兴趣,后面会更有动力哇,但是切记不要钻牛角尖,这样很容易卡死在胡同里面,降低学习兴趣。)


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:动态路由协议(三)—OSPF多区域原理与配置(配置单区域ospf动态路由)
下一篇:华为设备常见SNMP操作(华为开启snmp)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~