计算机网络复习

Author Avatar
Aryb1n 9月 05, 2017

概论

发展:

  • 远程联机系统
  • 计算机-计算机网络 以资源共享为目标
  • 开放式标准化网络

分类

  1. 按照大小
  • 局域网
  • 城域网
  • 广域网
  1. 按照拓扑结构
  • 星形网, 通过中心节点连接其他节点, 信息交换需要经过中心节点, 中心节点GG整个系统GG
  • 环形网, 所有节点形成一个闭环, 信息交换要沿着环, 任意一个节点GG就GG
  • 总线网络, 所有节点都连在总线上, 任何节点发送数据其他节点都能收到, 任何节点坏了都不影响
  • 不规则网络, 每个节点和至少两个节点连接, 可靠型好, 较少节点出现故障不影响大局

  • 局域网

    • 总线型, 星型, 环形
  • 广域网
    • 不规则型
  • 点对点: 独占
    • 星型, 不规则型
  • 多点通信: 共享
    • 总线型, 环型
  1. 按数据交换方式
  • 电路交换
  • 分组交换
  • 信元交换

概念;

  • 通信子网: 由路由器和通信线路组成, 完成网络通信任务
  • 资源子网: 由连接到通信子网的服务器和主机系统组成, 就是一些终端设备…包括硬件资源和软件资源
    • 硬件资源
      CPU, 存储器, 硬盘等等
    • 软件资源
      操作系统, 数据库系统, 工具软件, 应用程序
  • 计算机网络: 将若干台具有独立功能的计算机系统,用某种或多种通信介质连接起来,通过完善的网络协议,在数据交换的基础上,实现网络资源共享的系统称为计算机网络。

网络协议

约定好的一整套通信规程,包括规定要交换的数据格式、控制信息的格式和控制功能、通信过程中事件执行的次序等。这些通信规程称之为网络协议。

我们将计算机网络分层, 然后每一层都有一个特定的协议来描述功能的实现

相同的层通过协议来保证正常通信, 不同的层, 底层给高层提供服务

OSI参考模型

分为7层, 从低层到高层

  • 物理层
  • 数据链路层
  • 网络层
  • 传输层
  • 会话层
  • 表示层
  • 应用层

其中的会话层, 表示层…定义是这样子的, 但我确实没有在意过这个
会话层: 进行会话管理, 包括通信方向控制, 故障点恢复
表示层: 数据转化, 数据加解密

另外, 靠下的四层, 是这个负责通信, 5-7是负责数据处理

因为这个OSI参考模型是那种教科书式的模型, 其实未被使用过, 只是一个参考, 真正使用到的是Internet参考模型

Internet参考模型

  • 子网层
    • 物理层
    • 数据链路层
  • 网络层
  • 传输层
  • 应用层

相当于是5层结构, 这个很常用

数据通信基础

模型构成

信源 - 变换器 - 信道 - 反变换器 - 信宿

信源: 把各种信息转化成原始物理信号
变换器: 把原始物理信号进行变换, 以便与在信道上传输
噪声源: 信道自身的噪声以及周围环境对信道的干扰

下面两个概念对比

  • 信号带宽: 信号能量所集中的频率范围, 记为H = f_max - f_min, f为频率
    对于数字信号, 带宽H可以近似表示为H = 1 / t, t 为脉冲宽度…这个没懂
  • 信道带宽: 信道允许传输信号的频率范围, 单位是Hz, 对于数字通信, 通常用数据率表示带宽

信道数据率(容量): 信道每秒最多传输的二进制位数, 单位bps

衡量信道质量的两个重要参数

  • 信道带宽
  • 信道的误码率

信道带宽和数据率的关系:
奈奎斯特定理(无噪声信道)

C = 2H * logL (bps)

L是数字信号的离散取值数目
C为信道的数据率
H为信道带宽

香农定理(有噪声信道, L不受限)

C = H * log(1 + S/N)

S为信号功率, N为噪声功率, S/N为信噪比

波特率: 码元速率, 美秒传输的码元的数目, 单位是波特(B)
若码元的离散取值数目是L, 波特率是B, 数据率是C, 则 C = B * logL

