计算机原理-进阶知识

2020/12/13 计算机原理

# 计算机网络

// 什么是计算机网络
1. 计算机网络主要由一些通用的、可编程的硬件互连而成
2. 通过这些硬件,可以传送不同类型的数据,并且可以支持广泛和日益增长的应用
3. 计算机网络不是软件概念,还包含硬件设备
4. 计算机网络不仅仅是信息通信,还可以支持广泛的应用
----------------------------------------------------------------------------------------------
// 计算机网络的分类
1. 网络的作用范围
  1. 广域网:WAN 范围在几十到几千公里,区域跨省、跨国
  2. 城域网:MAN 范围在 5KM-50KM,区域在城市间
  3. 局域网:LAN 范围在 1KM以内,区域在地区内
2. 网络的使用者
  1. 公用网络
  2. 专用网络
----------------------------------------------------------------------------------------------
// 计算机网络的发展简史
1. 互联网的发展历史
  1. 单个网络 ARPANET
    1. 交换机
  2. 三级结构互联网
    1. 主干网
    2. 地区网
    3. 校园网
  3. 多层次 ISP 互联网
    1. ISP 即 Internet Service Provider 网络服务提供商如中国电信、中国移动、中国联通等
    2. 主干 ISP // 连接全球
    3. 地区 ISP // 连接地区
    3. 公司、校园、家庭等
2. 中国互联网的发展简史
  1. 1980年开始互联网实验
  2. 1989年第一个公共网络建立运行
  3. 1994年接入国际互联网
  4. 五大公共网络
    1. 中国电信互联网 CHINANET
    2. 中国联通互联网 UNINET
    3. 中国移动互联网 CMNET
    4. 中国教育与科研计算机网 CERNET
    5. 中国科学技术网 CSTNET
----------------------------------------------------------------------------------------------
// 计算机网络的层次结构
1. 层次结构设计的基本原则
  1. 各层之间是相互独立的
  2. 每一层要有足够的灵活性
  3. 各层之间完全解耦
2. OSI 七层模型
  1. 应用层:为计算机用户提供接口和服务
  2. 表示层:数据处理(编码解码、加密解密等)
  3. 会话层:管理(建立、维护、重连)通信会话
  4. 传输层:管理端到端的通信连接
  5. 网络层:数据路由(决定数据在网络的路径)
  6. 数据链路层:管理相邻节点之间的数据通信
  7. 物理层:数据通信的光电物理特性
  8. OSI 最终并没有成为广为使用的标准模型
    1. OSI 欲成为全球计算机都遵循的标准
    2. OSI 在市场化过程中困难重重,TCP/IP 在全球范围成功运行
    3. OSI 的专家缺乏实际经验
    4. OSI 标准制定周期过长,按 OSI 标准生产的设备无法及时进入市场
    5. OSI 模型设计的并不合理,一些功能在多层中重复出现
3. TCP/IP 四层模型
  1. 应用层 // HTTP、FTP
    1. OSI 的应用层
    2. OSI 的表示层
    3. OSI 的会话层
  2. 传输层 // TCP、UDP
    1. OSI 的传输层
  3. 网络层 // IP、ICMP
    1. OSI 的网络层
  4. 网络接口层 // Ethernet、ARP、RARP
    1. OSI 的数据链路层
    2. OSI 的物理层
----------------------------------------------------------------------------------------------
// 网络接口层之现代互联网的网络拓扑
1. 边缘部分
  1. 家庭:多终端机器——>路由器——>网关——>地区 ISP
  2. 企业:多终端机器——>多路由器——>多网关——>地区 ISP
2. 核心部分
  主干 ISP 通过海底电缆连接
3. 用户连接模式
  1. 客户——服务器(C/S)模式
  2. 对等连接(P2P)模式
----------------------------------------------------------------------------------------------
// 网络接口层之计算机网络的性能指标
1. 速率:bps = bit/s
2. 时延
  1. 发送时延 = 数据长度(bit)/ 发送速率(bit/s) // 受限于计算机网卡
  2. 传播时延 = 传输路径距离 / 传播速率(bit/s) // 受限于传输介质
  3. 排队时延:数据包在网络设备中等待被处理的时间
  4. 处理时延:数据包到达设备或目的机器被处理所需要的时间
  5. 总时延 = 发送时延 + 传播时延 + 排队时延 + 处理时延
