当前课程知识点:互联网体系结构 > 第四周:IP协议及路由表 > IP协议栈源代码解析 > Video
那么
我们再来看那个整个IP协议栈的这个功能逻辑啊
他去内部具体做了什么
那么同样我们可以看到
他有两个关键的数据流
一个那是发送一个那是接收的吧
一个是接收一个呢
是发送
先看发送的吧
发送的也就说我们从上层
比如说从TCP下来
可能大家还记不记得有
也就是IP层向上发送
发送的时候我们看他有个数据和目的地址的吧
这两个是关键信息
然后呢
放入队列里面,这边的队列里面这张有个处理的机制
那他有可能
就是需要转发出去
选路由,转发出去呢
他在路由的时候呢
他会得到几个信息
除了IP packet
得到这两个信息
这两个信息呢
我们需要这地方还有一个分段机制
将分片机制也就是IP有一个分片机制
而分片把这个整个IP包可能特别大
需要把它分片
一个一个的有链路层
把它发出去对吧
当然
这地方的他还要借助于这个ARP的
但实际下面的,就是他数据不完全是数据链路层了哈
他还有另外一个ARP协议,进一步的处理
他才能发到链路层上去
因为就是链路层上
你要知道Mac地址的吧
所以还需要借助于IP解析
那么
对于就是接收的过程
它是那样就是底层链路层接到了一个mac帧
发现他的类型是0800
他是一个IP数据包
那么那就通过callback的方式
也就是说定义了一个函数指针
然后调用了IP的接收函数
对吧接收函数
他就在这儿接收过来
那有个处理过程
如果他也可能是
直接把它转发出去对吧
如果发现这是他的目的地址
就是不是我本身
对于路由器来讲
大多数情况都是这样子了
路由器来讲
他是直接把它转发出去对吧
但是对于我们主机来讲
发现这个目的IP地址就是我自己,那么呢
我需要对他进行做一些处理
直接把他就是这边就是如果有分片的话
再把它重组一下
对吧
如果有分片的吧
如果是没分片的话
就直接放入队列
有通知
上层应用来帮他取走对吧
徐总所以来这个这这是IP协议栈的工作机制
大概是这样
我们具体来看一下哈
我们具体结合着这个IP协议栈的代码
我们来看一下IP协议栈的初始化函数,与TCP一样
他也是在函数中被调用
那我们就是之前反复讲了
是整个TCP/IP协议栈初始化的入口
所以所有的互联网协议的就是相关协议的初始化
可能都会和函数有关啊
这里面的IP init里边
那他是最关键的
就是路由表的结构的和初始化
就是
他的主要代码的就在
这里面可以找到啊
主要做了三方面的工作
这三方的工作就是,他主要是初始化路由缓存
通过哈希结构来快速获取
目的IP地址的下一跳
对吧
他是一个路由表的数据结构以及初始化作为路由表内部表示形式的
他这个路由表的结构
它定义的也很巧妙
也很复杂
我们就在这感兴趣的同学可以仔细研究一下
另外一个呢
他还有就是初始化了一个AVL树
用于跟踪最近有数据通信的,也就是他还有一个缓存机制
可以加速
可以加速它的查找
查询路由表
IP协议里面最关键的通过目的IP查询路由表得到下一跳的IP地址的过程就是就是我们那
这里可以进一步的了解查询的过程
当然这里呢
需要理解路由表的数据结构和查询算法会比较复杂
对吧
这个有心的同学那可以跟踪一下
我们可以通过menu os,我们的实验环境来跟踪这个函数的调用栈
那么接下来呢
我们再来看IP包的接收和发送过程对吧
因为这个那是整个协议栈里面最核心的过程
我们也需要仔细的研究一下,IP包的接收和发送过程是传输层协议数据收发过程的延伸
也就是说那个传输层
比如说TCP
在发送数据的时候
他需要调用IP的发送数据的接口
对吧
就是IP在接收数据的时候
是由IP层通过函数指针的方式调用了TCP中对应的接收数据的函数
那么可以看到在IP层,那就是上层
对于就是上层传输层
会调用IP层的发送数据接口
也就是
有IP层来提供了一个向上,提供了一个发送的接口
同时呢
数据接收的过程的有
底层链路层会调用IP协议的接收数据的接口也就是
我们可以这两个函数
大家可以跟一下
-课程内容简介
--Video
-网络协议基础
--Video
--Video
--Video
--Video
-上网浏览网页背后的网络通信过程
--Video
--Video
-实验环境安装配置
--Video
-网络相关命令
--Video
--Video
-本周作业
--外部链接
-编译、构建和调试
--Video
--Video
--Video
-Socket接口
--Video
--Video
-UDP范例代码
--Video
-TCP范例代码
--Video
-本周作业
--外部链接
-TCP协议概述
--Video
--Video
-Linux网络协议栈源代码简介
--Video
-Linux系统的编译、构建和调试
--Video
--Video
-TCP协议源代码分析
--Video
-本周作业
--外部链接
-IP协议基础
--Video
-路由表
--Video
-路由转发举例
--Video
-IP协议栈源代码解析
--Video
-路由协议简介
--Video
-网络层数据传输路径解析
--Video
-本周作业
--外部链接
-ARP协议基础
--Video
-ARP解析的过程
--Video
-ARP解析在网络传输过程中的作用
--Video
-ARP协议栈源代码解析
--Video
-本周作业
--外部链接
-以太网基础
--Video
--Video
-交换机的学习、转发和过滤数据库
--Video
-常见二层协议
--Video
-数据链路层在Linux网络协议栈中的一些关键代码分析
--Video
-本周作业
--外部链接
-DNS协议基础
--Video
-DNS域名的存储
--Video
-DNS域名解析过程分析
--Video
-本周作业
--外部链接
-互联网架构设计的最初动机与核心目标
--Video
-互联网架构设计的具体目标及背后重要权衡
--Video
--Video
--Video
-课程考核
--外部链接