计算机网络基础(三)---网络层-IP协议的转发流程

书旅 · · 564 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

文章内容概览

在上一篇文章中提到,计算机A在给计算机B发送数据的时候,数据的路径,可能是通过中型网络大型网络中型网络小型网络,然后到达计算机B

现在把这条路径抽取出来

并且将其压平,可以看到计算机A通过中间的3个网络和路由器,将数据报文传输给了B

关于数据的转发过程,有一个概念叫:逐跳(hop-by-hop)。意思就是计算机A发送的报文是一跳一跳的来到计算机B的,网络1==》路由器1==》网络2==》路由器2==》网络3==》计算机B

路由表简介

在前边介绍数据链路层的时候,有提到过一个MAC地址表。它的工作流程如下:

路由表工作在网络层,它的工作流程其实是和MAC地址表差不多的。下图中左边为MAC地址表、右边为路由表。MAC地址表由两列组成,分别是MAC地址硬件接口。路由表的重点部分也是由两列组成的,分别是目的IP地址下一跳IP地址计算机和路由器都拥有路由表

IP协议的转发流程

在最开始的时候,有提到下边这个网络拓扑。计算机A需要跨设备将数据传输给计算机C,仅有数据链路层是无法解决的,因此需要网络层。有了路由表和前边了解到的IP协议的内容,就可以实现跨设备的数据传输了

整个跨设备数据传输过程如下:

  • A发出目的地为C的IP数据报,查询本地路由表发现下一跳为E
  • A将数据报发送给E
  • E查询本地路由表发现下一跳为F,将数据报发送给F
  • F查询本地路由表发现目的地C,是和自己直接连接的,然后将数据报发送给C

上边是仅从网络层去看这整个数据传输的过程,下边结合数据链路层和网络层,看整个过程:

第一步:

  • A发出目的地为C的IP数据报,查询路由表发现下一跳为E
  • A将IP数据报交给数据链路层,并告知目的MAC地址是E
  • 数据链路层填充源MAC地址A目的MAC地址E
  • 数据链路层通过物理层将数据发送给E

第二步:

  • E的数据链路层接收到数据帧,把数据帧传输给网络层
  • E查询路由表,发现下一跳为F
  • E把数据交给数据链路层并告知目的MAC地址为F
  • E的数据链路层封装数据帧并发送(此时源MAC地址和目的MAC地址就会发生变化,源MAC地址为E,目的MAC地址为F)

第三步:

  • F的数据链路层接收到数据帧,把数据帧交给网络层
  • F查询路由表,发现下一跳为C
  • F把数据交给数据链路层,并告知目的MAC地址为C
  • F的数据链路层封装数据帧并发送

从上边的整个过程中可以发现

  • 数据帧每一跳的MAC地址都在变化(源MAC地址和目的MAC地址)
  • IP数据报每一跳的IP地址始终不变

在快速变化的技术中寻找不变,才是一个技术人的核心竞争力。知行合一,理论结合实践


有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:书旅

查看原文:计算机网络基础(三)---网络层-IP协议的转发流程

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

564 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传