计算机网络-概述篇(下)

  • 目录

    数据链路层的差错监测

    奇偶校验码

    循环冗余校验码CRC

    最大传输单元MTU

    MTU

    是什么

    为何有

    路径MTU

    以太网协议详解

    MAC地址(物理地址,硬件地址)

    以太网协议


  • 数据链路层的差错监测

  • 奇偶校验码

  • 是一种非常简单的检测比特流里面是否有传输错误的方法
  • 是通过在比特流的尾部添加一位比特位来检测这个比特流是否有出错的
  • 例子:
  • 一个比特流为
  • 00110010
  • 由于0+0+1+1+0+0+1+0=3为奇
  • 故在后面添加的数为1
  • 然后再对接收端接收比特流进行同样计算看看得出要添加的数是否也一样
  • 不一样就是传输错误
  • 一个比特流为
  • 00111010
  • 由于0+0+1+1+1+0+1+0=4为偶
  • 故在后面添加的数为0
  • 然后再对接收端接收比特流进行同样计算看看得出要添加的数是否也一样
  • 不一样就是传输错误
  • 若出错偶数位的话,奇偶校验码检测不到错误
  • 循环冗余校验码CRC

  • 是一种根据传输或保存的数据而产生固定位数校验码的方法
  • 能检测数据传输或者保存后可能出现的错误
  • 生成的数字计算出来并且附加到数据后面
  • 接收端接收到这个数据后根据附加到后面的数据来判断接收到的数据是否有出错
  • 具体细节:
  • 选定一个用于校验的多项式G(x),并在数据尾部添加r个0
  • 将添加了r个0后的数据,使用模2除法除以多项式的位串
  • 将得到的余数填充在原数据r个0的位置得到可校验的位串
  • 例子1:
  • 首先使用CRC计算101001的可校验位串
  • 选定一个用于校验的多项式G(x),并在数据尾部添加r个0
  • 它们双方事先约定了一个私密的二项式G(x)
  • G(x)的最高阶位=r
  • 此处为G(x)=x^3+x^2+1
  • =1*x^3+1*x^2+0*x^1+1*x^0
  • 最高阶为3,所以在尾部添加3个0
  • 为101001000
  • 将添加r个0后的数据,使用模2除法除以多项式的位串1101
  • 得出余数为001
  • 得到的余数填充在原数据r个0的位置得到可校验的位串
  • 为101001001
  • 这些步骤都是在发送端完成的
  • 发送端计算出可校验位串后,就可以把这个比特流发送给接收端
  • 接收端在接收比特流后就能进行校验
  • 它校验的过程也是把这个数据除以G(x)的位串,根据余数判断是否出错
  • 如果余数为0则正确,不为0则接收的数据是有问题的
  • 例子2:
  • 首先使用CRC计算10110011的可校验位串
  • 选定一个用于校验的多项式G(x),并在数据尾部添加r个0
  • 它们双方事先约定了一个私密的二项式G(x)
  • G(x)的最高阶位=r
  • 此处为G(x)=x^4+x^3+1
  • 最高阶为4,所以在尾部添加4个0
  • 为101100110000
  • 将添加r个0后的数据,使用模2除法除以多项式的位串11001
  • 得出余数为0100(最后为保证位数前面的0可不去)
  • 得到的余数填充在原数据r个0的位置得到可校验的位串
  • 为101100110100
  • 接收端的步骤与例1一样
  • 再明:
  • CRC的错误检测能力与位串的阶数r有关
  • 越多的0检测能力就越强
  • 如若r为1的话循环冗余校验码就会退化成奇偶校验码一般
  • 数据链路层只进行数据的检测,不进行纠正
  • 如果数据链路层真的发生了数据的错误,对于数据链路层其实是会把错误的数据直接丢弃掉的,非常简单粗暴
  • 常用的G(x)
  • 最大传输单元MTU

  • MTU

  • 是什么

  • 数据链路层的数据帧也不是无限大的
  • MTU就是描述最大能传输的数据帧大小
  • 是包或帧的最大长度
  • 例:
  • A和B需要进行数据的通信,它们通信所能传输的数据帧的长度受MTU限制
  • 数据帧的长度不能超过MTU的大小
  • 以太网MTU一般为1500字节
  • 为何有

  • 一方面受底层物理硬件影响
  • 一方面数据帧过大或过小都会影响传输的效率
  • 若数据帧过大总时延就会增加,就会导致发送端与接收端的信息处理时间过长
  • 若数据帧过小就会影响性能
  • 路径MTU

  • 例:
  • A到B要经过3个小型网络
  • A->小型网络1 MTU为1500
  • 小型网络1->小型网络2 MTU为1492
  • 小型网络2->小型网络3 MTU为4464
  • 小型网络3->B MTU为1500
  • 路径MTU由链路中MTU的最小值决定
  • 所以这里的路径MTU为1492
  • 以太网协议详解

  • 是数据链路层常用的一种协议
  • 例:
  • 假设有3个计算机(A,B,C)和1个路由器
  • 这3个计算机通过这个路由器进行连接
  • A通过网络拓扑向C发送一个数据
  • 路由器怎么知道A要发给谁?
  • MAC地址(物理地址,硬件地址)

  • 每一个设备都拥有唯一的MAC地址
  • MAC地址共48位,使用十六进制表示
  • 打开cmd使用ipconfig /all查看本机内置于本地网卡中的物理地址(MAC)
  • 如:30-B4-9E-ED-85-CA
  • 以太网协议

  • 以太网是一种使用广泛的局域网技术
  • 是一种应用于数据链路层的协议
  • 使用以太网可以完成相邻设备的数据帧传输
  • 数据格式:
  • 分为目的地址(占6字节)源地址(占6字节)类型(占2字节)帧数据(占46-1500字节)CRC(占4字节)
  • 单位为字节
  • MAC地址根据发送以及接收分为源地址和目的地址
  • 类型就是表示帧数据属于什么协议的数据
  • 比如说网络层的IP数据报,类型就是0800
  • 属于ARP协议的请求/应答的话,类型就是0806
  • 属于RARP协议的请求/应答的话,类型就是8035
  • MAC地址表
  • MAC地址表中的每一个表项都包含着MAC地址、VLAN-ID以及交换机接口等信息
  • 看回前面所提的问题
  • 过程:
  • A通过网卡发出数据帧
  • 数据帧到达路由器,路由器取出前6字节(前面介绍过即为目的机器的MAC地址)
  • 路由器匹配MAC地址表,找到对应的网络接口(知道A要传输给C,前6字节就是C的MAC地址)
  • 路由器往该网络接口发送数据帧
  • 就完成了从A到C的数据发送和接收的过程
  • 当路由器不知道MAC地址映射的硬件接口时:
  • 如路由器检查MAC地址表,发现没有C的信息
  • 路由器将广播A的数据包到除A以外的端口
  • 路由器将收到来自B,C的回应,并将地址记录
  • 就知道是哪个接口了,就能对其发送数据了
  • MAC地址表只能指定某一数据帧的下一地址是什么,也就是说它只能进行相邻物理节点传输

猜你喜欢

转载自blog.csdn.net/weixin_59624686/article/details/125132250