3. 往返时间(RTT1. RTT(Route-Trip Time)是评估网络质量的一项重要指标
  2. RTT 表示的是数据报文在端到端通信中的来回一次的时间
  3. 通常使用 ping 命令查看 RTT
----------------------------------------------------------------------------------------------
// 网络接口层之物理层概述
1. 物理层的作用
  1. 连接不同的物理设备
  2. 传输比特流
  3. 传输介质
    1. 双绞线
    2. 同轴电缆
    3. 光纤
    4. 红外线
    5. 无线
    6. 激光
2. 信道的基本概念
  1. 信道是往一个方向传送信息的媒体
  2. 一条通信电路包含一个接收信道和一个发送信道
  3. 单工通信信道
    1. 只能往一个方法通信,没有反方向反馈的信道
    2. 有线电视、无限电收音机等
  4. 半双工通信信道
    1. 双方都可以发送和接收信息
    2. 不能双方同时发送,也不能同时接收
  5. 全双工通信信道
    1. 双方都可以同时发送和接收信息
3. 分用-复用技术
  1. 传送和接收都走同一个入口和出口,而不是都有各自的信道
----------------------------------------------------------------------------------------------
// 网络接口层之数据链路层概述
1. 封装成帧
  1. 帧 是数据链路层数据的基本单位
  2. 发送端在网络层的一段数据前后添加特定标记形成 帧
  3. 接收端根据前后特定标记识别出 帧
  4. 物理层不管 帧
  5. 帧 首部和尾部是特定的控制字符(特定比特流)
  6. SOH00000001
  7. EOT00000100
  8. 如果数据中有 SOHEOT 会在前面加上 ESC 作为转义
2. 透明传输
  1. 透明在计算机领域是非常重要的一个术语
  2. 一种实际存在的事物却又看起来不存在一样
  3. 即是控制字符在帧数据中,但是要当做不存在的去处理
3. 差错监测
  1. 物理层只管传输比特流,无法控制是否出错
  2. 数据链路层负责起 差错监测 功能
  3. 奇偶校验码
  4. 循环冗余校验码 CRC
----------------------------------------------------------------------------------------------
// 网络接口层之最大传输单元 MTU
1. MTU
  1. 最大传输单元 MTU (Maximum Transmission Unit)
  2. 数据链路层的数据帧也不是无限大的
  3. 数据帧过大或过小都会影响传输的效率
  4. 以太网 MTU 一般为 1500 字节
2. 路径 MTU
  1. 路径 MTU 由链路中 MTU 的最小值决定
----------------------------------------------------------------------------------------------
// 网络接口层之以太网协议详解
1. MAC 地址
  1. MAC 地址(物理地址、硬件地址)
  2. 每一个设备都拥有唯一的 MAC 地址
  3. MAC 地址共48位,使用十六进制表示
  4. cmd ——> piconfig/all // 查看 MAC 地址
2. 以太网协议
  1. 以太网(Ethernet)是一种使用广泛的局域网技术
  2. 以太网是一种应用于数据链路层的协议
  3. 使用以太网可以完成相邻设备的数据帧传输
  4. 路由器拥有一张 MAC 地址表,用于识别发送的目的机器
3. 数据发送流程
  1. A 通过网卡发出数据帧
  2. 数据帧到达路由器,路由器取出前6字节即目的机器的 MAC 地址
  3. 路由器匹配 MAC 地址表,找到对应的网络接口
  4. 路由器往该网络接口发送数据帧
  5. 如果匹配不到 MAC 地址表,则会广播发送给所有在表中的机器,收到回应后,会记录下未知匹配不到的 MAC 地址表
----------------------------------------------------------------------------------------------
// 网络层之IP 协议详解
1. 虚拟互连网络
  1. 实际的计算机网络是错综复杂的
  2. 物理设备通过使用 IP 协议,屏蔽了物理网络之间的差异
  3. 当网络中的主机使用 IP 协议连接时,则无需关注网络细节
  4. IP 协议使得复杂的实际网络变为一个虚拟互连的网络
  5. IP 协议使得网络层可以屏蔽底层细节而专注网络层的数据转发
  6. IP 协议解决了再虚拟网络中数据报传输路径的问题
2. IP 协议 // 一共有 2^32 = 4294961296 个 IP
  1. IP 地址长度为32位,常分成48位的二进制数
  2. IP 地址常使用点分十进制来表示 // 0~255.0~255.0~255.0~255
----------------------------------------------------------------------------------------------
// 网络层之 IP 协议的转发流程
1. 路由表简介
  1. 计算机或者路由器都拥有路由表
  2. 路由表包含了目的 IP 地址和下一跳的 IP 地址
2. IP 协议的转发流程
  1. 数据帧每一跳的 MAC 地址都在变化
  2. IP 数据报每一跳的 IP 地址始终不变
  3. 网络层的转发流程
    1. A 发出目的地为 CIP 数据报,查询路由表发现下一跳为 E
    2. A 将数据报发送给 E
    3. E 查询路由表发现下一跳为 F,将数据报发送给 F
    4. F 查询路由表发现目的地 C 直接连接,将数据报发送给 C
  4. 数据链路层 + 网络层的转发流程
    1. A 发出目的地为 CIP 数据报,查询路由表发现下一跳为 E
    2. AIP 数据报交给数据链路层,并告知目的 MAC 地址是 E // 查询 ARP 缓存表
    3. 数据链路层填充源 MAC 地址 A 和目的 MAC 地址 E
    4. 数据链路层通过物理层将数据发送给 E
    5. E 的数据链路层接收到数据帧,把帧数据交给网络层
    6. E 查询路由表,发现下一跳为 F
    7. E 把数据报交给数据链路层,并告知目的 MAC 地址为 F // 查询 ARP 缓存表
    8. E 的数据链路层封装数据帧并发送
    9. F 的数据链路层接收到数据帧,把帧数据交给网络层
    10. F 查询路由表,发现下一跳为 C
    11. F 把数据报交给数据链路层,并告知目的 MAC 地址为 C // 查询 ARP 缓存表
    12. F 的数据链路层封装数据帧并发送
----------------------------------------------------------------------------------------------
// 网络层之 ARP 协议与 RARP 协议
1. ARP (Address Resolution Protocol)地址解析协议 // cmd arp -a
  1. 用于将网络层 IP 32位地址转换成数据链路层 MAC 48位地址
  2. ARP 缓存表就是 IP 地址和 MAC 地址的映射
  3. ARP 缓存表是 ARP 协议和 RARP 协议运行的关键
  4. ARP 缓存表缓存了 IP 地址到硬件地址之间的映射关系
  5. ARP 缓存表中的记录并不是永久有效的,有一定的期限
2. RARP (Reverse Address Resolution Protocol)逆地址解析协议
  1. 用于将数据链路层 MAC 48位地址转换成网络层 IP 32位地址
----------------------------------------------------------------------------------------------
// 网络层之 IP 地址的子网划分
1. 分类的 IP 地址
  1. IP 分为网络号和主机号
  2. A类地址:网络号有8位且以0开头,主机号有241. 最小网络号:1
    2. 最大网络号:127011111113. 子网数量:2^7-2
    4. 最小主机号:0.0.1
    5. 最大主机号:255.255.254
    6. 主机数量:2^24-2
  3. B类地址:网络号有16位且以10开头,主机号有161. 最小网络号:128.1
    2. 最大网络号:191.255
    3. 子网数量:2^14-1
    4. 最小主机号:0.1
    5. 最大主机号:255.254
    6. 主机数量:2^16-2
  4. C类地址:网络号有24位且以110开头,主机号有81. 最小网络号:192.0.1
    2. 最大网络号:223.255.255
    3. 子网数量:2^21-1
    4. 最小主机号:1
    5. 最大主机号:254
    6. 主机数量:2^8-2
  5. D类地址:以1110开头
  6. E类地址:以1111开头
  7. 特殊的主机号
    1. 主机号全0表示当前网络段,不可分配给特定主机 // 1.2.3.4
    2. 主机号为全1表示广播地址,向当前网络段所有主机 发消息 // 1.255.255.255
  8. 特殊的网络号
    1. A类地址网络段全(000000000)表示特殊网络
    2. A类地址网络段后7位全101111111127)表示回环地址
    3. B类地址网络段(10000000.00000000128.0)是不可使用的
    4. C类地址网络段(192.0.0)是不可使用的
  9. 127.0.0.1 通常称为本地回环地址(Loopback Address)
    1. 不属于任何一个有类别地址类,它代表设备的本地虚拟接口,所以默认被看做是永远不会宕掉的接口
    2. 在 windows 操作系统中也有相似的定义,所以通常在安装网卡前就可以 ping 通这个本地回环地址
    3. 一般都会用来检查本地网络协议、基本数据接口等是否正常
