【网络知识】数据路由方式

应用层负责产生数据,传输层负责数据分割、可靠传输等,网络层负责数据路由,链路层负责数据的传送。下面我们先介绍一下关键概念,然后再介绍数据的完整路由过程。


基本概念

首先来看一下下面这幅图,它对本文的理解至关重要,图中表示了一个接入internet的PC电脑,几乎每一个电脑都是用这种逻辑结构接入Internet的,这种结构也反映了PC接入Internet的主要行为。]

图 1 TCP/IP网络基础.png

图中的方框代表了一个数据流入Internet的通信主体,横向的虚线代表的是通信电路(如:同轴电缆),*代表这是一个IP地址,@代表这是一个以太网地址,O代表这是一个接入节点;理解这幅图对于理解互联网技术很重要。

数据单元(UDP)流经Internet依赖于各种协议栈。在不同的协议模块中,数据单元有着不同的名字,如:

  • 当数据单元在以太网模块中,它被称作以太网帧(Ethernet frame);
  • 当数据单元在IP模块和以太网驱动模块之间流动时,它叫做IP包;
  • 如果数据单元在IP模块和UDP模块之间,它被称作数据报;
  • 当数据单元在TCP模块和IP模块之间传送,它叫做TCP分段;
  • 当数据在网络应用程序中时,它叫作应用程序消息;
多端合成/分解器的数据流

如果一个应用程序使用了TCP协议,那么数据就从应用程序流入TCP模块,同样的道理,数据也可能流入UDP模块。而FTP应用就是一个典型的使用TCP协议的应用程序,它的协议栈:FTP/TCP/IP/ENET,同样的还有SNMP应用,使用了UDP协议,协议栈为: SNMP/UDP/IP/ENET。数据流流经协议栈的图标方式可以参考图1。

图 2 多端合成器和多端分解器.png

其实TCP、UDP以及以太网驱动模块既是一个多对一的多端合成器,又是一个一对多的多端分解器。当作为多端合成器时,它们将多个输入端口的数据处理然后从一个端口输出(如:TCP可以同时处理多个应用程序的数据,即多任务操作);当作为多端分解器时,它们可以将1个输入端口的数据分解成多个输出传送到不同的模块。

概念可能有点抽象,我们举个例子理解,如以太网模块接入网络,当一个以太网帧流入以太网驱动模块,它接收到以太网帧,既可以传送到IP模块,也可以传送到ARP模块,以太网驱动模块会根据以太网帧头部的类型来判断将数据传送到IP模块或ARP模块。同样的道理,IP包流入IP模块,IP模块IP头部信息决定数据流向TCP模块还是UDP模块。

说到这里不得不说一下以太网地址,IP地址用来唯一的标示某个Internet网络,以太网地址采用的时6个字节的十六进制数,用于唯一的标识某个接入Internet的以太网驱动设备,即我们通常的网卡地址。IP地址随着PC的移动会改变,以太网地址只有在硬件设备更换才会改变。

路由器

有时候,某个设备可能同时有多个以太网,多个IP地址,如图所示:

接入多个以太网的设备.png

路由器就是一种这样的设备,但是大部分路由器没有也不需要图中所示的TCP和UDP模块以上的模块。

IP模块

IP模块的主要功能是路由寻址,负责根据目的IP地址查询路由表,决定下一跳的IP地址。

以太网驱动模块

以太网驱动模块接入网络,它可以对外传送数据,并且可以接收自己的数据和广播数据,这里的自己的数据指的是以太网帧的目的以太网地址和自身的以太网地址相同,广播地址指的是FF-FF-FF-FF-FF-FF。

如下图所示是一个以太网帧里面的源/目的IP和以太网地址的对应关系,以太网帧只会被发送到目的以太网地址的以太网设备中:

以太网帧.png
ARP路由模块

ARP路由模块负责IP地址到以太网地址的映射,当IP包进入缓存队列,准备发给以太网模块时,ARP模块会查询自身的ARP表,返回一个跟目的IP匹配的以太网地址,然后,以太网才可以将数据发送到这个以太网地址。如果ARP表中没有这个映射关系,以太网模块会向以太网内广播,询问谁是这个IP的设备,来获取IP对应的以太网地址。以太网中的其他设备接收到以太网帧,查询自己的IP后发现这不是自己的IP,丢弃;如果是自己的IP,响应自己的以太网地址给源以太网。至此ARP表得到了更新,重新发送IP包。

ARP 表.png
完整的网络通信过程

如下图所示,有三个网络分别是Development、Accounting、factory。还有一个路由器delta,路由器接入到了三个网络中,所以它有3个IP地址和3个以太网地址。下面我们就来看看一个数据是怎么从alpha网络到达factory网络中的。

网络通信.png

当alpha向factory发送数据时,IP路由模块首先会查询自己的IP路由表,IP路由表如下:

alpha IP路由表.png

如表中所示,首先会根据目的IP的前三位网络号,遍历路由表,进行匹配,匹配到第三行factory选中,direct/indirect flag字段指示factory网络不能直达,只能间接通过devnetrouter路由器到达,可以从1号接口传送数据。IP包仍然包含目的IP地址即factory的IP地址,但是目的以太网地址应该是路由器的以太网地址,所以IP模块结下来查询ARP表,找到对应的devnetrouter路由器的以太网地址,将数据包发送到路由器,路由器以太网接收到以太网帧,发送到IP模块,IP模块发现目的IP不是自己的IP地址,接着查询自身的路由表:

delta 路由表.png

如表中所示,factory网络可以通过3号接口直达,接下来,IP包中仍然带有目的IP地址,IP模块使用ARP表查询factory的以太网地址,然后将IP包发给路由器以太网模块,由以太网模块从3号接口发送出去。factory接收到数据到达IP模块,分离IP头部,发现这是自己的IP,进一步将数据转发至上层。

注意:IP地址中的前三位是网络号,第四位是主机号,所以使用前三位可以判断是否是同一个网络。


参考:
RFC 1180 - TCP/IP参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容

  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,051评论 6 174
  • 11.1 引言 UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一...
    张芳涛阅读 2,795评论 1 6
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,051评论 0 8
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    保川阅读 5,946评论 1 13
  • 饮料好不好喝,七分看饮料,三分看杯具。 好比同一盆蛋炒饭,放在巨大的白色餐盘中间,比放在打包盒里高级一百倍,吃起来...
    企鹅吃喝指南阅读 2,069评论 1 15