- 操作系统
- 操作系统的演进
- 无操作系统:人工操作、用户独占、CPU等待人工操作,资源利用率很低
- 批处理系统:无需等待人工操作,批量输入任务、资源利用率提升、多道程序设计
- 分时系统:人-机交互、多用户共享、及时调试程序
- 多道程序设计:早期批处理系统只能一次处理一个任务,多道程序设计使得批处理系统可以一次处理多个任务,多道程序设计是指在计算机内存中同时存放多个程序,多道程序在计算机的管理程序之下相互穿插运行,对多道程序的管理是操作系统的重要功能。
- What&Why
- 操作系统是管理计算机硬件和软件资源的计算机程序,管理硬件、提供用户交互的软件系统
- 管理配置内存、决定资源供需顺序、控制输入输出设备等
- 操作系统提供让用户和系统交互的操作界面
- 操作系统的种类是多种多样的,不局限于计算机
- 从手机到超级计算机,操作系统可简单也可复杂
- 在不同的设备上,操作系统可向用户呈现多种操作手段
- 我们不可能直接操作计算机硬件
- 设备种类繁多复杂,需要统一界面
- 操作系统的简易性使得更多人能够使用计算机
- 操作系统的基本功能
- 操作系统相关概念
- 并发性(后面三种特性的前提)
- 共享性
- 虚拟性
- 表现为把一个物理实体转变为若干个逻辑实体,物理实体是真实存在的,逻辑实体是虚拟的
- 虚拟技术主要有时分复用技术和空分复用技术
- 时分复用技术:资源在时间上进行复用,不同程序并发使用;多道程序分时的使用计算机的硬件资源;
- 虚拟处理器技术:借助多道程序设计技术,为每个程序建立进程,多个程序分时复用处理器来执行相关逻辑
- 虚拟设备技术:物理设备虚拟为多个逻辑设备,每个程序占用一个逻辑设备,多个程序通过逻辑设备并发访问
- 空分复用技术:用来实现虚拟磁盘、虚拟内存等,提高资源的利用率,提升编程效率
- 虚拟磁盘技术:物理磁盘虚拟为逻辑磁盘,C、D、E等逻辑盘,使用起来更加安全方便
- 虚拟内存技术:在逻辑上扩大程序的存储容量,使用比实际内存更大的容量,大大提升编程效率
- 异步性
- 基础篇:环境为 Vmware WorkStation + Ubuntu
- 进程管理
- 进程管理之进程实体
- 为什么需要进程:没有配置OS之前,资源属于当前运行的程序,只能一个程序接着一个程序的运行,配置OS之后,引入多道程序设计的概念,合理的隔离来资源、运行环境,提升资源利用率
- 进程是系统进行资源分配和调度的基本单位
- 进程作为程序独立运行的载体保障程序正常执行
- 进程的存在使得操作系统资源的利用率大幅提升
- 进程的实体
- 主存中的进程形态
- 标识符:标识符唯一标记一个进程,用于区别其他进程
- 状态:标记进程的进程状态,如:运行态 or 阻塞状态
- 程序计数器:进程即将被执行的下一条指令的地址
- 内存指针:程序代码、进程数据相关指针
- 上下文数据:进程执行时处理器存储的数据
- IO状态信息:被进程IO操作所占用的文件列表
- 记账信息:使用处理器时间、时钟数总和等,这些数据在调试或者在获取状态时都是很有用的
- 进程控制块(PCB):用于描述和控制进程运行的通用数据结构,记录进程的当前状态和控制进程运行的全部信息,PCB使得进程是能够独立运行的基本单位,PCB是操作系统进程调度经常会被读取的信息,PCB是常驻内存的,存放在系统专门开辟的PCB区域内
- 进程(Process)与线程(Thread)
- 为什么需要进程:没有配置OS之前,资源属于当前运行的程序,只能一个程序接着一个程序的运行,配置OS之后,引入多道程序设计的概念,合理的隔离来资源、运行环境,提升资源利用率
- 进程管理之五状态模型
- 就绪:
- 当进程被分配到除CPU以外所有必要的资源后
- 只要在获得CPU的使用权,就可以立即运行
- 其他资源都准备好、只差CPU资源的状态为就绪状态
- 在一个系统中多个处于就绪状态的进程通常排成一个队列,就绪队列
- 执行:
- 进程获得CPU,其程序正在执行称为执行状态
- 在单处理机中,在某个时刻只能有一个进程是处于执行状态
- 阻塞队列
- 阻塞:
- 进程因某种原因如:其他设备未就绪而无法继续执行
- 从而放弃CPU的状态称为阻塞状态,如打印机
- 创建
- 分配PCB => 插入就绪队列
- 创建进程时拥有PCB但其他资源尚未就绪的状态称为创建状态,操作系统提供fork函数接口创建进程。
- 终止
- 系统清理 => PCB归还
- 进程结束由系统清理或这归还PCB的状态称为终止状态
- 就绪:
- 进程管理之进程同步
- 为什么需要进程间同步
- 生产者-消费者问题:有一群生产者进程在生产产品,并将这些产品提供给消费者进程进行消费,生产者进程和消费者进程可以并发执行,在两者之间设置了一个具有n个可缓冲区的缓冲池,生产者进程需要将所生产的产品放到缓冲区中,消费者进程可以从缓冲区中取走产品消费。
- 在计算机里面缓冲区是位于Cache(高速缓存或者主存)上面
- 如果生产者或者消费者需要操作缓冲区需要三个步骤
- 先把缓冲区里的数据取出来,放到计算机的寄存器里面 register=count
- 在CPU的寄存器里面把register加1,register=register+1,表示生产完成了一个产品
- 把register 放回到缓冲区里面,count=register
- 单从生产者程序或者消费者程序看是没有问题的
- 但两者并发执行时就可能出差错,轮流操作缓冲区导致数据不一致
- 哲学家进餐问题:有五个哲学家,他们的生活方式是交替地进行思考和进餐,哲学家们共同的使用一张圆桌,分别坐在周五的五张椅子山,在圆桌上有五个碗和五只筷子。平时哲学家只进行思考,饥饿时则试图取靠近他们的左右两边的筷子,只有两支筷子都被他们拿到的时候就能进餐,进餐完毕之后放下筷子继续思考。如果五个哲学家都拿一支筷子等待其他人释放另一只筷子的资源那么哲学家将饿死。
- 根源问题是:彼此相互之间没有通信
- “如果生产者通知消费者我已经完成一件生产”
- “哲学家向旁边哲学家说我要进餐了”
- 进程间同步解决了:对竞争资源在多进程间进行使用次序的协调
- 进程间同步原则
- 临界资源:指的是一些虽作为共享资源却又无法同时被多个线程共同访问的共享资源。当有进程在使用临界资源时,其他进程必须依据操作系统的同步机制等待占用进程释放该共享资源才可以重新竞争使用共享资源。
- 原则一、空闲让进:资源无占用,允许使用
- 原则二、忙则等待:资源有占用,请求进程等待
- 原则三、有限等待:保证有限等待时间能够使用资源
- 原则四、让权等待:等待时,进程需要让出CPU
- 进程同步的方法:
- 消息队列
- 共享存储
- 信号量
- 线程同步
- 进程的线程共享进程资源
- 当多个线程并发的使用进程资源时,会发生什么?——进程内多线程也需要同步
- 线程同步的方法:
- 互斥量:保证多线程可以互斥的使用临界资源的一个锁
- 读写锁:是应对多读少写或者少读多写的情况发明的锁
- 自旋锁:
- 条件变量:
- 为什么需要进程间同步
- Linux的进程管理
- Linux进程相关概念
- 进程的类型
- 前台进程:通过命令行使用Linux的时候就是使用终端Shell,前台进程就是具有终端,可以和用户交互的进程。
- 后台进程:与前台进程相对,没有占用终端的就是后台进程,后台程序基本上不和用户交互,优先级比前台进程低。将需要执行的命令以“&”符号结束。比如:
python3 running_process.py &
。 - 守护(daemon)进程(特殊的后台进程)
- 很多守护进程在系统引导的时候启动,一直运行到系统关闭
- Linux有很多典型的守护进程,进程名字以“d”结尾的一般都是守护进程,例如:crond(定时任务守护进程)、httpd(http服务的)、sshd、mysqld。
- 进程的标记
- 进程的类型
- 操作Linux进程的相关命令
- ps:常用于显示当前进程的状态,常配合aux参数或者ef参数和grep命令检索特点进程
-
ps -aux
打印进程详细信息 -
ps -u root
查看root 用户的进程 -
ps -aux | grep 'python3'
查看特定进程 -
ps -ef --forest
查看进程树 -
ps -aux --sort=-pcpu
按照cpu的使用频率进行排序 -
ps -aux --sort=-pmem
按照内存进行排序
-
- top:看linux进程内存或其他状态,PR 代表优先级,VIRT 是进程的虚拟内存
- kill:给进程发送指定信号,只有(SIGKIll 9)信号可以无条件终止进程,其他信号进程有权忽略
-
kill -l
查看操作系统支持的信号 -
kill -9 <进程ID>
代表进程需要无条件的停止下来
-
- ps:常用于显示当前进程的状态,常配合aux参数或者ef参数和grep命令检索特点进程
- Linux进程相关概念
- 进程管理之进程实体
- 作业管理
- 作业管理之进程调度:是指计算机通过决策决定哪个就绪的进程可以获得CPU的使用权,跟多道程序设计密切相关
- 第一个步骤:保留旧进程的运行信息,请出旧进程(收拾包袱)
- 第二个步骤:选择新进程,准备运行环境并分配CPU(新进驻)
- 进程调度的三种基本机制:
- 如果进行进程调度的时候老进程还没执行完呢?按照老进程有没有执行完,可以把进程调度方法分为两大类:
- 进程调度算法:
- 先来先服务调度算法
- 短进程优先调度算法:调度程序优先选择就绪队列中估计运行时间最短的进程,不利于长作业进程的执行
- 高优先权优先调度算法:进程附带优先权,调度程序优先选择权重高的进程,使得紧迫的任务可以优先处理
- 时间片轮转调度算法:按照先来先服务的原则排列就绪进程,每次从队列头部取出待执行进程,分配一个时间片执行,每个时间片时间相同,是相对公平的调度算法,但不能保证及时响应用户
- 作业管理之死锁:死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此的通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
- 死锁的产生
- 死锁的处理
- 预防死锁的方法:破坏死锁必要条件中的一个或多个
- 摒弃请求保持条件:
- 系统规定进程运行之前,一次性申请所有需要的资源
- 进程在运行期间不会提出资源请求,从而摒弃请求保持条件
- 摒弃不可剥夺条件
- 当一个进程请求新的资源得不到满足时,必须释放占有的资源
- 进程运行时占有的资源可以被释放,意味着可以被剥夺
- 摒弃环路等待条件
- 可用资源线性排序,申请必须按照需要递增申请
- 线性申请不再形成环路,从而摒弃了环路等待条件
- 摒弃请求保持条件:
- 银行家算法
- 预防死锁的方法:破坏死锁必要条件中的一个或多个
- 作业管理之进程调度:是指计算机通过决策决定哪个就绪的进程可以获得CPU的使用权,跟多道程序设计密切相关
- 存储管理
- 内存分配与回收:早期计算机编程并不需要过多的存储管理,随着计算机和程序越来越复杂,存储管理成为必要,主要解决三个问题:确保计算机有足够的内存处理数据、确保程序可以从可用内存中获取一部分内存使用、确保程序可以归还使用后的内存以供其他程序使用
- 内存分配的过程
- 单一连续分配:单一连续分配是最简单的内存分配方式,只能在单用户、单进程的操作系统中使用
- 固定分区分配:固定分区分配是支持多道程序的最简单存储配方式,内存空间被划分为若干个固定大小的区域,每个分区只提供给一个程序使用,互不干扰
- 动态分区分配:根据进程实际需要,动态分配内存空间,涉及到相关数据结构、分配算法
- 内存回收的过程
- 内存分配的过程
- 段页式存储管理:从进程的角度理解进程的存储管理,操作系统如何管理进程的空间?
- 页式存储管理
- 字:
- 字块:字块是相对内存条物理设备的定义
- 页面:是相对进程逻辑空间的定义
- 将进程逻辑空间等分成若干大小的页面
- 相应的把物理内存空间分成与页面大小相同的的物理块
- 以页面为单位把进程逻辑空间装进物理内存中分散的物理块
- 页表记录进程逻辑空间与物理空间的映射
- 问题:现代计算机系统中,可以支持非常大的逻辑地址空间(2^32~2^64),这样页表就变得非常大,要占用非常大的内存空间,如:具有32位逻辑地址空间的分页系统,规定页面大小为4KB,则在每个进程页表中的页表项可达1M(2^20)个,如果每个页表项占用1Byte,故每个进程仅仅页表就要占用1MB的内存空间。
- 32位系统进程的寻址空间为4G
- 4G/4KB = 2^20
- 会出现多级页表
- 遇到的问题:当有一段连续的逻辑分布在多个页面中,将大大降低执行效率
- 段式存储管理
- 段式与页式的共同点:都离散的管理了进程的逻辑空间
- 段式与页式的不同点:页是物理单位,段是逻辑单位,分页是为了合理利用空间,分段是满足用户需求;页大小由硬件固定,段长度可动态变化;页表信息是一维的,段表信息是二维的,因为段表里每一段的额长度都是不一样的,因此需要把段的长度和基址都记录起来,所以段表的信息是二维的。
- 段页式存储管理
- 页式存储管理
- 虚拟内存
- 一个游戏十几G,物理内存只有4G,那这个游戏是怎么运行起来的?
- 虚拟内存概述
- 程序的局部性原理
- 局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。
- 程序运行时,无需全部逻辑空间装入内存,装载部分即可
- 如果程序发现所要使用的内存不在物理内存里(如果访问页不在内存),则发出缺页中断,发起页面置换,把保存在辅存里的页面置换到物理内存里。
- 从用户层面看,程序拥有很大的空间,即是虚拟内存
- 虚拟内存实际是对物理内存的补充,速度接近于内存,成本接近于辅存。
- 虚拟内存的置换算法
- Linux的存储管理
- Buddy 内存管理算法(Buddy是伙伴的意思,所以通常把这个叫做伙伴系统)
- Linux 交换空间
- 交换空间(Swap)是磁盘的一个分区
- Linux物理内存满时,会把一些内存交换之Swap空间
- Swap空间是初始化系统时配置的
- 在Linux系统中输入命令
top
,输出列表可以看到 Swap - Swap有什么用?
- 内存分配与回收:早期计算机编程并不需要过多的存储管理,随着计算机和程序越来越复杂,存储管理成为必要,主要解决三个问题:确保计算机有足够的内存处理数据、确保程序可以从可用内存中获取一部分内存使用、确保程序可以归还使用后的内存以供其他程序使用
- 文件管理
- 操作系统的文件管理
- 文件的逻辑结构
- 逻辑结构的文件类型
- 顺序文件
- 顺序文件是指按顺序存放在存储介质中的文件
- 磁带的存储特性使得磁带文件只能存储顺序文件
- 顺序文件是所有逻辑文件中存储效率最高的,因为在读或者是写的时候只需要顺序的读写
- 如果需要对顺序文件做增删改查怎么办?效率低
- 索引文件
- 可变长文件不适合使用顺序文件格式存储
- 索引文件是为了解决可变长文件存储而发明的一种文件格式
- 索引文件需要配合索引表完成存储的操作
- 辅存的存储空间分配
- 辅存的分配方式
- 存储空间管理
- 目录管理
- 文件的逻辑结构
- Linux文件的基本操作
- Linux目录
- bin 目录文件在命令行输出后为绿色,表示都是可执行的二进制文件
- etc 目录:系统管理及配置文件
- home 目录:每个用户文件的根目录
- usr 目录:系统应用目录
- usr/local 目录:存放的管理员安装的软件安装目录
- usr/local/bin 目录:一些软件的二进制文件
- usr/local/etc 目录:用户安装的软件的配置目录
- proc 目录:虚拟文件系统的目录,系统内存映射,可以访问系统信息包括:cpuinfo、meminfo,这里面有很多数字文件夹,代表的进程的文件夹,进程也是文件,Linux 一切皆文件
- dev 目录:存放linux设备文件,多是黄色的文件,包括:终端、键盘输入、鼠标
- boot 目录:存放系统引导时所使用的文件
- lib 目录:系统启动或运行时一些用到的动态库文件
- 相对路径:
- 绝对路径:
- Linux文件常用操作
- (目录/文件)创建、删除、读取、写入
- Linux文件类型
- Linux目录
- Linux的文件系统
- 文件系统概览
- 常见文件系统:FAT、NTFS、EXT2/3/4
- FAT(File Allocation Table)
- FAT16、FAT32等,微软Dos/Windows使用的文件系统
- 使用一张表来保持整个盘块的信息
- NTFS(New Technology File System)
- WindowsNT环境的文件系统
- NTFS对FAT进行了改进,取代了旧的文件系统
- EXT(Extended file system):扩展文件系统
- Linux的文件系统
- 不能被Windows识别
- EXT2/3/4 数字表示第几代
- Ext文件系统
- Inode Table:
- 存放文件Inode的地方
- 每个文件(目录都有一个Inode)
- 是每一个文件(目录)的索引节点
- Inode:
- 存放文件的元信息:文件类型、文件权限、文件物理地址、文件长度、文件连续计数、文件存取时间、索引的节点编号、文件状态、访问计数(当前有哪几个进程访问了这个文件)、链接指针等等无关于文件内容具体信息
- 文件名不是存放在Inode节点上的,而是存放在目录的Inode节点,比如有一个目录目录下面有一个文件,文件的名字不是存放在这个文件的Inode节点上,而是存放在包含这个文件的目录的Inode节点上
- 为的是列出目录文件的时候无需加载文件的Inode
- Inode bitmap
- Inode的位示图
- 记录已分配的Inode和未分配的Inode,当系统初始化的时候Inode数目已经固定
- Data block
- 是存放文件内容的地方
- 每个block都有一个唯一的编号
- 文件的block记录在文件的Inode上,Inode上记录的文件物理地址就是文件的block记录
- block bitmap:功能和Inode bitmap 类似,记录Data block的使用情况
- SuperBlock
- 记录整个文件系统相关信息的地方
- Block和Inode的使用情况
- 时间信息、控制信息等
- 块的大小一般都是1024字节
-
df -T
,可以查看磁盘挂载信息 -
dumpe2fs <指定设备>
,查看Inode信息 -
stat dumpe2fs.log
,查看文件具体信息
- 文件系统概览
- 操作系统的文件管理
- 操作系统的设备管理
- 广义的IO设备
- 对CPU而言,凡是对CPU进行数据输入的都是输入设备
- 对CPU而言,凡是对CPU进行数据输出的都是输出设备
- 按使用特性分类
- 存储设备:U盘、内存、磁盘
- 交互IO设备:键盘、显示器、鼠标
- 按信息交换的单位分类
- 块设备:磁盘、SD卡
- 字符设备:打印机、Shell终端
- 按设备的共享属性分类:独占设备、共享设备、虚拟设备
- 按传输速率分类:低速设备、中速设备、高速设备
- IO设备的缓冲区
- SPOOLing技术
- 广义的IO设备
- 进程管理
- 提升篇
- 线程同步
- 进程同步
- 线程、协程
- 用户态与内核态
- 上下文切换
- 综合实践
- 线程安全
- 线程池
- 同步任务
- 异步任务
- 操作系统的演进
- 计算机网络
- 概述篇
- 什么是计算机网络:计算机网络主要由一些通用的、可编程的硬件互联而成,通过这些硬件,可以传送不同类型的数据,并且可以支持广泛和日益增长的应用。
- 计算机网络不是软件概念,还包含硬件设备
- 计算机网络不仅仅是信息通信,还可以支持广泛的应用
- 计算机网络的分类
- 计算机网络发展简史
- 互联网的发展历史
- ISP(Internet Service Provider):网络服务提供商,如:**电信、**移动、**联通等
- 现代国际互联网的主要线路 https://live.infrapedia.com
- **互联网的发展简史
- 互联网的发展历史
- 层次结构
- 现代互联网的网络拓扑
- 计算机网络的性能指标
- 计算机网络常用单位:bps(速率,bit/s),为什么电信拉的100M光纤,测试峰值速度只有12M每秒?网络常用单位(Mbps),
100M/s=100Mbps=100Mbit/s
,bit位换算成字节有一个进制,8bit=1byte
,所以100Mbit/s=(100/8)MB/s=12.5MB/s
- 时延:发送时延(本机进行网络发送的时候它在本机所停留的时间)、传播时延、处理时延、排队时延
- 往返时间RTT(Route-Trip Time):是评估网络质量的一项重要指标
- RTT表示的是数据报文在端到端通信中来回一次的时间
- 通常使用ping命令查看RTT
- 计算机网络常用单位:bps(速率,bit/s),为什么电信拉的100M光纤,测试峰值速度只有12M每秒?网络常用单位(Mbps),
- 物理层
- 物理层的作用:
- 信道的基本概念:是往一个方向传送信息的媒体
- 一条通信电路包含一个接受信道和一个发送信道
- 根据信道的不同通信电路可以分成:
- 单工通信信道
- 只能一个方向通信,没有反方向反馈的信道
- 有线电视、无线收音机等等
- 半双工通信信道
- 双方都可以发送和接收信息
- 不能双方同时发送,也不能同时接收
- 全双工通信信道
- 双方都可以发送和接收信息
- 网络网线等等传输介质
- 单工通信信道
- 信道分用-复用技术:为了提升信道的利用效率
- 数据链路层
- 数据链路层概述
- 解决三个问题:封装成帧、透明传输、差错监测
- 封装成帧:
- 透明传输
- 差错监测
- 物理层只管传输比特流,无法控制以及判断是否出错,如果物理层传输时受到干扰,如:宇宙射线、闪电等等,都会影响比特流传输
- 数据链路层负责起“差错监测”的工作
- 数据链路层的差错监测
- 最大传输单元MTU(Maximum Transmission Unit)
- 以太网协议(数据链路层常用的协议)
- 数据链路层概述
- 底层协议
- 什么是计算机网络:计算机网络主要由一些通用的、可编程的硬件互联而成,通过这些硬件,可以传送不同类型的数据,并且可以支持广泛和日益增长的应用。
- 网络层篇
- 路由器是网络层重要的设备,从硬件角度分:家庭路由器、企业路由器
- 网络层IP协议相关
- IP 协议详解
- 虚拟互连网络
- 实际的计算机网络是错综复杂的
- 物理设备通过使用IP协议,屏蔽了物理网络之间的差异
- 当网络中的主机使用IP协议连接时,则无需关注网络细节
- IP协议使得复杂的实际网络变为一个虚拟互连的网络
- IP协议使得网络层可以屏蔽底层细节而专注网络层的数据转发
- IP协议解决了在虚拟网络中数据报传输路径的问题
- IP协议
- MAC地址:30-B4-9E-ED-85-CA,每一个网络设备或者说每一个网卡都有唯一。
- IP地址长度为32位,常分成4个8位
- IP地址常使用点分十进制来表示(0
255.0255.0255.0255) - 最多可以表示2^32个ip地址
- 至少五行,每行32比特位,就是至少20个字节
- 版本:占4位,指的是IP协议的版本,通信双方的版本必须一致,当前主流版本是4,即IPv4,也有IPv6
- 首部位长度:占4位,最大数值为15,表示的是IP首部长度,单位是“32位字”(4个字节),也即是IP首部最大长度为60字节
- 总长度:占16位,最大数值为65535,表示的是IP数据报总长度(IP首部+IP数据),超过MTU时数据链路层将会把IP协议分片,就是把较长的IP数据报拆分成多个数据帧来传输
- 标识:
- 标志:标记IP报文是否可以分片
- 片偏移:IP报文的长度比数据帧的要求要长的话,那么将会进行IP报文的分片。当前帧是第几个偏移的IP数据
- TTL:占8位,表明IP数据报文在网络中的寿命,每经过一个设备,TTL减1,当TTL=0时,网络设备必须丢弃该报文。作用是,当报文找不到终点时避免无限的传输消耗带宽。
- 协议:占8位,表面IP数据所携带的具体数据是什么协议的(如:TCP、UDP等)
- 首部检验和:占16位,校验IP首部是否有出错
- 源IP地址:发送IP数据报的机器的地址
- 目的IP地址:数据报到达哪个机器的地址
- IP协议的转发流程
- 虚拟互连网络
- 子网划分
- 分类的IP地址
- 特殊的主机号:
- 主机号全0表示当前网络段,不可分配为特定主机
- 主机号全1表示广播地址,向当前网络段所有主机发消息
- 特殊的网络号
- A类地址网络段全0(00000000)表示特殊网络
- A类地址网络段后7位全1(01111111:127)表示回环地址
- B类地址网络段(10000000.00000000:128.0)是不可使用的
- C类地址网络段(192.0.0)是不可使用的
- 127.0.0.1,通常被称为本地回环地址(Loopback Address),不属于任何一个有类别地址类。它代表设备的本地虚拟接口,所有默认被看作是永远不会宕掉的接口。在Windows操作系统中也有相似的定义,所有通常在安装网卡前就可以ping通这个本地回环地址。一般都会用来检查本地网络协议、基本数据接口等是否正常的。
- D类地址:1110…… 特殊用途
- E类地址:1111…… 特殊用途
- 划分子网
- 无分类编址CIDR
- 分类的IP地址
- 网络地址转换NAT技术(Network Address Translation)
- 简单路由过程
- IP 协议详解
- 网络层其他协议
- ARP协议与RARP协议
- ARP(Address Resolution Protocol)地址解析协议
- RARP(Reverse Address Resolution Protocol)逆地址解析协议
- (R)ARP协议是TCP/IP协议栈里面的基础的协议,是协调网络层和数据链路层配合工作的协议
- (R)ARP协议的操作对程序员是透明的
- 理解(R)ARP协议有助于理解网络分层的细节
- ICMP 协议
- ICMP 协议详解
- ICMP 协议的应用
- Ping应用
- 会发送询问报文
- Ping回环地址127.0.0.1,如果ping不同则表明计算机的协议栈有问题
- Ping网关地址
- Ping远端地址
- Traceroute应用
- 可以探测IP数据报在网络中走过的路径
- 当TTL=0时,网络设备必须丢弃该报文,会发送ICMP终点不可达差错报文,源端的主机这里传输发生了错误,这样让源主机察觉这里的问题。
- 巧妙利用TTL以及ICMP终点不可达差错报文,每次把TTL加1,直到到达对方的机器
-
tracert github.com
查看途径哪些IP
- Ping应用
- ARP协议与RARP协议
- IP的路由算法
- 路由的概述
- 一个理想的路由算法的特点:
- 算法是正确的、完整的。也就是说依据这个算法,数据能正确的到达目的地,不至于说达不到或目的是错误的。
- 算法在计算上应该尽可能的简单
- 算法可以适应网络中的变化,如网络抖动,光纤电缆损坏
- 算法是稳定的和公平的
- 因为互联网的规模非常大,环境非常复杂,所有需要对互联网进行划分。涉及到自治系统(Autonomous System)
- 自治系统(Autonomous System)
- 一个自治系统(AS)是出于一个管理机构(可以是一个国家、城市、学校)下的网络设备群
- AS内部网络自行管理,AS对外提供一个或多个出(入)口
- 自治系统内部路由的协议称为:内部网关协议(RIP、OSPF)
- 自治系统外部路由的协议称为:外部网关协议(BGP)
- 内部网关路由协议
- 距离矢量(DV)算法
- RIP协议的过程
- Dijkstra(迪杰斯特拉)算法
- OSPF协议
- 外部网关路由协议
- 路由的概述
- IPv6
- 传输层篇
- TCP 协议
- UDP 协议
- 超时重传机制
- 拥塞避免算法
- 心跳保活机制
- 应用层篇
- 应用层概述
- DNS详解
- DHCP(Dynamic Host Configuration Protocol)动态主机设置协议
- HTTP(HyperText Transfer Protocol)超文本传输协议,带超链接的文本其实也是一个富文本的表现形式,可以有图片动图视频,web服务就是提供内容的服务,对内容都有一个路径
- HTTP工作的结构
- HTTPS协议详解
- URL 资源
- HTTP 结构
- HTTPS 安全
- HTTP 服务
- 综合实践
- 使用线程池
- IP 报文
- ICMP 报文
- TCP 报文
- UDP 报文
- 概述篇
- Linux 环境:VMWare WorkStation + Linux 虚拟机
- 编程语言:C++、Python
“Gaia(盖亚)”(希腊语:Γαία、英语:Gaia (Gaea)),是古希腊神话中的大地之神,是众神之母,所有神灵中德高望重的显赫之神。 这门课程在内容上的定位是“基础知识”,相对于繁花齐放的实践项目来说,这门课程对它们而言,就犹如Gaia对各有所长的众神一样,是基础、是根基,虽“力不及众神”,但亦是“德高望重”,因而这个项目命名为“Gaia(盖亚)”。
以下这个列表将会持续更新和推荐一些质量高的书籍,保证学习进度的前提下,深化前面已经学习的知识。
第7章、第8章、第11章、第13章暂时不看。
12-5 http工作的结构-没声音