误码率: 数字信号比特(二进制位)在传输中出现错误的概率

信道的通信方向: 单工信道, 半双工信道, 全双工信道
半双工是同一时刻只允许单向传输

常用的物理传输媒介

  1. 双绞线
  2. 同轴电缆
  3. 光纤
  4. 无线电波

数字信号编码

  • 非归零编码
    高电平表示1, 低电平表示0
    用于计算机内部
  • 曼彻斯特编码
    每一位中间有一次跳变, 既表示数据(上/下跳变), 又表示同步信号…
    • 含内部时钟, 收发端同步容易
    • 抗干扰能力强
      用于802.3局域网
  • 差分曼彻斯特
    每一位中间也有一次跳变, 但这种跳变仅作为同步信号, 不代表数据.数据值通过每位开始有无跳变来决定
    • 含内部时钟, 收发端同步容易
    • 抗干扰能力比曼彻斯特还要强

数字调制技术

基带信号 - 调制 - 解调 - 基带信号

模拟信号的脉码调制

脉码调制大概过程: 采样, 量化, 编码

差分脉码调制: 输出值不是量化值本身, 是当前值和上一个值的差值

多路复用技术

将多个信道复用在同一条物理线路上, 使得一条物理线路能够同时传输多路数据信号
具体方法有频分, 时分, 统计时分…我对这些不是很了解, 想先跳过

数据同步方式

物理层协议

物理层协议实际上就是通信接口标准
机械特性, 功能特性, 规程特性, 电气特性…
好了就此打住, 我们先进入下一层

数据链路层

主要功能: 在相邻节点间保证数据帧的透明传输

数据帧

帧同步 | 目的地址 | 源地址 | 控制 | 数据 | 帧校验

差错控制

检错码: 能够发现差错, 但无法自动纠正差错, 通过重传来获得正确的数据.

  • CRC循环冗余
    纠错码: 不但能过发现差错, 而且知道哪些位出错, 从而能够自动纠正错误.
  • 海明码

流量控制

协议

HDLC协议
PPP协议

链路层的两个子层

IEEE802系列标准把数据链路层分成LLC(Logical Link Control,逻辑链路控制)和MAC(Media Access Control,介质访问控制)两个子层

  • MAC子层
    主要负责数据帧的封装/卸载, 链路管理, 差错控制, MAC子层的存在屏蔽了不同物理链路种类的差异性
    解决当局域网中共用信道的使用产生竞争时,如何分配信道的使用权问题
  • LLC子层
    LLC是靠上的子层, 主要负责给上面的层(网络层)提供服务

其实感觉下面两层好像不是那么的…重要…对于我想做的方面.
我暂时先跳过这一部分~~
有时间再回来
先学习网络层

网络层

在数据链路层的支持下, 将报文分组源节点传输到目的节点

网络层和数据链路层区别

数据链路层仅仅完成相邻节点的数据传输, 而网络层完成源节点到目的节点的

报文分组

分组交换技术把报文分成若干分组…报文分组是网络层基本协议数据单元

序号 | 源地址 | 目的地址 | 控制信息 | 长度 | 数据

分组是数据帧(链路层)的数据部分

分组交换技术

定义: 将一份完整的报文划分为若干个分组, 每个分组以存储/转发方式,独立地从源节点传输到目的节点, 目的节点收到这些分组重新组装成原报文

分组交换的特点

  • 化整为零, 存储转发

分组交换技术的两种实现方法..

  • 虚电路

    • 先发出虚呼叫, 虚呼叫选择一条合适的道路到达目的地, 并赋一个电路号, 如果沿途的节点都准备就绪, 就建立虚电路…后续分组都走这个路径, 传输完毕, 拆除虚电路
    • 仅当建立虚电路时需要源/目的节点地址, 数据分组只需分配一个虚电路号而无需携带完整的源/目的节点地址。
    • 每个节点都需要保存一张虚电路表
  • 数据报

    • 数据报无需建立连接, 每个分组携带完整的源/目的地址, 独立的选择路径, 通过不同的路径到达目的主机
    • 而且数据报不能保证先发出的分组未必先到达…因此数据包不能保证分组的顺序到达