2. 划分子网
  1. IP 地址划分为网络号、子网号、主机号
  2. 193.10.10.0 可以划分为 193.10.10.0 ~ 193.10.10.127193.10.10.128 ~ 193.10.10.255
  3. 子网掩码 // 用于判断 ip 是属于哪个网络号
    1. 子网掩码和 IP 地址一样,都是 322. 子网掩码由连续的 1 和连续的 0 组成
    3. 某一个子网的子网掩码具备网络号位数个连续的 1
    4. A 类地址的子网掩码:255.0.0.0
    5. B 类地址的子网掩码:255.255.0.0
    6. C 类地址的子网掩码:255.255.255.0
    7. 子网掩码如何换算成子网号
      1. 把子网掩码和 IP 地址都先换算成二进制
      2. 再把两个二进制进行与运算,就是两个都是1就是1,不同就是0
      3. 再把与运算的结果换算成十进制即可得到网络号
3. 无分类编址 CIDR
  1. CIDR 中没有 ABC 类网络号和子网划分的概念
  2. CIDR 将网络前缀相同的 IP 地址称为一个 CIDR 地址块
  3.CIDR 中的 IP 地址分为网络前缀和主机号
  4. 网络前缀是任意位数的
  5. 相比原来子网划分更加灵活
----------------------------------------------------------------------------------------------
// 网络层之网络地址转换 NAT 技术
1. IPv4 最多只有 40+ 亿个 IP 地址
2. 早期 IP 地址的不合理规划导致 IP 号浪费
3. 内网地址和外网地址的区别
  1. 内网
    1. 内部机构使用
    2. 避免与外网地址重复
  2. 外网
    1. 全球范围使用
    2. 全球公网唯一
