zoukankan      html  css  js  c++  java
  • 以太网复习

    以太帧格式


    我们经常说的以太网帧长度是从图中 Destination MAC Address开始,FCS结束。标准以太网帧长度范围为([64,1518]),除去目的MAC地址6字节,源MAC地址6字节,以太网协议2字节,校验码4字节,有效载荷payload的长度范围为$[46,1500]。而这个有效载荷的最大值就被叫做MTU(Maximum Transmission Unit)。

    • Preamble+SFD:只是用于帧同步,所以不会当成帧来处理。
    • EtherType:以太网协议,网卡用来分辨封装的是什么上层协议,然后再通知不同的协议模块来取走数据。
    • Payload:这个允许负荷的最大长度对应的就是负荷的最大传输单元。
    • FCS:Frame Check Sequence,帧校验码,而CRC是循环冗余校验算法,FCS可以由CRC算法生成,也可以由其他算法生成。

    网卡怎么知道以太帧的长度

    在ethernet II中,没有记录载荷的长度,那网卡是怎么知道具体的帧长的呢?
    其实这是由物理层完成的工作,以太网数据帧在物理链路上发送时,是按4B5B编码的,在发送完一个以太帧之后会添加上4B5B编码的ESD字段表示已发送完毕,或者以一个特殊宽脉冲SOI来表示链路空闲。

    以太帧长度为什么是[64, 1518]

    最早的以太网工作方式:载波多路复用/冲突检测CSMA/CD,因为网络是共享的,即任何一个节点发送数据之前,先要侦听线路上是否有数据在传输,如果有,需要等待,如果线路可用,才可以发送。为了检测到极端情况的冲突碰撞,以太帧最短为64字节。
    同时为了避免大的以太帧占据太多时间,并且大包出现数据损坏的概率也会大一些,所以综合考虑,以太帧最长为1518字节。
    实际网络中,以太帧的长度可能会超过1518这一限制,这是由于后续的一些协议,比如在802.1Q中,又定义了以太帧中可选的QTag,位于SMAC和EtherType之间,占4个字节;比如jumbo frame中最高支持9K的大小。

    以太网传输可靠性

    在tcp/ip协议栈中,除了传输层的tcp协议,传输层的udp、以及传输层之下的网络层、数据链路层都是“尽最大努力交付”。所以以太网传输并不可靠。

  • 相关阅读:
    jupyter同时使用python2、3
    [python之ipython] jupyter notebook在云端服务器上开启,本地访问
    Transformer的PyTorch实现--转载
    二叉树中和为某一值的路径
    hadoop初识笔记
    大数据初识笔记
    mysql快速入门笔记
    118.Java反射-工厂模式
    117.Java观察者设计模式
    116.Java对象的拷贝
  • 原文地址:https://www.cnblogs.com/HachikoT/p/12680498.html
Copyright © 2011-2022 走看看