网络基础 | 应用层-DNS 发表于 2021-09-24 | 分类于 网络 | 0 | 阅读次数 2883 每个人上网,都需要访问 DNS,一旦它出了故障,整个互联网都将瘫痪。另外,上网的人分布在全世界各地,如果大家都去同一个地方访问某一台服务器,时延将会非常大。因而,DNS 服务器,一定要设置成高可用、高并发和分布式的。DNS 的层次结构DNS 采用如下的树状的层次结构:根 DNS 服务器 :返回顶级域 阅读全文 »
网络基础 | 运输层 发表于 2021-09-23 | 分类于 网络 | 0 | 阅读次数 3566 TCP/UDP 的包到达机器之后,发现 MAC 地址匹配,之后会交给 IP 层的代码进行处理。IP 层的代码处理之后发现目标 IP 也匹配,接下去就要交给运输层进行处理了。在 IP 头里面有个 8 位协议,表示是这个数据包是 UDP 的还是 TCP 的。运输层处理完之后,内核的事情就基本干完了,接下 阅读全文 »
网络基础 | IP 层【专栏摘记】 发表于 2021-09-22 | 分类于 网络 | 0 | 阅读次数 2454 IP 地址分类网络地址32 位的 IP 地址一开始被分为 5 类。对于 A、B、 C 类来说,IP 地址主要分两部分,前面一部分是网络号,后面一部分是主机号。下面这个表格,详细地展示了 A、B、C 三类地址所能包含的主机的数量。D 类是组播地址。使用这一类地址,属于某个组的机器都能收到。这有点类似在 阅读全文 »
网络基础 | 数据链路层【专栏摘记】 发表于 2021-09-21 | 分类于 网络 | 0 | 阅读次数 2885 数据链路层物理层就是只负责数据通信,就是上层数据交给我之后,我就往外发。那么,这个数据包怎么知道自己应该去往哪里呢?同时,假如大家都在发的话,势必会产生冲突,那么谁先该发?谁后发呢?怎么判断有没有发送出错?这几个问题都是数据链路层,也就是 MAC 层要解决的问题。MAC 的全称是 Medium Ac 阅读全文 »
网络基础 | 物理层【专栏摘记】 发表于 2021-09-20 | 分类于 网络 | 0 | 阅读次数 3247 两台电脑互通用一根网线连接两台电脑的时候,这根网线的水晶头要做交叉线,用的就是所谓的 1-3、2-6 交叉接法。水晶头的第 1、2 和第 3、6 脚,它们分别起着收(1、2)、发(3、6)信号的作用。将一端的 1 号和 3 号线、2 号和 6 号线互换一下位置,就能够在物理层实现一端发送的信号,另一 阅读全文 »
Linux Kernel | Linux 内存管理-内存映射 发表于 2021-09-17 | 分类于 Linux Kernel | 0 | 阅读次数 2895 1. 分段和分页1.1. 分段机制分段机制下的虚拟地址由两部分组成,段选择子和段内偏移量。段选择子就保存在段寄存器里面。段选择子里面最重要的是段号,用作段表的索引。段表里面保存的是这个段的基地址、段的界限和特权等级。段基地址加上段内偏移量就得到了物理内存地址。在 Linux 里面,段表全称段描述符表 阅读全文 »
Linux Kernel | Linux 内存管理-物理内存 发表于 2021-09-17 | 分类于 Linux Kernel | 0 | 阅读次数 2364 1. 物理内存管理1.1. 硬件架构传统的 SMP(Symmetric multiprocessing)系统中,所有处理器都共享系统总线。因此当处理器的数目增大时,系统总线的竞争冲突加大,系统总线成为瓶颈。为了提高性能和可扩展性,后来有了一种更高级的模式,NUMA (Non-uniform memo 阅读全文 »
Linux Kernel | Linux 内存管理-虚拟内存 发表于 2021-09-17 | 分类于 Linux Kernel | 0 | 阅读次数 1756 物理地址对于进程不可见,谁也不能直接访问这个物理地址。操作系统会给进程分配一个虚拟地址。所有进程看到的这个地址都是一样的,里面的内存都是从 0 开始编号。在程序里面,指令写入的地址是虚拟地址。之后,系统会提供一种机制,将不同进程的虚拟地址和不同内存的物理地址映射起来。当程序要访问虚拟地址的时候,由内 阅读全文 »
Linux Kernel | Linux 信号机制介绍 发表于 2021-09-16 | 分类于 Linux Kernel | 0 | 阅读次数 3408 1. 信号1.1. 概述信号(Signal)其实就是 Linux 进程收到的一个通知。这些通知产生的源头有很多种,通知的类型也有很多种。比如如果我们按下键盘“Ctrl+C”,当前运行的进程就会收到一个信号 SIGINT 而退出;如果我们的代码写得有问题,导致内存访问出错了,当前的进程就会收到另一个信 阅读全文 »
Linux Kernel | Linux 权限介绍 发表于 2021-09-15 | 分类于 Linux Kernel | 0 | 阅读次数 2189 进程权限控制是指进程能否有权限访问某个文件、能否访问其他进程、能否进行某些操作,以及进程能否被其他项目组访问。task_struct 中关于进程权限的成员变量有如下这些,其中 cred 表示我这个进程可以操作谁,实质上就是我操作别人时具有的权限是什么;real_cred 表示谁能操作我这个进程。操作 阅读全文 »