当前课程知识点:互联网体系结构 >  第四周:IP协议及路由表 >  IP协议栈源代码解析 >  Video

返回《互联网体系结构》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《互联网体系结构》慕课在线视频列表

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

-本周作业

--外部链接

第二周:Socket网络编程

-编译、构建和调试

--Video

--Video

--Video

-Socket接口

--Video

--Video

-UDP范例代码

--Video

-TCP范例代码

--Video

-本周作业

--外部链接

第三周:TCP协议与Linux内核

-TCP协议概述

--Video

--Video

-Linux网络协议栈源代码简介

--Video

-Linux系统的编译、构建和调试

--Video

--Video

-TCP协议源代码分析

--Video

-本周作业

--外部链接

第四周:IP协议及路由表

-IP协议基础

--Video

-路由表

--Video

-路由转发举例

--Video

-IP协议栈源代码解析

--Video

-路由协议简介

--Video

-网络层数据传输路径解析

--Video

-本周作业

--外部链接

第五周:ARP协议及ARP缓存

-ARP协议基础

--Video

-ARP解析的过程

--Video

-ARP解析在网络传输过程中的作用

--Video

-ARP协议栈源代码解析

--Video

-本周作业

--外部链接

第六周:二层交换网络及转发过滤数据库

-以太网基础

--Video

--Video

-交换机的学习、转发和过滤数据库

--Video

-常见二层协议

--Video

-数据链路层在Linux网络协议栈中的一些关键代码分析

--Video

-本周作业

--外部链接

第七周:DNS协议及域名存储与解析

-DNS协议基础

--Video

-DNS域名的存储

--Video

-DNS域名解析过程分析

--Video

-本周作业

--外部链接

第八周:互联网架构设计背后的渊源

-互联网架构设计的最初动机与核心目标

--Video

-互联网架构设计的具体目标及背后重要权衡

--Video

--Video

--Video

-课程考核

--外部链接

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。