计算机网络 ---- 三. 数据链路层

目录:

    • 三. 数据链路层
        • 三.1基本概念
          • 三个基本问题
        • 三.3 以太网

三. 数据链路层

三.1基本概念

计算机网络 ---- 三. 数据链路层_第1张图片

  • 点到点信道: 电脑之间连接
  • 广播信道: 一对多,由共享信道协议(如集线器)协调主机间的数据发送
三个基本问题

有头(SOH)有尾(EOT)

  1. 如何封装成帧(framing)
    计算机网络 ---- 三. 数据链路层_第2张图片

  2. 透明传输
    如果帧数据中包含和SOH/EOT一样的数据,会在数据前添加Esc转义(类似java中的"\")

    传入和输出时会自动添加/删除转义字符,对用户没有影响(在数据链路层添加数据,解析的时候删除数据,用户看不到,所谓透明传输)

  3. 差错控制
    误码率(Bit Error Rate): 一段时间内,传输错误的bit所占bit总数的比率
    数据链路层只负责检测是否有错误,如果错误就会把数据丢掉,不会告诉发送方重新传数据

    • 奇偶校验
      所谓奇偶校验就是在发送的每一个字节后都加上一位,使得每个字节中1的个数为奇数个或偶数个。
      比如我们要发送的字节是0x1a,二进制表示为0001 1010。

      采用奇校验,则在数据后补上个0,数据变为0001 1010 0,数据中1的个数为奇数个(3个)。

      采用偶校验,则在数据后补上个1,数据变为0001 1010 1,数据中1的个数为偶数个(4个)。

      奇偶校验的缺点也很明显,首先,它对错误的检测概率大约只有50%。也就是只有一半的错误它能够检测出来。另外,每传输一个字节都要附加一位校验位,对传输效率的影响很大。因此,在高速数据通讯中很少采用奇偶校验。奇偶校验优点也很明显,它很简单,因此可以用硬件来实现,这样可以减少软件的负担。因此,奇偶校验也被广泛的应用着。

      奇偶校验其实就是CRC 校验的一种(CRC-1)。

    • 循环冗余检验(CRC:Cyclic Redundancy Check,除以除数使用余数校验检查)
      计算机网络 ---- 三. 数据链路层_第3张图片- 数据信息M(x)为一个n位的二进制数据,将M(x)左移k位后,用一个约定的“生成多项式”G(x)相除,G(x)是一个k+1位的二进制数,相除后得到的k位余数就是校验位。校验位拼接到M(x)后,形成一个n+k位的代码,称该代码为循环冗余校验( CRC ) 码,也称(n+k,n)码。
      - 一个CRC码一定能被生成多项式整除,当数据和校验位一起送到接受端后,只要将接受到的数据和校验位用同样的生成多项式相除,如果正好除尽,表明没有发生错误;若除不尽,则表明某些数据位发生了错误。通常要求重传一次。
      计算机网络 ---- 三. 数据链路层_第4张图片

    CRC 算法的基本思想是将传输的数据当做一个位数很长的数。将这个数除以另一个数。得到的余数作为校验数据附加到原数据后面。CRC校验核心就是实现无借位的除法运算。即异或运算。可以在硬件层实现异或运算
    采用模2运算就是结果除以2后取余数。比如3 mod 2 = 1。就是我们通常所说的异或运算。相同为0,不同为1.

    在CRC算法中,1101 这个被除数有一个专有名称叫做“生成多项式”。生成项的最低位也必须是1,这是规定的。1101就是CRC3=X3+X2+1。X=2。

    生成多项式经常会说到多项式的位宽(Width,简记为W),这个位宽不是多项式对应的二进制数的位数,而是位数减1。文献中多用16进制简写法来表示多项式,因为生成多项式的最高位肯定为1,最高位的位置由位宽可知,故在简记式中,将最高的1统一去掉了,如CRC32的生成多项式简记为04C11DB7实际上表示的是104C11DB7。

    比如CRC8中用到的位宽为8的生成多项式,其实对应得二进制数有九位:100110001。如CRC1位宽为1,生成的数有11,X^1+1。11对应的就是奇偶校验。

    CRC是一种无比特差错,而不是无传输差错的检测机制,路由器如果传输过程中发生数据错误,直接丢掉包,由上层程序辅助重传
    计算机网络 ---- 三. 数据链路层_第5张图片#### 三.2 两种数据链路层(传输方式)

  • PPP协议(点到点 Point-to-Point Protocol)

    电话拨号上网,有登陆账户密码,进行身份验证,网线直接接到ISP(因特网服务提供商,如电信,移动),由ISP动态分配ip地址,会记录使用ip的账号密码联网时间
    计算机网络 ---- 三. 数据链路层_第6张图片ppp协议的帧格式
    计算机网络 ---- 三. 数据链路层_第7张图片

    如果传输的是字节
    7E代表开始,FF和03是固定的
    协议两个字节,代表信息部分传递的是什么数据(如验证数据,登录数据或者数据包)
    通过添加0x7D区分结尾转义,实现透明传输

    如果传输的是比特流
    ppp使用SONET/SDH链路进行同步传输(连续的比特流传输,不使用字节传输)时,ppp协议采用零比特填充方法(传输时出现连续的5个1,就在1后面添加一个零,接收端接收到连续的5个1,再去掉后面的0解析数据)来实现透明传输

  	0111 / 1110  >>> 7E
  	0111 / 11010	>>> 零比特填充方法
  	防止解析的时候解析成7E当做帧传输结束

PPP协议不使用序号和确认机制(成功返回成功,失败重传,不纠错而采用错了就扔掉数据)出于以下考虑:
计算机网络 ---- 三. 数据链路层_第8张图片

  • HDLC协议

三.3 以太网

计算机网络 ---- 三. 数据链路层_第9张图片

  • 局域网

    • 连接方式: 现在多用星形网
      计算机网络 ---- 三. 数据链路层_第10张图片

    • 局域网特点

      1. 一个单位(公司)所拥有,地理范围和连接数量均有限
      2. 具有广播功能,局域网内计算机可以共享网上的所以软硬件资源
      3. 提高系统可靠性,生存性和可用性
    • 共享通讯媒体

      1. 静态划分信道 (不适合现在通讯)
        • 频分复用
        • 时分复用
        • 码分复用
        • 波分复用
      2. 动态媒体接入控制(多点接入)
        • 随机接入(主要被以太网采用)
        • 受控接入(目前不被采用)
  • 以太网(不超过100米)

    • 以太网通讯
      计算机网络 ---- 三. 数据链路层_第11张图片
      整个局域网广播通讯,通过mac地址指定某台计算机接受数据,其他计算机可以通过抓包接受到数据,通讯不安全

      • 多台计算机通讯
      1. 载波监听: 有其他计算机间进行通讯了,自己就不通讯,通讯冲突就都暂停,等一个随机时间在各自通讯

        因为会有冲突,两点通讯时发现冲突的最大时间是两点通讯时间的2倍

        如果发长度小于64字节会补零计算机网络 ---- 三. 数据链路层_第12张图片

      2. 多点接入/碰撞检测 : 电压升高就判断为冲突

      3. CSMA/CD协议(集线器就是使用此协议): 半双工通讯计算机网络 ---- 三. 数据链路层_第13张图片 4. MAC层

        硬件地址(物流地址): 网卡出厂时录入芯片,全球唯一,48位二进制组成,前24位代表厂家,后24位厂家自己制定,用12位16进制表示

        MAC地址帧格式: 以太网最小传64字节,64-(6+6+2+4)=46,最小数据报为46字节

        以太网帧传输采用曼彻斯特编码,只需要有帧开始定界符计算机网络 ---- 三. 数据链路层_第14张图片 可以使用 Ethereal工具抓包,使用 ping XXX.XXX.XXX.XXX -t 一直ping网络,用抓包工具查看问题

        可以看到是哪台计算机一直占用网络(比如有计算机中毒一直在Broadcast广播以太网,占用网络),影响正常通行

  • 以太网扩展

    • 网桥

      网桥将多个以太网连接,在同一个以太网通讯时冲突域隔离

计算机网络 ---- 三. 数据链路层_第15张图片

  • 交换机(Switch)

    交换机记录小每个接口接入的mac地址,通讯时直接接入指定的计算机,没有碰撞域,如果同时通讯可以排队,不再是全局域网都能收到数据,安全,快速

  • 虚拟局域网VLAN

    一个交换机分成多个虚拟局域网(VLAN内是同一个广播域(逻辑网段)),同一个VLAN可以跨交换机通讯

    交换机间用一根线连接,在帧中添加关于虚拟局域网的数据,这样多个交换机间的同一网段的局域网可以进行广播通讯,交换机端口的三种链路类型 以太网端口有三种链路类型:access、trunk、hybird.

    Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口

    Trunk类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口

    Hybrid类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,可以用于交换机之间连接,也可以用于连接用户的计算机。

    Hybrid端口和Trunk端口在接收数据时,处理方法是一样的,唯一不同之处在于发送数据时:Hybrid端口可以允许多个VLAN的报文发送时不打标签,而Trunk端口只允许缺省VLAN的报文发送时不打标签。 缺省VLAN: Access端口只属于1个VLAN,所以它的缺省VLAN就是它所在的VLAN,不用设置;Hybrid端口和Trunk端口属于多个VLAN,所以需要设置缺省VLAN ID.缺省情况下,Hybrid端口和Trunk端口的缺省VLAN为VLAN1; 如果设置了端口的缺省VLAN ID,当端口接收到不带VLAN Tag的报文后,则将报文转发到属于缺省VLAN的端口;当端口发送带有VLAN Tag的报文时,如果该报文的VLAN ID与端口缺省的VLAN ID相同,则系统将去掉报文的VLAN Tag,然后再发送该报文。

    交换机接口出入数据处理过程:

    • Acess端口收报文:收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则直接丢弃(缺省)

      Acess端口发报文: 将报文的VLAN信息剥离,直接发送出去

    • trunk端口收报文: 收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有判断该trunk端口是否允许该VLAN的数据进入:如果可以则转发,否则丢弃
      trunk端口发报文: 比较端口的PVID和将要发送报文的VLAN信息,如果两者相等则剥离VLAN信息,再发送,如果不相等则直接发送

    • hybrid端口收报文:
      收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则判断该hybrid端口是否允许该VLAN的数据进入:如果可以则转发,否则丢弃(此时端口上的untag配置是不用考虑的,untag配置只对发送报文时起作用)
      hybrid端口发报文: 1、判断该VLAN在本端口的属性(disp interface 即可看到该端口对哪些VLAN是untag,
      哪些VLAN是tag) 2、如果是untag则剥离VLAN信息,再发送,如果是tag则直接发送

  • 高速以太网
    计算机网络 ---- 三. 数据链路层_第16张图片交换机端口有存储转发功能,不会有冲突问题,计算机可以设置交互速度和全双工还是半双工,如果设置错误就没法通讯
    计算机网络 ---- 三. 数据链路层_第17张图片
    数据链路层可以控制连接交换机的MAC地址个数,超过几个地址可以shutdown网络

你可能感兴趣的:(计算机网络)