00:00
好的,那首先啊,欢迎各位朋友来到铃声教育。考试weaker。今天晚上我们主要是讲解这个利拉克斯内核源码分析里面的一个网络协议站架构。那么接下来的话呢,我们首先从我们的整体这个概念上啊,要了解清楚。第一个第一幅图啊。那么我们作为这个软件工程师,一般接触的是基于什么呢?用户空间的层面啊,这个应用程序就是应用层这一块。那我们再次进行进一步的深入的话,那就到内核这部分了啊。那如果你再深入到里面呢,就是到硬件啊,做硬件开发这一块了,这就是啊,大体上我们了解这一块。那么另外的话呢,我们内核主要是研究技操系统啊,跟那个什么呢,硬件层面这一部分。那么针对什么呢?这个内核空间里面我们又可以进行划分啊,我用这个红色的框框把它套起来。
01:03
那么可以分为哪些呢?你比如进程调度啊,内存管理以及什么呢?网络管理子系统,还有这个虚拟文件啊,设备驱动这一块。以及什么呢?进程间通信等等。那再往下面,它就是它对应的一个硬件设备。那本节课的话呢,我们就是针对啊这个什么呢。网络管理子系统这一块进行进一步的研究。那主要是从几个呢,五大点啊进行了学习,那我们学到哪里啊就算哪里。那我们都知道啊,利拉克斯这款操作系统,它是非常成功的啊,那么并且稳定可靠啊。那基本上做服务器的选择它,因为它是免费,而且是什么呢?啊,它对于我们来讲,你比如啊用一些什么呢?比如用在这个,嗯,导航设备这一块,比如GPS设备是不是都用到啊还有什么呢?比如医疗医疗这个仪器。
02:06
还有这些无线路由器啊,啊,还有这个,呃,电视里面现在电视盒等等这些相关的嵌入式设备,那么它都离不开我们这个linu克斯这款操作系统啊,作为一个支撑。那么还有一些什么呢?这个消费的电子产品啊,有很多很多啊。但是很多这些半导体的,半导体这个公司啊,这个厂商,他们开发这个什么呢?板机支持这个包,你比如啊BP,它也是基于什么呢?Linu克斯的。虽说。啊,利纳克斯,它最初它只是一款基于什么呢?英特尔,比如叉八六超系统的啊,目前啊,它已经移植到什么呢?比ARM是不是MPS以及什么呢?还包括PUPC等等站内的一些各种处理器啊。那现在我们就把这个啊给大家记下来是吧。
03:01
那第一个的话呢,我们刚才讲的啊。那。利纳克斯,它这一款啊。这个操作系统。最初啊,就是它最初的这一款。嗯。哎,操作系统是基于什么呢。他主要是基于这个。英特尔啊,这个啊。叉八六。是不是,但是啊,现在是不是现在呢啊已经什么呢?已经移植啊,就是移植到么呢,移植到ARM了,这个就不用讲了,是不是还有到什么呢?还到我们这个popular PC啊到这一块了啊以及什么呢?以及后面比如m is等一下啊你的弹。MIPS对不对,等等啊等等在内。包括什么呢等等啊在内的一些什么呢。啊,各种处理器。
04:02
现在我们都知道啊,你比如安卓,你这个这个现在手机是不是这个操作系统啊,你比这个安卓这个操作系统呢。对不对,他是什么啊。它是我们当前。当前什么呢?最常见的啊,就是最常见的一个什么呢啊。平板的一个什么呢?比如平板电脑就这块啊,啊还还有什么呢,还有这个,比如我们现在这些平板电脑,还有一个智能手机。啊,智能手机啊,操作系统都是基于这一块的。啊,后面现在他还用于什么呢?用于我们,比如我们这个,呃,智能电视啊,这个领域里面啊。用的比较多是不是,那么这款操作系统它正是什么呢?正是Linux内核都是激励nux内核,就是说你搞清楚了,所以我们学习Linux内核对我们的帮助是非常大的。就这一点是吧。但是呢?Linux内核这个网络站是不是,它是Linux内核当中一个非常重要的一个子系统,所以在这里的话,我就给它列出来,看到没有网络管理子系统啊,Network magic什么呢?下面连接到什么呢?连接到这个网络设备嘛,Network device到这来啊,就是硬件设备这一块是不是?
05:19
但是在基于什么呢?在基于这个Linux系统当中,你不使用任何网络功能是很少的,我们不管是我们的服务器也好啊,还是这个台式机也好,是不是还是什么呢?还是移动设备啊,还有其他这些嵌入式啊,都是如此啊。即便我们机器啊,有任何硬件的网络设备,没有任何的网络硬件设备都是非常非常少,是不是,所以说啊。针对这一块的话,那么网络站它就这么进行进一步的一步一步的往下分了,是不是,但是我们根据这个网络层次,我们在前面啊给大家提到过什么意思呢,Linux这个。
06:01
内核这个斜脏的层次啊。从最初我们开始的话。它是基于什么呢?你比如我们在学习这个什么,我们学习这个计算机网络的时候,是不是,那么它这里面就提出了一个什么,他就提出了一个概念叫做什么叫做开放,就osi对不对,我们叫做开放系统啊。开放系统互联什么呢?这个模型有个地方叫参考模型叫OOSI,是不是就这一块。啊,那么这个osi里面,它这个层次呢,它总共啊,他直接定了什么,只定了七个逻辑层。七个逻辑啊,七个逻辑的一个网络层,那具体哪一层我就不多讲了,你比如什么从从按照我们的这个从从低往高起数,从下面往上数,是不是就是我们所讲的物理层呢,数据应用层呢,网络层呢,传输绘画表示应用层呢,它都是这一些啊,但是我们通过一个图形可以把它检测出来啊。
07:06
上次我给大家发好了是不是,你看osi的模型。在这里面。从物理层,数据链路层,网络层,包括传输、绘画、表示,应用层,你看总共分为七层是吧,那现在我就将这七层啊,直接换到我们对应的这个笔记当中,那么如果啊,大家在学习过程中,如果没有跟上我这个步骤的话,没有关系,是不是,那么你可以啊,找秋香老师来领取。今天晚上这个课堂笔记是不是,那这个课堂笔记的话呢啊,他的QQ和微信啊是同号啊。就是。啊,207032995是吧,啊,大家直接加他就OK了是吧?啊那么呃,七个层次啊,机体如下图所示,是不是如下图。嗯,所示就可以了,是吧,就这么表示啊OK。
08:01
好,那么现在我们了解之后,那我们再回顾一下是不是什么呢?你比如这个物理层,物理层它是提供一些什么底层的细节,包括一些什么呢?包括一些提供一些电信号,就是机械是机械设备的啊,机械特性的那种。那么再往上就是数据电路层了。那数据电路层的话,它专门处理什么呢?处理我们单点之间的一个数据传输。那么最常见的数据路层,它的标准我们是以太网作为标准,索利纳克斯,以太网就是Li纳斯,这个什么呢?以太网络设备驱动程序就在这一层。还有就是我们在网上面就是个网络层了。那网络层的话,他就专门负责什么呢?负责这个数据包的转发,或者一些主机的地址的编写啊等等。所以后面啊,我们会专门研究这个网络层啊。比如IPV4 IPv6是不是这些协议啊,再往上面就是传输层了。
09:02
传输成我们这个协议层是吧?啊就是比如udp啊,TCP都都都在地方是吧,你看好,那么这个后面右边这个等一下我们要讲协议协议上是吧,那左边这个。传输层的话,它是完成什么呢?完成节点之间的一个什么数据发送,你比如说它最最呃最常用的啊,最有名的这个传输协议就是TCP和udp这两个了。还有一个就是灰化,灰化层呢。废化层的话,它是处理什么呢?单点之间的一个废话。表示层它是处理什么呢?处理这个数据传输以及格式的一些相关设置就在表示层。这上面就是我们的应用层了,应用层呢,它是像什么,像这种像我们这种用户的这个应用程序,提供一些网络的一些相关的服务。啊,这就是我们所讲的应用层。所以我们通过这个图形我们可以看得出来是不是。
10:03
什么意思呢,就是。Osi模型它总共定了什么?总共定了七层。对不对,但是Linux内核要注意啊,右边这里我们也看出来了。啊,右边这里啊,Linux内核呢,它只是什么呢。网络站它只涉及三个层次,就这个右边这里啊,L2L3和L4要注意这一点,所以接下来我们就来研究这个问题了,是吧啊拉内核。这个网络战。是不是它只是什么呢?只是涉及到什么呢?三个啊,只涉及到三层,哪三层呢?其中我们分为什么,比如L2啊,还有什么呢?还有这个L3啊。层,还有一个是L4总共啊,这个四层啊,三层总共这三层是不是但是。你要注意了。这个L2。还有什么L3L4。
11:02
这这三层啊,这三层呢,它又分别对应什么呢。等于我们OSI7层啊,就是七层模型当中它的什么呢数据。链路层。对吧。网络层。和什么呢?和这个传输层。就是你在了解这个就行了,是不是就这这里我已经这个颜色都给我们对好了是不是。其实这个就不难是吧,哎,那我们搞清啊,少了一个字啊传输层。那么搞清这个对应关系之后,是不是?那么从本质上讲啊,Linux内核站任务它就是干什么,就是接收这个什么呢?接收到的数据包是不是,如果从这个本质上讲要注意啊,本字是不是就是从本字。本质来本质来说是不是,那么这个内和战。
12:00
嗯,内河葬的主要的一个什么呢?啊,主要任务。主要任务呢,它它是从什么呢?主要任务是将什么将接收到的这个什么接收到的一个数据包。它是从什么呢?从LR就是从数据链路层,因为下面也是硬件嘛,是不是,所以从第二层,那么L2第二层,第二层就是我们所讲的什么网络设备驱动程序了,它就这个来了,是不是啊从第二层。然后呢,直接传输给什么呢?啊。传输给这个L3 L3啊,就是我们所讲的网络层呢,就这一块是不是好网络层里面啊,通常我们就是为什么比如说IPV4啊啊。或者是IPV几年IPV6。就这些来是不是,诶他就这一个一个下来。那么接下来怎么办呢?接下来他一个一个往上走是不是。
13:00
所以说接下来。对不对,接下来如果这个什么呢?如果这个数据包它的一个目的地为当前设备的话,那怎么办呢?那我们这个Linux内核对不对啊,Linux内核这个网络站啊,它就将它什么呢?啊将将它直接什么,直接传递给什么呢?传递给第四层啊,就L3传到L4 L4就是传输层了,是不是,那传输层这里就用到什么呢?就应用到我们这个TCP。还有什么呢?还有一个或者啊,或者是用到什么udp协议,直接进行进一步的监听,这个套接子,诶,他就这样一个一个就过来了,是不是,嗯,这就是第二个是不是。啊,这就是大家要理解的一个点啊,也那我们理解完这个这个知识点之后,是不是现在再往上走是不是啊,如果什么呢。如果这个数据包,哎,它需要什么呢?需要转发对不对,你在那个那一层是不是在我们这个L4里面,你需要转发怎么办呢?啊,如果你需要转发。
14:04
那那我就将什么呢?就将它啊。将其直接交还给什么呢?交还给L2啊进行什么呢?进行传输。产就这个意思,那么对于本地生成出战的数据包,它又不一样,是不是,所以你要了解它的方向啊,就是对于什么呢?对于本地所生成的一个什么。所生成出站的一个数据包。对不对,那么我们将从我们从底下从L4依次。传T给什么呢?传T给L几啊,L3和L几L2啊,它就这个意思啊,传给L2之后,那么最后呢,你就传输到了网络设备驱动程序了,是不是啊,最后最后你就是什么呢?最后是由我们这个网络。哎,设备驱动程序。
15:00
啊,进行什么,进行传输就可以了,是不是啊,那这个过程其实我只是简简单简单的给他几个啊思路出来是不是,但是机器传输过程可能里面还有更多的细节。啊,如果大家研究的话,就可以看我那个细节的课程啊,OK,那你找秋香老师领取就可以了,是吧?好,那么整个过程他也分为很多个阶段,那么整个期间它也可能发生很多很多的问题是不是?啊,你比如啊。哪些问题呢?你比如他可以根据这个协议,是不是根据协议或者这个nit的规则,是不是可能对那个数据包啊进行修改啊。或者有可能这个数据包会丢失,也有可能这个数据包进行分段,或者数据包它重组,是不是或者计算数据包的交联和等等啊。但是要注意一点。那么内核它并不涉及啊,你要搞清楚啊,内核它并不涉及L4上面的567。这三层。它这上面三层交给什么,交给用户空间应用程序来实现呢?就刚才我们看这个图了。
16:04
他交给了用户空间应用程序的实现啊。另外内核里面它也不涉及什呢,也不系到我们的物理层,只关系到osi开放系统互联参考模型里面的中间这三层,只要研究这个就行了。就就这么个意思啊,所以大家也不用担心是不是你觉得这个东西啊,计计算机网络基础,但是我们针对什么呢。这个网络设备啊,大家注意了。你比如我们所讲的这个什么呢,网络设备。网络设备的话啊,最下面的话,我们讲的是什么呢?就第二层就是这个什么呢,最下面就是数据电路层了。啊,就数据链路层的话,就是网络设备驱动程序,网络设备驱动程就在这一层,就在数据链路层,但是我们重点是讨论什么呢?讨论内核,内核的一个网络站啊,我们不讨论这个网络设备驱动程序的一个研发啊,如果你要搞这个网络设备驱动程序的开发的话,就要建议大家啊,直接看一下那个叫什么。
17:04
呃,这个叫松宝华啊,松宝华这个老师的,这这这本书是不是他专门讲那个驱啊,这个金通利纳克斯啊,这个设备驱动程序开发,你可以看看他那本书啊,我们我们不搞驱动开发,是不是我们搞内核野码分析啊好。那么这一块的话啊,我们了解之后,那接下来就说。我们怎么进行分类,它有一个问题。什么问题呢?就是。我们描述这个网络设备是不是网络设备的专门有个体系结构,就是结构体用来表示是不是,那就是什么呢?你看啊,他用什么呢,用这个网络设备看到没有。哎,网络设备的一个什么呢?网络设备专门一个什么,Net下划线专门什么呢?D device dy是吧,通过这个结构体。
18:00
啊,这个结构体类型啊,来表示是不是来表示。那么这个网络设备结构体的基本成员等等啊。它有什么呢?这个设备参数里面有哪些啊,你比如有这个什么m tu是不是啊。一般情况下是1500个字节左右啊。决定这个数据包是否分档。要注意啊,就是说有一个问题,就是说你要注意就是设备参数对不对,设备参数它决定什么呢?决定这个数据包的数据包是否需要什么。是否需要分段?你怎么分段嘛,分段的话一般是1500个字节,这个已经够大了啊,嗯,1500个字节就分担。但是针对什么呢?针对这个ne device啊,它这个结构体的体系非常庞大是不是。你比的参数很多了。它有哪些参数呢?你比如什么设备号啊m tu Mac地址是吧。
19:01
还有这个设备名称,比如ETH0ETH1是吧,还有还有up down,就设备的标志,还有主播地址。还有还有这个设备设备设备支持功能,你比如G和GSO嘛,还有网络设备的回调函数啊。或者是还有一些打开和和打开和关闭是不是停止设备如何修改网络设备MT的一些相关函数。长等等啊,你比如他发送这个数据包的时间间时间错是不是,或者接收呃接收数据包时间错,它都会体现在这个结构体里面。所以这个这个结构体的话,你真的要去研究的话,大家注意一下就基本上就没问题了,是不是。那么这个结构体呢,它大致在哪个地方呢?我给你举两个就行了啊,大家注意一下。集体啊。机体这个什么呢。内核的这个掩码如下,OK。打开一下啊。
20:00
那现在我们用的是5.0啊,大家注意。5.0。等一下啊。选中他是。好在这里。好,打开它之后呢,你要找到什么呀。这上面啊。不是叉八六体系结构啊,你要注意啊,不是这个架构里面啊。在什么呢?在include下面啊,有一个Linux,你写那头文件,我经常加上那些东西嘛,是吧,还下面有个ne device。网络设备。嗯,这个双击。好,双击之后,你看就在这里了。
21:03
什么意思呢?上次我也跟他讲过,在VIP里面我也讲过啊。你看通过这个net device它可以什么呢?它可以表示网络设备结构体的类型,对不对,你看。H list not,你看它的名称是不是还device是什么呢啊,I false是不是一直往后面啊,你看有很多嘛,比如IQ就是什么设备的一个什么IQ的一个中端号。是不是啊,再往后面你看啊,如果我们用到的时候,到时候我们再进行进一步的研究,你看到没有就比较卡是吧。看没就到这儿来了。是不是很多个成员啊,什么MC啊啊UC啊,你看DV address啊。还这么多?试过很多成员。这个体系相当庞大,这个结构啊,这5.0的,但是要注意了,它每个版本它也有一定的区别。
22:06
这个成因有一点区别,但基本上大致都是一样的。你别物理设备是不是啊,等等啊。好,那我们基本上啊,搞清楚之后,那还有一个什么。还有一个就是说你要掌握这个什么。这个网络设备当中的na napi是不是就是说你比如一些什么呢?比如一些老比较旧的啊,比较古董的,比较古老的这个网络设备驱动程序啊。他在中断驱动模式下工作的,你要搞清楚网络设备新程序就是旧的网络设备新程序。它是中断驱动模式工作。那么既然是中断驱动模式工作的话,它就意味着什么?意味着你你每接收一个数据包。他去下中干一次。是不是?所以说啊,通过这个时啊,时间到现在是不是就时间证明。
23:00
工作方式。就是我们中断驱动模式这种工作方式啊。在负载啊,在负载很高的时候。它效率肯定会下降。所以我们解决这个问题的话呢,它是采用什么呢?采用API啊,就是一种新的一啊新的一种软件技术,就是说在内核里面几乎所有Linux内核。从一些3.0以上的版本。它就引入了n napi这个技术,那么如果负载很高,那网络设备驱动程序就采用什么成人序模式,就这个意思。所以你看啊,比如我们后面讲的什么DBDK啊,我们专门有这一套课程是不是。这个注意啊。内核野马就放到展览。别着急啊。后面我们会研究是不是。学习Linux内核这个源码分析,主要是这个进程啊,文件系统啊这一块啊。
24:02
怎么跑这儿来了?到这来。我们咱们笔记当中啊。内核页码就在这里了。很多看到没有,这这这个地方自动换行是吧。算了,不自动换行啊。那我们啊,现在你看多少多少这个这个没关系啊。全部到后面来。刚才所讲的啊,比如。一些什么呢啊。就是老款,阿里应该是老款啊。老款这个网络设备驱动程序。
25:00
你比8139那些网卡现在好像用的不多是吧。啊,老是这个网络设备系统程序。他的工作啊,工作模式啊,工作模式的话是什么呢?中断驱动。他才能中大工作。中断驱动模式。就这个意思啊,就是老式的。老款的是不是就是旧款的那个网络设备驱动它成这种模式。所以这种模式就是说它的缺点是什么?刚才讲了啊,负债很高,效率就会下降,这是一点。那么那么为了解决这个问题,就是说就是负载了负载。很高。很高的时候,它这个效率就会下降。效率就会下降。就这个意思。那么效率下降的话呢,就是啊为了什么呢?为了解决啊,为了解决。解决词问题是不是就采用什么从API啊这种。
26:04
NI啊,那么采用NIPI的话,它是怎么做呢?NIP就是NIP,它是一种什么新型的一个软件技术,你要注意啊。它是开发一种新型软件技术。NAPI是不是就是我们所讲new一下API嘛,它就这个意思是不是。就这意思啊,大家注意。中档期的模式没问题,好。那他怎么做嘞?就是如果负债很高,是不是它可以切换你注意啊。就是。解决此问题,产业技术没错啊。负债什么呢?负债很高。负债很高的时候。是不是那网络设备驱动。驱动程序,哎。它就将在什么呢,就将在我们这个刚才讲了啊,叫做轮讯模式是不是而不是什么呢?而不是中断驱动模式工作。
27:10
要注意到这个核心点就可以了。就这么个意思啊。大家不要把这个很应用很难,那么采用这个人性模式的话。那基于什么呢?就是说这意味着什么?意味着就是说他不会在每一次接收到这个数据包,它就触发这个中断。相反的话,就说这个驱动程序,它会将这个数据包。存储在缓存,缓存我们把它叫做什么呢?存储在缓冲区里面去。那么由我们的内核啊,不断的向这个驱动程序进行什么进行轮训。主要是取回那个数据包。那么采用这个API技术的话,它可以提高什么呢?提高设备在高负载下的性能。
28:00
但是要注意啊。这个版本是这样的,就是说。Linux内核要注意啊,嗯。好,Linux内核它从什么呢?从三点啊从哦,就是我具体没有查官方的相关的一个资料啊,但是至少是从什么呢?啊3.2是不是。看着啊,应该是三点几啊,这个可以查一下啊,大家自己到到那个你那那个官网去查一下。我就写高一点嘛。这这个我不敢确定从哪一款哪一款,反正是从三点,至少不会低3.3.5,嗯,从3.5这个版本,我就这个是我没没官方验证啊,从3.5的,呃,这个版本。开始。他这个他就直接新增加什么呢,就增加了这个。频繁。人性。超级子。
29:00
平滑轮系套切这个功能就这个意思啊。这这个这个我可以肯定。3.5 3.5以及3.5以后的版本。100%啊,可以肯定是啊。这个采用什么呢?增加这个。啊,增加平缓人性这个套题字的功能,但是你说三点四三点你往前面具体哪个版本哪一个我就不太清楚了,是不是,至少我是我是从这个版本开始啊。但是前面的话也有可能比例更低一点,但是2.1不可能。2.0不可能啊,至少是3.0开始,嗯,那么三点嘛,有3.13.23.3是不是啊,就这个意思,那3.5是100%的啊。好,这就这个问题,那么这个它它在什么呢?他在内核里面增加这个啊,平缓人性透气制造这个功能的话,那么就用于什么呢?用于那些啊,不惜以提高这个CPU使用率。为代价尽可以什么呢?尽可能会降低这个延迟,套节制的应用程序。
30:03
这个啊,我们在后面再研究,是不是一下子一下子研究不透是吧。就这个问题。好,那我们现在啊,掌握这个问题之后,那么接下来我们来看下一个问题。下问题是什么意思呢?就是发送在这个数据包的收花,是不是数据包收花,刚刚我也提到过啊,你要注意这个问题了。我没有给你标123啊,但是如果我们要标的话,你就是。这个地方呢?就笔记我就占掉算了啊,一页是不是。他这个是二源码分析是吧。这个13了。嗯,下面这个是三啊。是不是好,第四。第四个是什么呢?就是。网络数据包的一个什么?啊,收发问题是不是。那么他这个收化问题的话,就是说我们刚刚讲了啊。网络设备驱动程序的主要任务。
31:01
是不是啊,就是网络设备。驱动程序。主要啊这个任务。主要任务干什么呢?第一个是接收什么接收我们目的地为当前主机。当前主机的一个数据包,这是第一个是不是啊,将什么呢,将它直接传输给什么呢?传输给这个网络层嘛。网络层就是我们所讲的L3是不是啊,最后。最后呢,再将啊,最后将。嗯。应该是。最后再将。再将什么呢?再将它进行传输给什么呢?传输给这个。传输层是不是就是第四层?啊,这是一个是吧。啊,这是一个啊还有什么呢?还有就是说你传输就是有传输当前主机。
32:02
所生成的一些什么呢?比如外出的数据包了,外出数据包,或者你写一些什么,转发当前主机的一个什么主机的一个。主机所啊,主机所收到的一个数据包。这就是他要干的事情。就是这个数据包的收发问题,是不是这这这个这个问题,但是你要注意了。对于什么呢?对于每一个数据包,你不管它是接收到还是发送出去啊。你不管是接收还是发送啊,他都需要什么呢?都需要路由子系统执行一次查找操作。那么它会根据我们这个路由系统。查出这个结果决定这个决定我们是否应该将这个数据包到底是转发?转发我们也应该知道。它从哪一个接口转化出去,哎,这是必备的呢,是吧,你要知道从哪个接口呢。
33:04
就这个意思啊,嗯。好,那么决定这个数据,决定数据包在网络账单中传输过程的因素啊,它并非并非刚才我们只讲了一个什么呢?路由子系统对不对啊呃,查找一个结果啊,你比如他他其实。告诉你啊,其实这个数据就是决定啊。决定这个决定数据包。它什么呢?决定数据包应该这么写啊,决定数据包在网络上当中。传输过程。它的一个因素。并不是什么。并对,并非是,并非只是这个路由。路由啊,刚才我们讲路由系统。路系统怎么呢?啊,查查找这个结果。
34:00
你比如啊。嗯,在在在什么呢,在这个网络战当中。还有一个什么,还有五个位置啦,哪五个位置啊,就是我们后面牵涉到要研究的这个nature,它这个子系统是不是。很多啊。那就发子系统,它其中就是注册回调函数嘛。其实我这就是钩子,是不是就是nature fair这个钩子,就说你接收到接收到接收数据包的第一个nature,呃,这这这个nature file挂节点是不是啊。其实这个又是一套系统啊,又是另一套,另一套这个思路了。啊,到时候再给大家讲。一下子摸不清是吧,大家一下子讲肯定倒过来你看啊。我给你找一下。嗯,在这里。看到没有112。是吧,1234是吧。啊,这些看到没有。选IP lock input是吧,IP forward看到没有?
35:01
这些啊。看到没有?IP output看到没?IP post。RO是不是?还有这些看到没有,你从这个,嗯,从网卡到到这个网络中断是不是到ne device刚才讲了再到什么呀,再到啊d open close是不是你看。它这个对应系统啊,对应这个格式,你比如从应用层读取这个,读取这个相关信息是吧,数据信息包文件在那套节字在TC pip是吧,以太网驱动再到我们的万兆网卡。大把那个。啊,数据包你看。这这个我已经画好了啊,到时候再讲一下子,可能大家摸不清楚,是不是只是现在我们只要知道什么,只要知道就说你你除了这个路由子系统以外还有什么,还有一个还有五个位置就行了,是不是后面有时间我们再研究嘛。好,那我们搞清这个关系之后,还有一个问题,你要发送数据是不是,那么必须什么呢?必须要掌握一个套接字啊。
36:04
就是我们什么呢,SK buff。就是高门。这个地方呢?Net device我们就搞定了啊。啊,还有X buff是不是。应该是换到。讲着讲着就跑到这来了是吧。下面一个。从这开始就接到这算了啊。这个是不要了。讲来讲收收。款那个是不是这个叫做破节字,嗯。
37:00
套接字这个缓冲区是不是SK buff啊?利纳克斯内河。野马。掩码如下,是不是?炮击之缓冲器数据结构。啊,就是这个。这个结构体啊,嗯。结构体什么呢?SK buff。然后呢,在在Linux内核掩马啊。内河野马。如下可以了。就这么表示啊。好,那现在我们搞清这个关系之后是吧,那我就往下面走了啊。他在哪里呢?啊,你找到这个SK buff就行了。
38:03
SK。哎,这地方双击。双气之,你看就到这了是吧,同学。就找到了,你看没有,里面有很多个成烟了。啊,有这个SK啊,Next。啊,你看。这个SK buff里面套了一个NEDV,看到没有,刚才我们已经讲过了啊,还有什么红黑素啊。List缩可坑了。再往后面。这些D看到没有?啊,这些相关类型啊。那这些成员他强在这里。但是IPV4,你根据IPV4IPV6啊,大家可以可以注意一下是不是。其实我们所讲每个SK buff都有个DV成员,就是一个net d的一个什么结构体的实力啊。但是你传输的每一个SKB都有一个跟它什么呢?跟这个跟它相关联的,说这个对象。
39:08
就是如果你数据包转化,那么SK它可能就是为什么呢,就是为空。是比较大,这个规模比较庞大,到这儿来看到没有。它就一个连一个嘛,通过什么呢?通过这个SK。那SKB这个ext啊,这个扩展。你看这一块。就放这了啊。自动探测是吧。这些家长。
40:06
嗯,就这个算。好到这一块之后啊。那基本上就差不多了,就说。还有一个是什么呢?就是对于什么呢,对接收到这个每一个数据包。都应该啊,相应的这个什么都应该有这个相应的这个网络层协议啊,处理程序进行处理。你比如IPV4 IPv4专门有个什么,专门有个ipvc进行处理了,你IPV6就有V6就这个意思啊,你看。他怎么去处理,你看啊,这一边就相当于什么呢。对于什么,对于我们接收到啊。对接收到的每一个数据包是不是。应该。都有什么呢?都有对应的什么网络层。
41:00
协议处理程序。啊进行处理是不是啊,你比如比如什么呢。比如你IPV4,你是IPV4的这个数据包。是不是它是有什么有这个有函数啊,专门一个IP下发行一个什么RCV的这个函数。啊,进行处理。是不是啊进行处理,那如果你是什么呢?如果你是IPV几呢?如果你IPV6啊,你IPV6这个数据包呢。是不是啊,它又有哪个呢?又有这个函数叫做IP下划线啊IPV6啊,它有个IPv6_RCV。进行什么进行处理了。它每个地方都不一样啊,它有对应关系是不是。你比如。你处理完之后注意啊。IP下划线这个RCV。
42:01
他执行大部分主要是这个地方主要是做什么呢?主要做这个完整性检查。如果在IPRCV。V4还是V6,这个协议正常的情况下。它就会调用什么呢?调用这个钩子回掉函数对数据包进行处理,就是注册掉了回掉函数,那么接下来就说数据包它没有被这个没有被相关的钩子啊毁掉。毁掉这个函数,这个数据的话呢,它就可能丢掉了,丢掉的话它会有什么呢?它会将有一些相关,这个叫做路由选择子系统,是不是进差的IPV啊,就是IP_ICV这个finish,有这些函数进行查询啊,后面我们会讲,但是路由选择子系统呢,它会什么呢?会查找,查找操作将将根据我们这个目的所创建一条一条这个缓存叫dst enter这个对象。后面后后面会也会解啊,但是说IPV4你要注意。
43:01
IPV4的这一块的话。它存在地址空间有限的问题,就是说IPV4它只有32位嘛,是不是啊,所以说当可用的IPV4的地址空间还可能还是一个时间这个啊,后面可能就越来越少是不是,所以后面就开发那个IPV6嘛,IPV6开发IPV6主要原因就是什么?主要是对这个ipvc这个体积太庞大了,是不是,所以将这个IPV6呢,增加到什么呢?增加到128位,所以你说IPV4啊,它这个优势就是。IPV6它的优势就空间非常大,是不是,所以说啊,这个问题不是我们讨论的,但是我们至少知道。那么这个网络设备驱动程序呢?他将收到这个数据包,他就交给网络层,交网络程序是IPV4或者IPV6去处理了,是不是,那如果数据包的目的地为当前主机,就交给第四层。监听这个套接字进行处理,最常见的传输层这个协议就是TCP和udp了,是不是啊,它就这么一个思路是不是啊,然后呢,后面可能还用到什么呢?流,比如说流空制传输协议,比如SCTB。
44:04
SCDP这一块是不是或者是数据数据报那个拥塞控制型嘛,DCCP。可能会用到这些东西啊。但是有可能什么呢?SCTP或者是DDCP,它都都是什么,都具有什么呢?都兼具我们TCP和UDB的一些相关特点。这这这后面啊,我们再再再研究是不是。但是当前主机所生成数据包呢,一般是由套接值第四层处理啊。但是对这些数据包,它是由这个什么呢?用户空间应用程序。API器创建了,你比如这个套接字分两类呢,比如什么流失套接字啊,或者什么数据包套接字啊,它根据这个部分啊进行进一步来处理的。这个后面没再讲了,是不是比如每一个第二层这个网络接口都有一个啊,这个数据应用层的一个地址标识,就什么时候讲以太网呢,是不是以太网不是其中有个48位的m Mac地址啊网卡了,是不是,你看这就这么一个意思嘛。
45:05
你比如48位的m Mac地址,网卡地址对不对,它是有制造商分配给每一个,每个以太网的一个网络接口嘛,就给网卡地址嘛,是不是这就是这个号这个啊嗯,他这个m Mac地址是号称是唯一的是不是,但是大多数这个网络接口。大多数这个网络接口,这个MSC地址,它都可以什么呢?啊,都可能使用的是我们比如说IP或者IP这个啊,用户空间命令进传输的。所以以太网,以太网数据包,它开头都是什么,都是14个字节。是不是那以太网了,比如以太类型比两个字节MSC6个字节是不是啊。就是六八四十八嘛。还有目标地址也有六个字节,是不是,所以它这全部都集齐在里面了啊。后面啊,后面的话这些内容我们都会讲。所以今天晚上这个内容我就给大家分享这里啊,有任何问题到时候我们再进行进一步的沟通与交流啊。
46:03
那我们啊,下一次课。再见。
我来说两句