zoukankan      html  css  js  c++  java
  • Linux系统学习(六)

    CentOS7启动流程

    1. POST加电自检

    功能:

    - 检测硬件设备是否正常能够运行(主板上ROM芯片上的BIOS程序实现)

    - BIOS程序能够检测CPU/Memory/硬盘/IO设备是否能够正常运行

    - 如果是个人PC机,还会检测显示器

    - 只要通电,CPU就会自动去加载ROM芯片上的BIOS程序,实现硬件设备初始化

    2. Boot Sequence(选择启动设备以加载MBR)

    功能:

    - 选择要启动的硬件设备,选择之后就开始读取这个设备位于MBR头里的BootLoader

    - 根据BIOS中对启动顺序的设定,依次扫描引导设备

    - 然后第一个被扫描到的具有引导程序(BootLoader)的设备会成为要启动的引导设备

    3. 加载BootLoader

    功能:

    - BIOS通过读取并执行启动设备中的BootLoader

    - BootLoader会提供一个菜单给用户,让用户去选择要启动的系统或者不同的内核版本

    - 用户去将内核版本加载至MBR中的特定程序,接着将在RAM中解压展开,将系统控制权

    交由给内核

    GRUB阶段: BootLoader中的一种,主要功能是实现加载内核

    stage1: 用于加载stage1.5阶段,目的是为了识别驱动stage2 (/boot/)所在分区的文件系统

    stage1.5 :加载stage2阶段所在分区的文件系统驱动,让stage1BootLoader能识别stage2

    所在分区的文件系统

    stage2: 存放在磁盘分区上,具体存放在/boot/grub目录中,主要用于加载内核文件以及

    ramdisk这个临时根文件系统

    4. Kernel初始化

    功能:

    - 探测可识别的所有硬件设备;

    - 加载硬件的驱动程序

    - 以只读方式挂载根文件系统

    - 运行用户空间中的第一个应用程序: /sbin/init(进程号为0)

    5. Init管理用户空间服务进程

    Init可以去理解为:内核空间派来管理用户空间的程序进程

    - Init初始化程序会根据系统上的配置文件执行一系列操作

    (Centos5/6/7上关于Init的配置文件不一样,但是总体的启动流程是不变的)

    - 根据Init配置文件设置默认运行级别

    CentOS7: 初始化Init程序是systemd;配置文件为:

    a) /usr/lib/system/systemd/*

    b) /etc/systemd/system/*

    NoteCentos6 --> Centos7  Init管理程序的变化-> systemd

    Note

    加电自检 -> 选择bootSequence(选择启动设备)-> 加载BootLoader(启动程序)-> 内核初始化(启动Init程序) -> Init管理的服务(开机自启相关服务)

    网络基础知识

    1. OSI七层模型  ---  TCP/IP模型(4层:应用层/传输层/网络连接层/物理层)

    应用层: 网络服务与最终用户的一个接口

    协议: http ftp dns等等

     
       

    表示层:数据的标识、加密、压缩等等

    格式:JPEC ASCII 加密格式等等

    会话层:建立、管理、终止会话

    对应主机进程、指本地主机与远程管理正在进行的会话

    传输层: 定义传输局的协议端口、流量控制和差错校验等等

    协议: TCP UDP协议

    网络层:进行逻辑寻址(IP地址,在不同网络之间的路径选择

    协议: ICMP arp rap

    数据链路层:建立逻辑连接,进行硬件地址寻址,差错校验等等

    将比特流组成字节进行合并为帧,用MAC地址进行访问

    物理层:建立、维护、断开物理连接

    比特流

    2. TCP服务和UDP服务之间区别

    - TCP面向可靠连接; UDP非面向连接

    - TCP是以数据流形式传输; UDP是以数据段进行传输

    3. TCP如何保证可靠传输

    - TCP分段: 应用数据分割成合适的TCP端发送(对于UDP来说,应用程序产生的数据端长度保持不变传输)

    - 超时重传: 每发出一个TCP端都会自动启动一个"重传定时器";如果不能够及时收到一个确认包,将重传

    这个报文段

    - 流量控制: 缓存区固定大小,TCP接收端只允许另一端发送接收缓存区所能接纳的数据

    - 数据校验: TCP首部(校验位);如果收到的校验和有差错,会选择丢去或不确认

    - 处理IP数据包:

    a) 丢弃重复的IP数据包

    b) 会将失序的IP数据包重新排序之后交由给应用层

    ++

    封装: 数据包从应用层到物理层 依次添加:tcp首部 ip首部 mac首部

    解封装:数据包从物理层到应用 依次移除首部信息

    4. TCP首部格式

    - 端口: IP首部中的IP地址 + TCP首部中的Port端口唯一确定一个TCP连接

    - 序号: 用来标识数据字节流 序号:2^32  当序号用完后会重新从0开始

    - 确认号: 发送确认的一端所期待收到的下一个序号

    - 数据偏移量:TCP报文段的数据起始处到TCP数据部分其实距离(4bytes);占用4bit

    所以TCP首部最大长度为 60bytes(2^4 - 1)*4(选项拥有40bytes)最小长度为:20bytesTCP固定长度)

    标识这是怎么样一个TCP

    URG:紧急指针有效(会立刻处理)

    ACK:确认序列号有效

    PSH:接收方尽快将这个报文段交由给应用层

    RST:重建连接(如果收到RST包说明发生错误会立刻断开当前tcp连接)

    SYN:同步序列号用来发起连接

    FIN:发送端完成发送任务后,断开连接

    .........

    5. TCP三次握手和四次挥手(TCP建立和断开过程)

    - 三次握手:A作为客户端 B作为服务端

    A -> B :发送建立连接的请求(SYN: seq ack win mss  + 有限状态机的变化 )

    B > A :响应确认请求连接(ACK)并发送连接请求(SYN) =》 结合成1

    A -> B : 响应确认 (ACK)

    三次握手第2中将SYNACK包合并成一个包发送的目的是:减少连接建立交互过程,从而提高建立连接效率

    两次握手?? 不可以   两次握手无法保证安全可靠连接

    A -> B : 发送SYN包;发生故障

    B -> A : 发送ACK包,可以与A建立连接了,事实上:能够建立吗?这个没有完成的不可靠连接一直在占用

    TCP有限状态机变化

    Listen状态

    SYN_SENT状态

    SYN_RECV状态

    ESTABLISHED状态:已经建立连接

    FIN_WAIT1状态

    FIN_WAIT2状态

    CLOSING状态

    CLOSING_WAIT状态

    LAST_ACK状态

    TIME-WAIT状态

    CLOSED状态

    - 四次挥手:A作为客户端 B作为服务端

    - 流量控制(滑动窗口)

    - 拥塞控制

    - TIME_WAIT状态......

  • 相关阅读:
    OCP-052考试题库汇总(35)-CUUG内部解答版
    OCP-052考试题库汇总(34)-CUUG内部解答版
    018 ThreadLocal实现线程安全
    017 无锁与CAS
    016 原子类
    015 可见性问题与volatile
    014 锁重入
    013 synchronized的优化
    012 内置锁和synchronized
    011 线程安全性问题
  • 原文地址:https://www.cnblogs.com/panfei-ywg/p/12785272.html
Copyright © 2011-2022 走看看