路由选择

根据某种策略, 选择一条到达目的主机的最佳路径

路由选择由路由器完成;对单个路由器而言, 路由选择实质上是选择最佳输出链路( 端口),多个路由器协作选择一条最佳路由。

虚电路需要一次路由选择, 而数据报需要为每个分组选择路由

分类: 静态路由, 动态路由(会根据当前拓扑结构和流量的变化动态改变路由, 又称为自适应路由)

路由算法

静态路由算法

  • 泛洪/扩散法
    当节点收到一个分组后, 向除进来的链路转发
    这样子会产生大量的重复分组
  • 固定式路由选择
    每个节点保存一张固定的路由表, 某一分组达到时候, 根据分组的目的地址, 找路由表

动态路由算法

  • 热土豆算法
  • 逆向自学习算法
  • 距离向量路由算法(D-V算法)
  • 链路状态路由选择算法(L-S算法)

介绍完算法, 下面就是每一层的重点,,,就是协议~
这个时候可能产生一个想法, 网络层的协议有路由协议, IP协议(其实还有ARP, RARP, ICMP), 那么这两种协议之间有什么关系呢?
PPT说到的事, IP协议需要路由协议的支持, 如果这样的话, 是不是可以理解为…网络层其实可以分为两个子层…?还是说就是IP协议是核心, 该层其他协议都是支撑的

路由协议

某一种特定的路由协议中会使用特定的路由算法…所谓一种协议…不光包含使用的算法..还有一些其他的设定

  • 路由信息选择协议(RIP)
  • 开放最短路由优先协议(OSPF)
  • 边界网关协议(BGP)

IP协议

IP地址

  • A类
    0 | 网络号(1-7)-7位 | 主机号(8-31)-24位
    
  • B类
    10 | 网络号(2-15)-14位 | 主机号(16-31)-16位
    
  • C类
    110 | 网络号(3-23)-21位 | 主机号(24-31)-8位
    
  • D类
    1110 | 组播地址(4-31)
    
  • E类
    11110 | 保留
    

计算问题: A类网络中有2^7 - 2个网络, 每个网络最多2^24 - 2个主机

  • 问题:为什么要减去2

特殊的IP地址

  • 全0
  • 全1, 本地网络的广播地址
  • 主机号全1, 广播地址
  • 主机号全0, 表示网络号

私用的IP地址
A类: 10.0.0.0
B类: 172.16.0.0 - 172.31.0.0
C类: 192.168.0.0 - 192.168.255.0

很重要的一点:
路由器根据目的网络号而不是目的IP地址转发IP分组, 以减少路由表的信息量
也就是说, 路由器只管帮你把报文从一个网路送达一个网络, 而到达目标网络后, 并不管你如何达到目标主机

子网掩码的作用是, 和ip地址进行与运算, 这样子就可以得到网络号, 然后可判断是否是本网络, 如果不是, 就根据路由表转发到下一路由器

Internet控制协议

  • ICMP
  • ARP
  • RARP

子网划分

算是很重要的…
实质是使用若干位的主机号, 来标示子网号, 引入子网后, IP地址如下划分

[前置 | 网络号 | 主机号] => [前置 | 网络号 | 子网号 | 主机号]

传输层

传输层的任务是完成主机-主机之间的报文传输
传输层要彻底解决网络通信问题, 使得应用层不必关心通信问题

传输层是端到端的通信
网络层是源节点到目的节点的通信
数据链路层是相邻节点的通信

这个端到端, 点到点….怎么理解, 端从字面意思看的话, 其实和点差不多呀, 难不成端到端还意思是端口到端口…??

如果发送了4个有效载荷为512B的报文段, 接收方收到后, 向应用层提供2048B的字节流, 而不是4个报文段。 这是因为TCP是真正的端到端通信, 接收端无需再转发

传输层协议设计内容
寻址: 传输地址及发现
差错控制: 分组顺序, 差错检测, 重传确认机制
连接管理: 连接建立, 连接释放
流量控制: 直接之间流量控制

