用户名:
密 码:

网络连接之数据传输过程简介

平时大家在上网的过程中,都要通过电脑,路由器,网络之类的设备连接到网络中,网络数据在请求服务器的过程中,IP模块是怎么发送的数据,数据又是怎么到达的服务器呢?

交换机,路由器,集线器,网卡等又是干什么的呢?

下面我们就尝试简要介绍一下。

二话不说,先上图

网络数据格式转换过程

上图中描述的就是消息格式转换的过程,顺便也描述了各模块对它做了啥,下面我们展开来看

TCP模块对消息做了啥

上一篇文章中也提到,TCP模块将HTTP消息按照长度切割后,在每段消息中加入TCP头部后委托IP模块进行发送。那么TCP头部包含哪些信息呢?按照多图的原则,上图

TCP头部格式

头部中有很多的字段,其中控制位中也有很多的信息,但是我们不管他,只需要知道这些字段的作用就是为了让上一篇文章中“约吗”的那个腻歪操作更加保险更加绚烂而已。我们只需要记住,TCP模块为数据添加了我方的端口信息和对方的端口信息。

因为端口对应着进程,进程对应着应用,所以TCP加入头部是为了方便对方接到数据后知道找哪个应用。

IP模块做了啥

TCP分割并加入头部的每一段数据都是一个包。那么IP模块是如何将这些包发送给对方的呢?

其实,IP模块也并没有执行发送的动作,而是在每个包上面又添加了IP头部和MAC头部,然后委托给以太网使用以太网技术进行数据发送,当然在现实的世界中,不一定是以太网,有可能是无线局域网或者接入网等其他的通信技术,但是需要明确的是,无论是使用哪种通信技术,网络层的通信模块也都只是为物理层的通信技术提供数据定位准备,并不实际执行发送,当然,为了简化流程,我们这里依然非常粗暴的认为我们所描述的信息使用的是以太网通信技术发送的。

那么IP模块为什么要加入IP头部和MAC头部呢,它们又分别是什么玩意儿呢?

1、先看IP头部

按照惯例,先上图

IP头部结构

头部信息中有几个关键字,分片、IP地址、协议类型。从这些关键字我们可以看出以下信息:

协议类型:IP模块不止接受TCP模块的委托,同时也会接受其他协议的委托

分片:IP模块会对大的网络包进行分片,每个分片有相同的ID,同理,接收方需要等到所有的分片才算接收完成,至于什么样的包算大包则是由转发路由器端口的类型决定的

IP地址:IP模块负责告知发送的目的地

值得注意的是,IP模块只是负责告知目的地,这个目的地是应用通过TCP模块传过来的,如果目的地本来就是错的,与IP模块也没有任何关系,IP模块不负责保证地址是对的。

2、再看MAC头部

按照惯例,再上图

MAC头部结构

从头部的内容可以看出,以太网包的内容可以是IP、ARP等协议的包,他们都有对应的值。而MAC头部追加的最重要信息便是MAC地址。那么MAC地址是什么呢?

MAC地址(Media Access Control或者Medium Access Control) 又叫做媒体地址或硬件地址,总之,它是与硬件绑定的,那么是哪个硬件呢,网卡。而我们上文中一再说把消息送往目的地,我们也曾经说过目的地是服务器,其实不准确,准确来说应该是IP地址,每一张网卡对应一个IP地址,所以目的地也可以说是网卡。而网卡又是与MAC地址是绑定的,所以根据交换律,IP地址与网卡是一一对应的,我们可以认为两者是完全相同的。只不过IP地址工作在网络层,而MAC地址是工作在数据链路层。

3、路由表--老大爷的活地图

每个网卡缓存区都存储着自己对应的MAC地址,所以发送数据时能够很容易地将发送方MAC地址信息写入到MAC头部信息中,但是到目前为止我们只知道接收方的IP地址,并不知道其MAC,所以我们需要知道IP和MAC的对应关系,那这种对应关系存储在什么地方呢,答案是路由表。路由表是路由器的一种存储,所以在IP模块,首先会查询路由表,当然这个路由表不是存储在路由器中的,操作系统中也有一份路由表,在操作系统内便可以完成MAC头部的添加。

