一个请求在网络各层之间数据流转过程

当在浏览器中输入一个URL:www.baidu.com,h或者鼠标点击了一个超链接时,在网路中所发生的事件解析如下。

案例:淘宝买东西

1、输入地址

当我们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能的url了,他会从历史记录、书签等地方,找到已经输入的字符串可能对应的url,然后给出智能提示,让你补全url地址。对于Google的chrome浏览器,它甚至会直接从缓存中把网页展示出来,就是说,你还没有按下enter,页面就出来了。

2、DNS解析IP地址

  • 请求一旦发起,浏览器首先要做的事情就是解析这个域名,一般来说,浏览器会首先查看本地硬盘的hosts文件,看看其中有没有和这个域名对应的规则,如果有的话就直接使用hosts文件里面的ip地址。
  • 如果在本地的hosts文件没有找到对应的ip地址,浏览器会发出一个DNS请求到本地的DNS服务器,主机向本地域名服务器的查询一般采用递归查询。

递归查询:如果主机所访问的本地域名服务器不知道被查询的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求(即代替主机继续查询),而不是让主机自己进行下一步查询。

  • 本地域名服务器向根域名服务器的查询通常是迭代查询(也可以用递归查询,这取决于最初的查询请求报文的设置是要求使用哪一种查询方式)。

迭代查询:当根域名服务器收到本地本地域名服务器发出的迭代查询请求报文时,要么返回所要查询的IP地址,要么告诉本地域名服务器:下一步应当向哪一个域名服务器进行查询,然后让本地域名服务器进行后续的查询(而不是代替本地域名服务服务器进行查询)。根域名服务器通常把自己知道的顶级域名服务器的IP告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么直接查询出IP要么继续迭代。

为了提高DNS的查询效率并减轻根域名服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛使用高速缓存(有时也称为高速缓存域名服务器)。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。

3、浏览器知道了目标地址,就会开始打包它的请求,对于普通的浏览请求,通常会使用HTTP协议,但是对于购物等私密性比较重要的请求,选择HTTPS加密的协议,给数据加上HTTP头(每层都会给数据增加首部信息),应用层将请求数据打包,然后交给下一层传输层。

在这里插入图片描述经过应用层的封装后,浏览器会将应用层的包交给传输层去完成,通过socket编程来实现。传输层有两种协议,TCP和UDP。这里使用的是TCP,面向连接。TCP会保证这个包能够到达目的地,如果不能到达,就会重新发送,直到到达。

TCP协议里有两个端口,一个是浏览器监听的端口,一个是电商服务监听的端口,通信时,会根据端口来判断数据包发送给哪个进程。

在这里插入图片描述
4、传输层封装完毕,浏览器将数据包交给网络层。网络层的协议是IP协议。网络层的协议是IP协议,IP协议里有源IP,目的IP,这里的源IP就是浏览器机器的IP,目的IP就是电商服务器的IP。

在这里插入图片描述操作系统知道了目标IP,会判断这个IP是本地还是外地,本地的IP地址,可以直接访问;外地的IP地址,需要通过网关。在操作系统启动的时候,就会被DHCP协议配置IP地址,以及默认的网关。比如,这里的客户端电脑IP是192.168.1.101,网关为192.168.1.1,操作系统会根据ARP协议查找到网关在哪,获取到网关的MAC地址

MAC地址?

网络中每台设备都有一个唯一的网络标识,这个地址叫MAC地址或网卡地址。数据包传送的关键是将目标节点的IP地址映射到中间节点的MAC地址。IP地址与MAC地址的映射要通过ARP地址解析协议来完成,它可将网络中的IP地址映射到主机的MAC地址,如交换机可以根据网络中的IP地址来找到本地主机的MAC地址。具体过程是:当交换机接收到来自网上一个数据包时,会根据该数据包的目标IP地址,查看交换机内部是否有跟该IP地址对应的MAC地址 ,如果有上次保留下来的对应的MAC地址,就会将该数据包 转发到对应MAC地址的主机上去。如果在交换机内部没有与目标)地址对应的MAC地址,则交换机会根据ARP协议将目标IP地址按照“表”中的对应关系映射成MAC地址 ,数据包就被转送到对应的MAC地址的主机上 。

为什么要有MAC地址?
整体与局部信息传递时候,需要知道的其实是两个地址:终点地址(Final destination address)下一跳的地址(Next hop address)IP地址本质上是终点地址,它在跳过路由器(hop)的时候不会改变,而MAC地址则是下一跳的地址,每跳过一次路由器都会改变。这就是为什么还要用MAC地址的原因之一,它起到了记录下一跳的信息的作用。

在这里插入图片描述
IP地址与MAC地址的区别?

  • 对于网络上的某一设备,如一台计算机或一台路由器,其IP地址是基于网络拓扑设计出的,同一设备或计算机上,改动IP地址是很容易的(但必须唯一),而MAC则是生产厂商烧录好的,一般不能改动。
  • 长度不同,IP地址为32位,MAC地址为48位。
  • 分配依据不同,IP地址的分配是基于网络拓扑,MAC地址的分配是基于制造商。
  • 寻址协议层不同,IP地址应用于OSI第三层,即网络层,而MAC地址应用在OSI第二层,即数据链路层。数据链路层协议可以使用数据从一个节点传递到相同链路的另一个节点上(通过MAC地址),而网络层协议使数据可以从一个网络传递到另一个网络上(ARP根据目的IP地址,找到中间节点的MAC地址,通过中间节点传送,从而最终到达目的网络)。

5、操作系统将IP交给下一层,也就是MAC层。网卡再将包发出去。这个包先到达网关,网关收到后,会判断下一步往哪里走。网关往往是一个路由器,到某个IP应该怎么走,这个叫做路由表。

路由器是连接两个或多个网络的硬件设备,在网络间起网关的作用,读取每一个数据包中的地址然后决定如何传送的网络设备。它能够理解不同的协议,例如me讴歌局域网使用的以太协议,因特网使用的TCP/IP协议。这样,路由器可以分析各种不同类型网络传来的数据包的目的地址,把非TCP/IP网络的地址转换成TCP/IP地址。

6、路由器与路由器之间会有路由协议,常用的是OSPF,BGP。网络包知道了下一跳的路由器,会根据目标IP通过ARP协议,找到目标服务器的MAC地址。当通过城关之后,根据MAC地址找到目标服务器。

链路层转发:根据MAC地址转发数据帧,交换机内有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据这张表负责将数据帧传输到指定的主机上的。
工作原理:交换机在接受到数据帧以后,首先,会记录数据帧中的MAC地址和对应的接口到MAC表中,接着,会检查自己的MAC表中是否有数据帧中目标MCA地址的信息,如果有则会根据MAC表中记录的对应的接口将数据帧发送出去(单播),如果没有,则会将该数据帧从非接受接口发送出去(广播)。

7、目标服务器发现MAC地址与数据包中的MAC地址一致,然后取下MAC头,发给网络层,发现IP也对上了,取下IP头,IP头里会写上上一层封装的TCP协议,交给传输层。TC收P到包后,会回复一个包,表名自己收到了。

8、如果一段时间还是没有收到包,发送端的TCP会重新发送这个包,这还是上面的过程,还是上面的过程,直到收到恢复。这个重试不是你的浏览器重新将下单这个动作重新请求一次。对于浏览器来讲,就发送了一次下单请求,除非TCP这一层出了问题,例如连接断开,才轮到浏览器的应用层重新发送下单请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值