在这一层…传输地址由网络号 + 主机号 + 端口号来组成
在IP网络, 就是IP地址 + 端口号

传输连接实质上是通过传输地址,建立两个主机``进程之间的连接

报文段

这里具体的讲, 有TCP报文段, 和UDP报文段

TCP

TCP传输地址 <源IP, 源端口, 目的IP, 目的端口>
端口号16位, 范围是0~65535
TCP不支持广播和组播
TCP是全双工的

报文段封装的位置

帧头部 | IP头部 | TCP头部 | TCP有效载荷 | 帧校验

TCP报文段格式
太长不写了
大概是有源端口, 目的端口, 顺序号, 确认号, 校验和还有一些标志位和
超级常用的标志有ACK, SYN, FIN~

ACK: 标志位为1, 表示确认号有效, 否则无效
SYN:

  • SYN为1, ACK为0, 则表示建立TCP连接
  • SYN为1, ACK为1, 则表示确认TCP连接
    FIN: 用于释放连接, 若FIN置为1, 则表示没有数据要发送了, 但仍然可以接收数据

校验和: 校验的范围是…喵喵喵???

TCP连接管理

TCP连接建立的三次握手:

  1. client -> Server
    SYN = 1, ACK = 0, 顺序号 = x

  2. Server -> Client
    SYN = 1, ACK = 1, 确认号 = x + 1, 顺序号 = y

  3. client -> Server
    SYN = 0, ACK = 1, 顺序号 = x + 1, 确认号 = y + 1

TCP连接释放的四次握手:

  1. Client -> Server
    FIN = 1, 顺序号 = x
    Client宣布不再发送数据, 发出FIN

  2. Server -> Client
    FIN = 0, ACK = 1, 确认号 = x + 1, 顺序号 = y
    Server仍然传输数据
    …中间可发送很多数据

  3. Server -> Client
    FIN = 1, ACK = 1, 确认号 = x + 1, 顺序号 = w
    Server端也停止传输, 发出FIN

  4. Client -> Server
    ACk = 1, 确认号 = w + 1

为什么释放要四次??
因为是TCP是全双工的, 每个方向都要单独关闭

发送了FIN只是表示这端不能继续发送数据(应用层不能再调用send发送),但是还可以接收数据

TCP流量管理

TCP拥塞控制

TCP拥塞控制与流量控制的区别

  • 拥塞控制是为了防止网络过载导致路由器缓冲区不足而造成IP分组的丢失
  • 流量控制是为了防止发送端发送速度过快导致接收端缓冲区不足而造成TCP段的丢失

UDP

UDP是非面向连接, 不可靠的传输协议
UDP实质上在IP基础上, 增加了端口机制, 实现了主机进程间的数据传输

UDP的特点:(这些特点与TCP恰好相反)
TCP不需要建立连接, 是不可靠的传输协议
不支持流量控制和拥塞控制
支持广播和组播

有一个常见的问题是: 既然UDP也不可靠, 也是非连接的, 那么用IP就好了, 要啥UDP, 下面有请大佬解答>>>
除了增加了端口, 还有其他的吗

UCP报文段

源端口号 | 目的端口号
长度     | 校验和
用户数据

适合实时应用

应用层

DNS

利用DNS的一个攻击方式 DNS rebinding Attack

HTTP

SMTP

局域网

IEEE802标准

=======+======+===============
链路层 + LLC  +    802.2
       +------+===============
       + MAC  + 802.3/802.4
-------+======+ 802.5/802.11
物理层 +      + .......
=======+======+===============

LLC是独立于通信介质的
LLC子层为MAC子层提供三种不同类型的服务:

  • 无确认连接
  • 有确认无连接
  • 面向连接

对了..还有一点…LLC是被包装在MAC帧里面的…

IEEE 802.3

包括两部分

  • 介质访问控制(CSMA/CD)
  • 物理层规范

CSMA/CD

[PA | DA | SA | L | LLC帧 | PAD | FCS]

LLC

[DSAP | SSAP | 控制 | 数据]