路由表结构

其中目标地址代表匹配的IP地址,接口表示路由器的各个端口,跃点数可以简单理解为到下一个路由器(或者终端)的距离远近,越小代表距离越近。上一篇文章中我们讲述和IP地址和子网掩码是如何配合的,以第一行为例,第一行可以匹配到10.10.1.*的所有IP地址,但是我们再看第二行,可以匹配10.10.1.101的地址,那么我们会选择使用第一行匹配还是第二行匹配呢,当然是第二行,因为第一行相当于告诉你想去这个小区的跟我走,第二行相当于想去这栋楼的跟我走,当然是跟着精确的走。所以在匹配的时候有两个原则

优先匹配精度高的

同样精度的优先匹配距离近的

那么这个表是怎么来的呢,有可能是手动输入的,但是更有可能是根据ARP协议来存储的,也就是过来一个IP之后,路由器在子网内广播,拿着喇叭喊,这个IP是谁的,把你的MAC传过来,对应的设备听到之后就会反馈,然后路由器把它记下来。

从上面的表中,我们可以根据目标IP匹配出往哪个端口走,但还是不知道其对应的MAC,但是每个端口都是有自己的IP和MAC地址的。就像上面的的例子,选择的e2口,我们当然可以知道e2口对应的MAC地址,但是它并不是目的地对应的IP地址,而是下一个路由器的MAC地址,就相当于说我们要从北京到广东,一个老大爷告诉我们你先去山东,到了山东另一个老大爷说你先去安徽,这些老大爷就是路由器,他们知道从北京到广东的最短路径。

那么什么时候算结束呢,如果路由表中的网关地址和端口IP地址相同了,恭喜你,你到地方了。

以太网做了啥

上文说到,一个老大爷会将你指向另一个老大爷。但是路还是要我们自己走的,同理,信号还是需要有人传输的。实际执行传输的是以太网,首先IP模块会将信息发给网卡驱动,网卡驱动会将包传递给网卡中的MAC模块,MAC模块会添加尾部校验信息用于失真校验,同时在网卡中将数字信号转换为电信号或者光信号,也就是高低位,但是单纯的高低位信息无法区别频率,所以网卡在发送的时候会叠加上时钟信号,当然在发送的时候会做一些其他的转换,但是我们不必关心。

这时,信息进入网线开始发送,发送的目的地便是下一个路由器(接收方的MAC地址),接下来信息有可能到达交换机也可能到达集线器。

如果集线器接到了包,就会把信号广播到整个网络,各个设备(路由器或终端)根据信息中接收到信息中的接收方MAC地址来判断是不是自己的包,相当与拿着喇叭说,xxx,有人给你留言说xxx,大家都能听见。集线器不负责修正信号,信号如果失真了,接线器也会失真着传。

如果是集线器接收到了包,就会根据自己存储的MAC地址与网线端口对应表将信号传送到对应的端口(这个表的维护方式:有包从端口过来的时候,会将包发送方MAC和端口的信息记录下来),相当于说知道对方的门牌号,直接派送过去。与路由器不同,交换机的端口并不具有MAC地址。

MAC地址与端口对应关系表

当包到达下一个路由器,路由器转换信号并更新MAC头部信息,然后再委托以太网进行发送。依次下去,直到找到目的地。

.

  来源:互联网
阅读:
日期:2018-9-23
 
收藏此文 】 【 打印此文 】   
  • 上一篇:趣头条创业两年半赴美上市,官网意是QuTouTiao.Net这样域名
  • 下一篇:没有了
  • TAG: 网络连接,数据传输
    • 官方网址: dns110.com
    • CopyRight © 2010 域名频道 版权所有
    • 地址:上海市松江区新松江路1188弄37号 邮编:201620
    • 电话: 021-67820741 67820742 67820743 传真: 转分机805 值班电话: 021-67820743
    • 在线支持QQ: 219854  客户服务QQ:714658643  MSN:chenlh@dns110.com  Email: support@dns110.com
    • 沪ICP备06024974号