00:00
啊,各位朋友大家好,欢迎来到铃声教育,我是威克。接下来我们主要是分享这个利纳克斯内核掩码分析里面的这个套接字啊。那么通过前面啊,我们已经掌握了Linux内核,以及Linux内核里面的啊,各个模块之间的一个关系。那么本节课呢,主要是研究这个网络管理的一个子系统。这里。那首先我们知道。Linux呢,这款操作系统啊,它是什么,目前啊,它是作为一款网络操作系统。它成为这个网络服务器这个操作系统的一个啊。点范。并且这一款Linux操系统,它广泛用于什么呢?这个商业领域。在网络服务器这个平台上,它占比在整个市场啊,一直不断的逐年上升啊。
01:01
不断的上升,所以我们对Linux这个网络部分啊,深入研究啊。研究它这个网络通信啊,既有什么呢市场价值,也具备什么现实上的意义。所以说Linux的优秀这个网络功能和它的一些什么,它的设计理念、思想是分不开的啊。这点大家要了解,所以说Linux网络啊,管理子系统这个部分,它是沿着什么呢?传统这个层次的结构。那么网络呢,网络数据是从我们的用户用程序进程啊,传输到什么呢?传输到网络设备要经过什么这么几个层次啊,那现在我就给大家绘制出来,我们来看一下。那首先你看啊,这个Linux网络的一个层次模型。你看啊,第一个。是吧?那么第一个的话就是我们用户啊。
02:04
用户应用程啊,用户的一个什么呢?应用程序的进程。应用程序。我们叫做什么呢?叫做用户进程,就这个意思啊。大家要搞清楚。好,那么第一个是吧,那么接下来它就直接到哪里的接支架来,接下来你就直接到这个套节字啊要搞清楚。啊,接下来我们就到这个什么呢,到这个套间字了啊嗯。套节子。Lock。好,那我们到这个套接字这个层面之后,是不是再往下面走,那么可能就是对应的这个什么呢,网络协议了。接下来就是网络协议。那这个网络协议呢,有哪些呢?比如有什么TCP啊嗯。啊,或者是有一些什么呢,Udp啊等等啊,这里的我就不再列了。
03:03
啊,这就是到网络协议了。好到网络协议的话,再往下面就到什么,就到这个网络设备是吧。最好就是到网络设备。就这一块。网络设备啊,你看它就这么一路录下来,是不是网络设备啊,你比如什么啊网卡啊,是不是嗯等等各种各样的设备啊。网络设备。你比如网络接口卡。就是什么呢。网络设备其实它就是一个硬件啊,要注意这个过程啊,就是网络设备接口控制的这个什么呢?啊,网络它是有这个软件进行操作的。大家要搞清楚啊,这个点就行了,是不是。
04:01
就设备啊就可以了。然后接着我们就到这边来。啊,可以了。这就是我们所看到的啊,这几个层次。但是Linux这个网络层次啊,网络层次模型刚刚我们提到了啊。就是。纳克斯。他这个网络啊层次的一个。模型啊,架构图。如下。看,我就这么画给大家看啊。比如用户啊进程是吧,用户进程就是我们的应用程序嘛。好,接着我们再往下面就到套节字了是吧。啊,套系字下面再往有一个什么呢,到栅栏了,最后就到这一边看到没有。啊,有这么几个层次。
05:00
OK。嗯,这么几个层次的话,那么它有一个什么问题呢?你看啊。到这来的话,就是每个层次的内部啊,每个层次里面。其实应用程序啊,套件字啊,网络协议啊,网络设备啊,里面还可以什么还可以。细分为很多很多个层次。那么这个数据是不是数据传递过程,传输过程只能依照啊上面是不是自顶向下的进行。但是不能跨越啊,其中的某一个层次。这两个使得网络传输只有什么呢?只有一条,而且是唯一的一条路径。为什么这么做呢?你要注意啊,就是它的操作过程就是什么,就是数据的一个。传输过程啊。那么它是它是根据就是按照啊,就是按照什么呢?按照这个,按照这个层次按照。
06:05
啊层次对不对,资什么呢支顶。向下进行什么啊,置顶下进行。不等于什么,你不能够进行跨越,这个什么呢,跨越某一个跨越啊,跨越层次了。换层次就可以了啊。那么它只有什么呢?就是网络传输的这个过程,对不对啊,它只能什么呢?只能有一条啊。而且。咱们异常啊。而且呢,它是什么,是唯一的什么,唯一的一条。啊,唯一一条路径就这个意思,所以他这样做是不是他的目的呢?是为了什么呢?为了提高整个网络的一个什么。哎,可靠性和这个什么呢,准确性就这个意思,嗯。
07:03
大家要注意到这一点就行了。所以说这个层次结构,这个层次的结构啊,它也采用什么呢?面向对象那个设计的方法对不对。啊,它初次被什么呢?就是各个层次啊,被抽象为对象是不是你比如这个网络协议是吧,那网络协议啊,它就是一种网络的一种语言,那么它规定我们通信双方之间交换的一种规范啊。它是网络传输的一个基础,就这个意思。啊,第二个是套节字。抛弃字是什么意思呢?就是说。涛姐自己是网络当中的一个连接的意思是不是啊?那么它可以向我们用户啊,提供大量的这些什么文件的IO啊,啊和一些网络这个协议啊进行紧密的连接。主要是体现这个网络和文件系统啊,还有进程之间的一个关系,这就是我们所讲的一个套接字,那么。
08:03
它是我们这个网络传输的一个端口,就是入口。还有一个就是我们所讲的设备接口是不是。设备接口,网络设备接口,它控制这个网络数据啊,它就软件硬件软件等的过程。它也体现了这个网络和设备的关系啊。它是网络传输的一个桥梁,大家注意这一点。还有一个就是。我们所讲的套节制。套节字是什么意思啊?套节字是。其实网络当中。它它的一个什么缓冲区缓冲器嘛。它就叫做什么叫做套接字缓冲区。套节制反冲器,它是一块什么?保留这个网络数据的一个内存区域要搞清楚。它体现这个内存管理跟网络之间的一个关系啊。
09:00
整个它是什么呢?是网络传输的整个灵魂。那么机体我们怎么画呢?它可以这么这么指向啊,大家来研究一下,是不是就说你比如这个套接字还有什么啊,套接字缓冲区啊,设备接口啊,跟网络协议啊,他们之间也有一定的关系啊,那现在我们来看一下。就是什么呢?就是Linux啊,Linux这个网络对象啊,啊及其什么呢,及其。之间的一个什么啊。关联啊,如下我们来看一下。这是第一个是吧。下面是属于什么?属于第二个。OK。怎么做?好,我们看啊,比如这个。用这个颜色啊。
10:07
啊,就这个啊。嗯。再来一个。什么意思呢?你这个套接字是不是啊。到这个这个地方啊,这里叫做什么呢?叫做套接字。它是套接字缓冲区是不是。哎,套接字缓冲区要注意啊。它是什么?套节制缓冲器,其实就是我们所讲什么,就是网络当中的一个什么缓冲器。
11:01
网络当中的一个缓冲器,就这个意思啊,那就这个意思。啊,要理解这个意思就行了是吧。还有什么呢,还有就是。对那一个啊。套几次?那么套接字是什么意思?涛节字说白了啊,他就是我们这个啊。网络当中的一个连接,就这个意思。还有设备接口了。那么还有什么,还有对应的这些相关的网络协议?就这么个意思是不是?那这些我们全部啊就过来了是不是。OK。看这一篇啊。哎,他之间就这么一个关系啊。颜色改一下啊。
12:09
啊,可以了是吧。好,那现在我们所看到这个啊。这一边是不是就到这儿来。就这个啊。它这个就是对应的颜色是吧。啊,这两个啊。设计的是什么颜色嘞,黄色看。就这么个意思是吧。大家可以看到啊。从这个图形我们就可以看出来了,是不是就说你这四个对象,是不是这四个对象之间的关系啊,它是非常的密切,是不是其中你看套接字的一个缓冲期,是不是套接字的一个缓冲期,它作用是非常的重要,看到没有。它和其他三个都具有是金有关系。
13:03
所以我们研究这个问题啊,大家搞清楚就行了。OK。哎,我把它移到这来啊,你看他们之间的关系,我们就全部就搞清楚了是吧。好,搞清楚之后啊,还有什么呢?还有一些相关的基础,这些网络协议,那么网络协议啊,在这里的话我就不再列举了,是不是因为我们在学习计算机网络时候已经讲过什么意思呢?你比如还有一点啊,对,还有一个要注意。就是什么意思呢?就是我们在计算机这个注意啊,在这个osi是不是。那么osi这个参考模型和哪个呢?和TCP啊。和TCP啊,还有一个什么呢?还有一个IP的一个IP的一个参考模型啊。啊,如下,那怎么怎么回事呢?我们画一下啊,这个图大家也要搞清楚。
14:03
因为osi跟那个什么TC pip模型,他们之间的关系对应哪些东西是不是。我们要了解一下,掌握一下啊。你比如是。啊,这上面总共七层嘛,比如应用层呢是吧。还表示,成。还有一个是绘画层。非法成。还有传输层。好,传输层后面呢,对应的是什么呢,网络层。在网络层还有一个什么数据链路层。数据六层后面是物理层。啊,就这么一个关系啊。这个我就一个一个啊。
15:18
好,再往下网络层。还有一个就是物理层。啊,就这个啊,左边现在我们所看到这个部分,它是属于什么呀?是属于我们这个osi参考模型。OSI。5SR的一个什么呀。OSI的一个参考模型。
16:05
要注意啊。啊,右边这里是吧,嗯,你看。我们看右边,右边呢,它对应的是什么TCP这个模型啊。TCP都有哪些模型呢?哎,我们注意啊。你比如这层对不对,这两层就是相当于什么呢?网络的的一个什么接口,就是物理层了。这是网络。接口的一个物理层。这个我们就搞定了啊。那么网络层,它就等于网络层。传输层、被传输层。长出层对长出层啊。
17:07
常数型的长存还有什么呢?还有一个就是我们所讲的应用层。好,那么这三层。比如啊这三层。它是什么呢?是同我就用它同一个颜色啊来表示。哎,这是这一层。啊,你传输层在传输层应用层的应用层是吧。层,还有一个网络层,对网络层。还有什么呢?这个数据链路层,这数据链路层。这两层嘛。好,他们之间的关系我们就全部就解决了。就这个意思啊。哎,上面栅栏。搞定,你看就这个意思啊,左边是属于osi参考模型对吧,那么右边这里也是五,就是TCPR。
18:06
IP的一个参考模型。就这个意思。好,那现在就堆好了啊。什么意思呢?还有就是说我们还注意你这个TC pip这个参考模型这四层是吧,你比如这个什么呢?啊,网络层呢,网络层用的就是IP嘛。网络城。它就是一个什么IP是吧,啊传输层是吧,我们讲过了,我们都知道啊,这个什么呢udp啊。还有一个什么TCP啊,应用层就比较多了,是不是。应用层列几个啊,你比如什么FTT啊。还是DNS?就这些啊。
19:00
还有很多是吧,还有他的net是不是,嗯,网络下面这个啊。他这个协议是不是对应的协议。那这个网络接口。物理层你比如它有哪些呢?有比如说。比如对应的PPP,对应那个协议啊,还有什么呢?还有s Li。除了SIP的时候呢?那还有什么?还有ARPA。是吧?AP,什么ne是不是以及什么啊,NENE啊。还有一个就是LN局域网相关的。啊,这些就是它对应那个协议是吧。那么其中最主要啊,其中最主要的是什么呢?是IP这个协议。就是Internet这个协议。还有就是什么呀,还有就是TCP这个协议了。那么Internet这个协议,它不仅是TC pip一个重要部分,也是osi当中的一个基本协议。要搞清楚是不是。
20:04
这个这个要搞清楚啊,IP这个数据包啊,它的传输具有不可靠性啊,这个这个我们在网络里面也是研究过了,就是说你数据包的传输你不能不能受到这个保障,是不是因为这个数据报它可能会遇到什么延迟啊,或者路由错误啊,或者这个啊数据报分解重组的这个时候遭到破坏,是不是IP他没有这个能力来证实啊,发送这个豹纹是否能够被正确的接受,就这个意思。那么IP他把这个验证和流量控制的任务啊,直接交给什么,交给这个分层啊。分层模型啊。做其他部件IP,它是一个无连接的啊,他不管那个数据包啊,沿途经过哪些节点。那么这些节点特征都有什么?IP的一个体现是这个意思啊。那么具体怎么玩呢?大家应该都知道是不是TC pip它内部啊。
21:00
TC pip内部的一个数据流,你比如他啊,这个用户是不是用户从输出这个套接字,再到TC pip,再到网络接口,再到以太网,是不是再传到我们的设备中断嘛。然后再到什么呢?再到网络接口啊,再到这个什么还软中断呢,是不是再到套子,再传输给我们的用户输入,是不是它就这么一个流程啊。在应用层的时候,我们已经讲过了,是不是。好,那我们除了这些最基本的问题以外,那么后面我们还要掌握什么呀啊。TCP是不是那么套节字是在哪个地方呢,是不是?说明讲这么多啊,大家一定要知道他这个思路是怎么玩的是吧。好,可以了,三。啊,直接把它放到栅栏啊。好,那么这个问题啊,这几个我们解决之后,那后面还有什么呢?还有就是我们要看套节字的一个啊。
22:04
相关啊。信息什么意思呢,就是。套切制在什么?在我们这个所有的网络操作系统当中是必不可少的,因为你要通信嘛,是不是,而且所有的应用网络应用层也是必不可少,必须要有,必须要有它,所以这个套机子它是网络通信当中。应用程序对应进程和网络协议之间的一个接口,就这么个意思啊。所以这个socket。S车呢,在所有的这个网络啊。嗯,操作系统当中对不对。是。必不可少,对不对,它是什么?它是网络通信中这个应用程序啊。对应的一个什么对应的进程。和这个网络协议之间的一个什么接口?
23:03
那机体的这个什么呢。啊,机体的这个啊。如。下图所示。就这个意思是吧。就相当于什么呢?你这个套件只在网络系统当中,那个地位在哪个地方。是吧,就就这么个意思啊。好,那现在我们接下来就来看下一个了,你看。每一个图我都给大家发好了是不是?你们看下面啊。你比如第一个。应用程序就是进程甲啊,进程一是吧。啊,应用程序。什么呢啊。进程二对不对,你两个应用程序吗。然后再往下面啊,你比如再往下面就说网络协议了,你看啊。
24:01
网络协议。网络协议到站了。网络协议。那网络这个是网络协议啊。网络协议的话呢,那么中间应用程序。跟那个中间它加加了一个什么,加了一个套接字大家搞清楚啊。啊,就这个意思啊,中间。这里面它就有一个套节字了。好几次。啊,右边这里它也有套结字,你要注意啊。
25:04
那个套节子是吧。那么接着到下面呢,它有一个什么。有一个传输是吧。这里就是以太网,你要搞清楚啊。嗯,下面就是以太网。抵谈网络是吧。
26:32
好,可以了。啊,这个网络协议是吧,网络协议就到我们这个。下面的已太晚了啊。所以说我们看到这个东西是不是你看。这个套件字它在什么呢?套件字在这个网络协议之上是吧。
27:03
所以他屏蔽不同网络协议之间的差异。就第一个。啊,第二个是什么呢?第二个就是套接字编程接口。就是套接字这个网络编程接口,提供很多这个系统调用,是不是也构成网络的一个主体,就这个意思,索尼nux系统当中啊,这个套接字,它属于这个文件系统的一部分。那么网络通信呢,可以被看作是对什么?对文件的一个读取,它能够使我们对这个网络控制啊,和对这个文件的控制是一样的。大家要理解这个思路就可以了啊。好,那现在我们注意啊。还没把他移到这来是不是?OK。嗯。
28:01
那现在我们就可走完了是吧?那么了解之后还注意了套接字它有一个地子,就是Linux,它支持什么呢?它支持这个套接字的地子组。大家必须要知道,否则的话,你在做这个Linux内核,再往深入研究的话,那也搞不清楚是不是。所以接下来呢,我们要了解一个什么Linux啊,它能够支持的一个什么呢?支持套接制的一个什么地子组。啊,地支族它有哪些是不是啊。啊,机体如下啊。那怎么做嘞?我们对我通过一个图形啊给大家发出来。用一个电子表格啊。好,Linux的一个地子组。它两者之间的一个对应关系啊。
29:01
嗯。他们注意一下,嗯。把这个移到这来差不多了啊。好,那现在我们首先看第一个。这个大小。20行次。首先看第一个,第一个是什么呢?第一个是我们所讲的一个套接字啊。他的一个什么呀,弟子族。第二个就是它的一个什么,它的一个说明啊,我们来看一下。比如第一个我们用什么呢?比如说unx啊。UNI克斯的话呢,它专门有一些什么,专门有尤尼克斯的一个什么玉的一个。套节字就这个意思啊。啊,第二个是什么呢?第二个I met。It它是通过什么,通过TCP和什么呢?IP这个协议来支持。
30:05
支持的什么,支持的这个Internet的一个什么。产地子组。就这个意思。啊,第三。第三是什么呢?第3AXR5。AXI5的话,它就相当于什么呢?就是radio啊X25就这个意思。呃。Mar。什么呢?Radio啊,叉二五就这意思。还有什么呢?还有就是我们的啊,Apple是不是就是Apple啊。Man to。这个啊。Apple t的话呢,它这是基于什么TDDP嘛。这个什么DDP,就这个意思。还有一个挪威网RPX。I里面有什么挪威网?
31:01
IPX。XR5跟踪机网是吧。还有一个是X25。嗯,它是有这些啊。经组成的,所以要知道还有什么呢,还有就是说我们Linux它所支持的,注意啊,这是第一个问题。我们必须要搞清楚的。好,那么接下来啊,我们就来看第二个。第二个是什么呢?第二个就是说你这个。注意啊,第二个就是。啊,利纳斯。这个操作系统啊。它这个操作系统所支持的一个什么呀?BSD的一个套接字的一个什么类型有哪些。那么第一种的话啊,第一个。
32:01
第一个是什么呢?第一个是流,流是什么?流是stream。就这个意思是不是。好,这种套接字它是属于什么?它是提供可靠的双向顺序数据流。它可以保证数据啊,不会在传输过程当中丢失破坏,或者是啊这个什么呢?啊重复出现是不是,所以说流套这次是通过什么,通过it的一个地址组的一个TCP协议实现。这是一个是吧,另外一个呢,它是一个数据报是不是,那么数据报就是我们经常讲的一个什么data,什么gram,就这个意思。数据报。数据报。数据报这种套件字呢。它也是提供双向数据传输。就说。但是它并不是被数据传输提供一个什么担保,也就是说你这个数据它可能会以错误的顺序直接啊发送出去了,是不是,甚至或者破坏啊,丢失啊,那么这种类型的套件是通过什么?
33:03
Udp协议实现的要搞清楚啊。还有一种就是我们所讲第三种,第三种是什么顺序数据包。顺序数据包跟流涛节制一样,但是数据包的八小时固定的,就这个意思啊。第四个是什么呢?第四个数据包,就是我们经常讲的一个什么pack这个数据包。所以巴就说这个并不是啊,这个并不是标准的BSDBSD的一个套气子啊,这种类型,它是Linux啊,专门有这个BSD套子的一种扩展。它可以允许我们进程直接在设备啊。就在设备及访问这个数据包这个意思。还有一种什么呢?还有一种就是我们经常讲的一个叫做。第几种啊,刘涛节制。数据包是吧,还有顺序包数据包。还有一种就对,还有一种岩石。延时套节值是吧,Raw是吧。
34:02
好,那么这个。注意啊。这个眼屎是不是?延时套阶词,它利用什么呢?它是利用我们这个利用,利用这种类型的套接字,就是说进程可以访问底层协议。啊,你比如啊。它可以在某一个以太网里面设备啊。直接打开延时套节字。来,然后来获取原始的IP数据传输信息。就这个意思。第六个是什么呢?第六个是可靠的一个什么发送的一个消息。可靠发送消息,它和数据包套节子呢比较类似,嗯。什么意思呢?它可以什么,它可以保证数据啊,能够被正确的传输到目的地,就这个意思。哎,他就来干这个事情。是不是,所以说我们不管你I net这个套地址还是流失套值,是不是它都有一套工作原理,是不是,你比如啊这个BSD套就就到I net套就再到TCP是不是是吧,就这么一个思路,具体操作的话,你可以看一下啊,大家可以看一下。
35:10
什么意思呢?你们看清楚啊。我们标一下是不是。啊,这是第几个,这是第一个是。好,这里是第二个。这里是第三个。再往下。第三个啊,这里是。这就不管了。这是第一个。接下来。第二个。它再往后面是属于第三个。第三个,第三个是什么,等一下啊。
36:02
哎,什么呀。It和BSD。那么这种。这种什么这种。这种套接字之间的一个接口啊。它是通过什么呢?是通过这个Internet,这个弟子族。弟子族这个什么呢?嗯。套接字操作集进行实现的。但是这些操作集呢,注意啊,这些操作集它实现是什么?实现是一组协议的一个什么操作的一个历程。机体这个什么呢?机体这个内核的这个啊,寅卯啊。野马如下,我们就来看一下。他专门一个protect什么呢,这个OPS嘛,他专门有这么一个啊,这就不能这么标了,是不是这么标就备注不好,备注是不是可以了啊。
37:04
解决是吧。好,那么现在这个问题我们解决之后,那接下来我们再往后面看啊,什么意思呢。我们所看到的第三个,那我们如何进行啊,进一步来分析是吧。那现在没有打开Linux内核源码。那现在我们打开这个内核源码的话呢,我们就直接什么直接到文件啊,打开这里啊。我们这个版本注意了,我们是公开课的一个教学研究使用的版本,OK。好,那么现在我们全部打开了。好全部打开之后呢,那么接着有一个什么呢?接着就说你你要在这边来啊。看往下面。他有一个什么。
38:00
Linux是吧?Linu下面有一个什么呢?有个net.h net。双击。有一个。Particular。操作局。这是套姐机电的,这不管他。就这个看到没有。那现在我们所看到这一把看到没有啊。这一把就是操作级了。是不是全在里面。挣那么多是吧。什么地址组啊,连接绑定啊是不是。
39:06
哎,就这些是吧。他机体这个掩码。看到没有相当的多是吧。OK,嗯。这就这就搞定了是吧。好,这些搞定之后啊,那下面的话,我们再往后面是不是。那么这个操作其他基于这个文件大家注意啊。还有一个什么,还有一个刚刚我们看到的有一个叫什么呢。叫做这个这个结构在什么。结构啊,这个这个数据结构在什么呢。在利纳斯内核啊。看这个野马。啊,内核掩码如下。有哪些呢?我们可以看一下到这边来。啊,Lo。
40:00
就这个。就这个套节字。要搞清楚啊。还有什么slo的ADR是不是?做ID啊,都都在这里面了,还有协议呢,Protect这个协议了。你看搜啊,你看一下啊。比如。烧开真爱去。啊,就这两个看到没有。啊,这个是。这个它是。So a drr对应的一个什么数据结构啊?啊,内核。这个。
41:01
啊,利纳斯内核。啊,掩码如下。就这个意思啊,你看一下。就在这里了。啊,就这个。好,这个搞定之后还有一个什么,还有一个对应啊,就是什么意思呢?就是这个地址啊和协议组的保证,就是在内核当中对不对。这什么呢?在Linux。内核啊。在Linux内核当中这个什么这个弟子族。地址组合这个协议信息,它是保存在什么?保存在I net下划线或者pro。
42:00
看啊这个向量。这个向量里面是不是。但是啊,掩码如下了是不是。对应啊内核页码如下。啊。诶。在在在,哦对对,在网络这里来。难怪找不到是不是在网络。
43:07
DH。V4V6的,看到IPV4IPV6啊都在这里面。I。I下划线。S。没这个。
44:09
Net。好,他这个啊,不对,是不是。V4V6。IPV4。INE啊,就是ne刚才点错了吧。Protect。
45:06
Net。下划线。Protect。可以了。没问题了,OK。那么今天晚上啊,这个内容我们讲到这里了是吧。哎,我们下一次课啊,再继续讲解啊,下一个内容。再见。
我来说两句