• 札记:计算机网络篇:物理层


    这是我在Coursera上的学习笔记。课程名称为《Computer Networks》,出自University of Washington。

    因为计算机网络才诞生不久。眼下正在以快速在发展。所以有些旧的教材可能都已经跟不上时代了。这门课程在2013年左右录制。知识相对还是比較新的。覆盖了计算机网络中的各个协议层。从物理层到应用层都讲得很细致。学完这门课程之后对计算机网络会有比較深刻的了解。


    本章具体解说了物理层,解说了比特流怎样通过各种介质进行传播。


    • 基本概述
      • 物理层的功能
        • 专注比特信号是怎样传输的,包含模拟信号和数字信号
      • 话题
        • 媒体属性:有线、光纤、无线
        • 影响因素:带宽、衰减、噪音
        • modulation schemes:比特的表示、噪音
        • 基本极限:Nyquist极限、香农极限
      • 简单连接模型
        • 速度
        • 延迟
        • 是否广播、错误率
      • 消息延迟
        • 传输延迟:将消息写进媒介的时间
        • 传播延迟:消息从媒介的一端到还有一端所用的时间
      • 数据的长度单位
        • KB MB GB
      • 延迟举例
        • 拨号上网。延迟D=5ms,传播速率R=56kbps,消息长度M=1250bytes。

          最后计算出延迟L=5ms+1250*8/(56*10^3)=184ms。

          主要是信道延迟

        • 国家之间传输。延迟D=50ms,传输速率R=10Mbps,消息长度M=1250bytes。最后计算出延迟为51ms。主要是传输延迟。

        • 长的连接或的小的带宽都会造成延迟,普通情况下仅仅有一种原因占主要部分
      • 带宽延迟积
        • 消息是有长度的
        • 带宽延时积=带宽*延时
        • 带宽延时积举例
          • 家庭光纤。跨国。R=40Mbps。D=50ms。

            最后计算出带宽延时积=250KB,也就是说一条电线上保存着250KB的数据!


    • 媒介

      • 类型

        • 有线、光纤、无线

      • 有线

        • 5类UTP双绞线:常见的以太网电线。绞线是为了降低噪音

        • 同轴电缆:这样的哦线有更好的保护措施和更好的性能

      • 光纤

        • 光线是又长、又细、又纯净的玻璃

        • 有很巨大的带宽

        • 分为多膜和单膜。

          单膜的性能更好

      • 无线

        • 全部的无线信号都是广播的

        • 邻近的设备同一时候通信时会相互干扰

        • 无线举例:3G  ISM(802.11b/g/n)   Wifi(802.11a/g/n

    • 信号

      • 话题

        • 信号传输的时候发生了什么

      • 频率的表示方法

        • 用三角函数

      • 低带宽带来的影响

        • 让脉冲变得更加圆滑,添加了推断0或1的难度,导致传输速度变慢

      • 在电线中传输

        • 信号会延迟。

          传输速度大约为2/3光速

        • 信号会衰减

        • 高频信号会被吸收

        • 噪音会增多

        • 带宽能够理解为两种,一种是电子project中的带宽,一种是网络project中的带宽。两种这两种带宽的单位不同。电子project中的带宽用Hz作为单位,而网络project中的带宽用Mbps为单位

      • 在光纤中传输

        • 比特流通过三原色进行传输

        • 信号衰减程度很低

      • 在无线中传输

        • 将信号调幅后发送

        • 传播速度是光速

        • 信号衰减速度非常快,大于1/dist^2

        • 同样频率的无线传输之间会相互干扰

        • 从信号干扰衍生出了空间重用率的概念。仅仅要不相互干扰。无线的频率是能够重用的

        • 无线传输还受到其它因素的影响。无线在空间中的传播是很复杂的,和物理环境有关

        • 某些效果仅仅出如今特定的频率中。比方微波的衍射性能强,能够绕过障碍物进行传播。

          比方802.11、3G

      • 无线的多路传播

        • 微波具有衍射特性和反射特性

        • 有些波是直接到达设备的,有些波经过反射到达了设备。两个波会叠加,有时候能增强信号。有时候削弱信号

        • 这样的现象叫做OFDM

    • 调制

      • 话题

        • 信号的表示方法

      • 简单的信号调制

        • 高压+V表示1。负压-V表示0

      • 其它的表示方法

        • 使用很多其它的电压表示很多其它的数据。比方一个电压表示2bit数据

      • 时钟同步

        • 假设一次发送许多的0,那么接收方无法精确知道有多少个0

        • 所以有了Manchester coder孟彻斯特编码和scrambling编码

        • 孟彻斯特就是将0替换成01,1替换成10。

      • 4B/5B

        • 固定的编码

          • 0000 -> 11110

          • 0001 -> 01001

          • 。。。


          • 1110 -> 11100

          • 1111 -> 11101

        • 最多3个连续的0

      • NRZI编码:遇到1就改变电压,遇到0就保持原来的电压

      • Passband调制

        • baseband调制在电线中非常合适。可是在光纤/无线中无法非常好地工作

        • 将每一个比特进行调制。能够调频,调幅,调相

    • 基本极限

      • 话题

        • Nyquist限制

        • Shannon容量

        • 为了达到极限而产生的发明

      • 信道的关键属性

        • 带宽B,强度S,信噪比N

      • Nyquist极限

        • 信号发送的最大速度是2B,也就是两倍带宽(电子project中的带宽)

        • 如果有V种电平,信号发送速率R = 2B log_2(V) bits/sec

      • 香农极限

        • 信息论创始人

        • 信道能够提供多少种电平和信噪比有关

        • 信噪比用db来表示,信造比SNR=10log_10(S/N)

        • 香农容量 C = B log_2(1+S/N) bits/sec,表示一条信道的最大传输速率

      • 有线/无线对照

        • 有线/光纤:能够有固定的传输数据速率

        • 无线:没有固定的传输数据速率

      • DSL

        • 使用电话线的高频部分进行传输

        • DSL使用passband调制

        • 上传和下载是用的是两段不同的带宽

        • 高信噪比时可能1个信号表示15个比特。低信噪比的时候可能1个信号表示1个比特


    数据链路层


    • 链路层概述

      • 链路层结构

        • 关注怎样传输消息。一则消息就是一帧

      • 链路层数据包结构为:Header-Packet-Tailer

      • 链路层的典型实现方法

        • 网卡上有链路层的模块和物理层的模块,操作系统中有链路层的驱动。链路层是同一时候分布在软件和硬件中的一个协议层。

      • 话题

        • 帧。区分帧的头和尾的方法

        • 错误检測,错误矫正,错误处理

      • 话题

        • 怎样通过物理层表示一系列帧呢?

      • 区分帧的方法

        • 字节数

        • 字节

        • 实际应用中物理层有时候也会帮助链路层来区分帧

      • 第一次尝试:字节数方法

        • 每一帧的头部是字节数

        • 这样的方法非常easy,看起来也非常实用。可是出错后非常难再次同步

      • 第二次尝试:用字节标志

        • 用特殊的标志字节来标志帧的头和尾

        • 缺点是数据的内容也要进行编码。比如数据内容:A FLAG B,编码后变成 A ESC FLAG B

        • 长处是出错后easy同步

      • 第三次尝试:用数据位来做标志

        • 6个1为头尾标志

        • 数据的内容进行编码。每5个1之后插入一个0。

          解码的时候,每5个1之后删除一个0

        • 举例:0110 1111 1111 1111 1111 0010,编码后0110 1111 1011 1111 0111 1101 0010

      • 链路举例:SONET上的PPP

        • PPP:点对点链路协议

        • SONET:光纤物理层协议

        • 分帧时使用字节标志,0x7E表示FLAG,0x7D表示ESC

        • 0x7E编码后变成0x7D5E。也就是添加了7D,并将第5位进行取反

        • 0x7D编码后编程0x7D5D

        • 这样编码之后数据中就彻底没有FLAG或ESC符号了

    • 错误概述

      • 话题

        • 怎样处理错误

        • 怎样检測错误

        • 怎样矫正错误

        • 怎样又一次发送数据

        • 链路层的可靠性

      • 问题

        • 噪音有时候会造成比特上的误差

      • 方法

        • 添加冗余

        • 错误检測:添加校验位

        • 错误矫正:添加很多其它的校验位

        • 关键问题是,怎样通过最少的校验位来检測到最多的错误

      • 最简单的方法

        • 将数据发送两次。能检測到错误,可是不能矫正

      • 使用校验位

        • 发送方数据的末尾添加检測位,D为数据。检測位R=fn(D)

        • 接收方。接收到数据D和检測位R,计算R==fn(D)。依据计算结果推断是否出错

        • 将数据进行随机修改。普通情况下都能推断出数据中存在错误

      • Hamming距离

        • 距离=两个数据有多少个位是不一样的

        • 最少发生d+1次反转后检測位依旧正确的校验方法,最多能稳定检測到d个错误

        • 最少发生2d+1次反转后检測位依旧正确的校验方法。最多能稳定矫正到d个错误

        • 举例。一段数据添加了检測位。传输之后有2个位发生了反转。并且检測位依旧正确,那么它的距离d就是2

    • 错误检測

      • 话题

        • 数据在接收的时候可能会有误差。我们怎样检測到它呢?

        • 方法:奇偶校验、校验和、CRC

        • 检測错误是为了兴许的矫正错误,比方重发

      • 简单的错误检測方法:奇偶校验

        • 1001100 => 1

        • 性能怎样?

        • hamming距离d=2,最多能稳定检測到1个错误,无法矫正错误

        • 大的误差非常难检測

      • 校验和

        • TCP中1500bytes数据有16bit校验和

        • 比奇偶校验更强

      • 互联网校验和

        • Checksum:the checksum field is 16bit 1's complement of the 1'complement sum of all 16bit words

        • 伪代码:x=sum([e for bit16 in data]); return x + x%0x10000;

        • 发送方步骤

          • 将数据排列成16位一组

          • 将0放在校验位。并把每组数据增加到校验位

          • 将溢出的进位加到校验位

          • 将结果取反

        • 接收方把接接收到的(数据+checksum)计算checksum。假设得到0,那么说明没有错误

        • 性能怎样

          • 距离是2,能稳定检測1个错误,不能矫正错误

          • 连续出现16个位错误时就无法工作了

      • CRC

        • 更强的保护

        • 举例。数据为302。校验位数为1位,生成器为3,那么CRC=3020 % 3 = 2

        • 发送方步骤

          • 在数据后方添加k个0

          • 将数据除以C,取余数。除的时候注意:要将减法换成XOR运算,事实上CRC中的除法并非真正的除法

          • 调整k,使其能够被整除

        • 标准的CRC32生成器是10000010 01100000 10001110 110110111

        • 属性

          • HD=4 Hamming距离,能稳定检測3个连续的错误

          • 能检測奇数个错误

          • 连续出现k个错误时就无法正常工作了

        • 实际应用中的错误检測方法

          • CRC被广泛使用:以太网。802.11 ADSL 线缆

          • 互联网中也有使用:IP TCP  UDP

          • 奇偶校验非常少使用

    • 错误矫正

      • 话题

        • 有时候接收到的数据中有错误,怎样矫正呢

        • 我们可以矫正错误,为什么还要使用检測错误呢

      • 为什么错误矫正非常难

        • 缺少好的校验方法

        • 校验代码也可能出错

      • 错误矫正代码

        • 构建一种Hamming距离为3的错误编码,须要改变3个字节才干让编码成为第二种正确的编码

        • 如果错误仅仅有1位。那么我们能够将错误矫正到近期的编码上

      • Hamming距离

        • 举例:4位数据0101,3个检验位。

          检验1 检验2 数据1 检验3 数据2 数据3 数据4

        • 检验1覆盖了检验1 数据1 数据2 数据4

        • 检验2覆盖了检验2 数据1 数据3 数据4

        • 检验3覆盖了检验3 数据2 数据3 数据4

        • 每一个检验位用奇偶检验法生成。结果是010。和原来的数据合成,得到0100101

        • 解码的时候计算检验位,得到检验1,2,3。依照(检验3,检验2,检验1)进行排列,得到二进制数。

          这个2进制数就表示出错的位置。0表示没有错误

        • ​详细计算方法见下文中的表格

      • 其它矫正错误的方法

        • 实际应用中的矫正方法比Hamming距离复杂得多

        • LDPC

      • 错误检測和错误矫正的对照

        • 如果每10000个位就会发生一个错误

        • 检測错误大约须要10位额外的比特位

        • 矫正错误大约须要1000个额外的比特位。大约占用了1/10的传输时间

        • 有时候检測错误的开销更小。有时候矫正错误的开销更小,主要看数据的传输情况

      • 应用

        • 在物理层中大量使用的是LDPC

        • 错误矫正在CD DVD中也有使用


    Hamming代码计算方法

    p1 p2 p4等表示校验位,d1 d2 d3等表示数据位。

    Bit position 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...
    Encoded data bits p1 p2 d1 p4 d2 d3 d4 p8 d5 d6 d7 d8 d9 d10 d11 p16 d12 d13 d14 d15
    Parity
    bit
    coverage
    p1 X   X   X   X   X   X   X   X   X   X  
    p2   X X     X X     X X     X X     X X  
    p4       X X X X         X X X X         X
    p8               X X X X X X X X          
    p16                               X X X X X





































  • 相关阅读:
    django-缓存的应用
    Faster-RCNN用于场景文字检测训练测试过程记录(转)
    faster-rcnn在ubuntu16.04环境下的超级详细的配置(转)
    Effective C++读书笔记(转)
    c++中的static,const,const static以及它们的初始化
    [leetcode]Validate Binary Search Tree 验证二叉搜索树
    二叉树的遍历方式(迭代)
    c++中string与int之间的相互转换
    c++中 cin,cin.get(),cin.getline(),getline()用法说明
    N皇后问题代码
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5039256.html
Copyright © 2020-2023  润新知