4. 三类内网地址
  1. 10.0.0.0 ~ 10.255.255.255 // 支持千万数量级设备
  2. 172.16.0.0 ~ 172.31.255.255 // 支持百万数量级设备
  3. 192.168.0.0 ~ 192.168.255.255 // 支持万数量级设备
5. 网络地址转换 NAT (Network Address Translation)
  1. 用于多个主机通过一个公有 IP 访问互联网的私有网络中
  2. 在路由器中实现把内网的 IP + 端口转换成外部的 IP + 端口 // 相当于转发
----------------------------------------------------------------------------------------------
// 网络层之 ICMP 协议详解
  1. 网际控制报文协议(Internet Control Message Protocol)
  2. ICMP 协议可以报告错误信息或异常情况 // IP 传输过程中的错误异常
  3. 帧数据——>IP 数据报——>IP 首部+ IP 数据报的数据——> ICMP 报文首部 + ICMP 报文数据
  4. Traceroute 应用
    1. Traceroute 可以探测 IP 数据报在网络中走过的路径
    2. cmd tracert 网址 // 可以看到网络访问经过的路径
----------------------------------------------------------------------------------------------
// 网络层之网络层的路由概述
1. 一个自治系统(AS)是处于一个管理机构下的网络设备群
2. AS 内部网络自行管理,AS 对外提供一个或者多个出入口
3. 自治系统内部路由的协议称为:内部网关协议(RIPOSPF4. 自治系统外部路由的协议称为:外部网关协议(BGP----------------------------------------------------------------------------------------------
// 传输层之 UDP 协议详解
1. UDP(User Datagram Protocol)用户数据报协议
2. UDP 是一个非常简单的协议
3. UDP 是无连接协议
4. UDP 不能保证可靠的交付数据
5. UDP 是面向报文传输的
6. UDP 没有拥塞控制
7. UDP 的首部开销很小
8. 应用于多媒体信息分发
  1. 视频
  2. 语音
  3. 实时信息
----------------------------------------------------------------------------------------------
// 传输层之 TCP 协议详解
1. TCP(Transmission Control Protocol)传输控制协议
2. TCP 协议是计算机网络中非常复杂的一个协议
3. TCP 是面向连接的协议
4. TCP 的一个连接有两端 // 点对点通信
5. TCP 提供可靠的传输服务
6. TCP 协议提供全双工的通信
7. TCP 是面向字节流的协议
8. 应用于可靠消息传输
  1. 金融交易
  2. 可靠通讯
  3. MQ
----------------------------------------------------------------------------------------------
// 传输层之 TCP 连接的建立即三次握手
1. 为什么发送方要发出第三个确认报文?
  1. 已经失效的连接请求报文传送到对方,引起错误
----------------------------------------------------------------------------------------------
// 应用层
1. 传输层以及以下的层提供完整的通信服务
2. 应用层是面向用户的一层
3. 定义应用间通信的规则
  1. 应用进程的报文类型(请求报文、应答报文)
  2. 报文的语法、格式
  3. 应用进程发送数据的时机、规则
----------------------------------------------------------------------------------------------
// 应用层之 DNS 详解
1. DNS (Domain Name System)域名系统
2. 它是一项互联网服务,存储域名和 IP 地址相互映射关系的一个分布式数据库
   它能够使人方法的访问互联网,可以通过 DNS 解析域名得到 IP
3. 域名
  1. 域名由点、字母和数字组成
  2. 点分割不同的域
  3. 域名可以分为顶级域、二级域、三级域
    1. wwww.baidu.com // 顶级域:com,二级域:baidu,三级域:www
  4. 顶级域
    1. 国家
      1. cn
      2. us
      3. uk
      4. ca
    2. 通用
      1. com
      2. net
      3. gov
      4. org
  5. 二级域
    1. aliyun
    2. qq
    3. baidu
4. 工作原理
  1. 迭代查询,相当于缓存查询
  2. 递归查询,相当于查最新的云数据
  3. 查询逻辑:根域名服务器(根) ——> 顶级域名服务器 ——> 权威域名服务器(二级域)
5. DNS 攻击
  1. 概念
    1. 输入 baidu.com 地址通过 DNS 攻击解析后,返回的并不是 baidu 的服务,而是攻击者设置的对应地址
    2. 错误域名解析到纠错导航页面
    3. 错误域名解析到非正常页面
    4. 将正常站点解析到恶意页面
  2. DNS 劫持即地方运营商的 DNS 服务被劫持,只能运营商处理,在电脑网络设置中如果选择了
     自动获得 IP 地址 和 自动获得 DNS 服务器地址 就是进入了地方运营商的 DNS 服务
  3. DNS 欺骗即使用了一个伪权威域名的服务来顶替了真正权威域名服务器
  4. DDoS 攻击
    1. DNS 本质上是一种程序
    2. 物理设备有容量承载极限
    3. 超过容量极限服务可能会宕机
    4. 拒绝服务攻击,denial-of-service attack,简称 DoS 攻击
    5. DDoS 是一种网络攻击手法,其目的在于使目标电脑的网络或系统资源耗尽
       使得服务暂时中断或停止,导致其正常用户无法访问
    6. 防范手段
      1. DNS 服务商角度:提高本地服务器的安全性
      2. 个人用户角度:选择大型权威的 DNS 服务商
----------------------------------------------------------------------------------------------
// 应用层之 DHCP 协议详解
1. DHCP(Dynamic Host Configuration Protocol)动态主机设置协议
2. DHCP 是一个局域网协议
3. DHCP 是应用 UDP 协议的应用层协议
4. 在电脑网络设置中 自动获得 IP 地址 就是启用 DHCP 协议
5. DHCP 服务器监听默认端口 67
----------------------------------------------------------------------------------------------
// 应用层之 HTTP 协议详解
1. HTTP(HyperText Transfer Protocol)超文本传输协议
2. 格式:'http(s)://<主机>:<端口>/<路径>'
3. HTTP 协议是可靠的数据传输协议
4. web 服务器
  1. 硬件部分即物理设备
  2. 软件部分即 nginx、apache
  3. 接受客户端连接——>接收请求报文——>处理请求——>访问 web 资源——>构造应答——>发送应答
5. 状态码:
  1. 200 ~ 299 成功状态码
  2. 300 ~ 399 重定向状态码
  3. 400 ~ 499 客户端错误状态码
  4. 500 ~ 599 服务端错误状态码
----------------------------------------------------------------------------------------------
// 应用层之 HTTPS 协议详解
1. HTTPS(Secure)是安全的 HTTP 协议
2. 格式:'http(s)://<主机>:<端口>/<路径>'
3. 对称加密即加密和解密的钥匙都是一样的
4. 非对称加密即加密和解密的钥匙是不一样的
5. 公钥:公钥给大家使用,对外公开
6. 私钥:私钥自己使用,不对外公开
7. 数字证书是可信任组织颁发给特定对象的认证
  1. 证书序列号
  2. 签名算法
  3. 有效期
  4. 对象名称
  5. 对象公开密钥
8. SSL(Secure Sockets Layer)安全套阶层
  1. 位于应用层和传输层之间
  2. 保证数据安全和数据完整
  3. 对传输层数据进行加密后传输
9. 流程
  1. 443 端口的 TCP 连接
  2. SSL 安全参数握手
    1. 客户端发送 随机数1、协议版本、加密算法 给服务器
    2. 服务器返回 确定加密算法、数字证书、随机数2 给客户端
    3. 客户端确认证书是否有效并生成随机数3,使用服务器的公钥加密随机数3发送给服务器
  3. 客户端发送数据
  4. 服务端发送数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
Last Updated: 2024/7/31 12:57:25
    飘向北方
    那吾克热-NW,尤长靖