- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
查看数据链路级标准,例如 PPP general frame format或 Ethernet ,不清楚如果校验和无效会发生什么。 协议(protocol)如何知道下一帧从哪里开始?
它是否只扫描下一次出现的“标志”(在 PPP 的情况下)?如果是这样,如果数据包有效负载恰好包含“标志”本身会发生什么?我的观点是,无论是使用数据包帧还是“长度”字段,都不清楚如何从“长度”字段可能已损坏或“帧”字节可能恰好是其中的一部分的无效数据包中恢复。数据包有效载荷。
更新 :通过查找“基于 GFP CRC 的框架”,我找到了我正在寻找的东西(严格来说,这不是我所问的)。根据Communication networks
The GFP receiver synchronizes to the GFP frame boundary through a three-state process. The receiver is initially in the hunt state where it examines four bytes at a time to see if the CRC computed over the first two bytes equals the contents of the next two bytes. If no match is found the GFP moves forward by one byte as GFP assumes octet synchronous transmission given by the physical layer. When the receiver finds a match it moves to the pre-sync state. While in this intermediate state the receiver uses the tentative PLI (payload length indicator) field to determine the location of the next frame boundary. If a target number N of successful frame detection has been achieved, then the receiver moves into the sync state. The sync state is the normal state where the receiver examines each PLI, validates it using cHEC (core header error checking), extracts the payload, and proceeds to the next frame.
最佳答案
PPP 和以太网都有成帧机制——也就是说,将比特流分解成帧,这样,如果接收器忘记了是什么,它可以在下一帧的开始处接收。它们位于协议(protocol)栈的底部;该协议(protocol)的所有其他细节都建立在帧的概念之上。尤其是preamble、LCP、FCS是更高层次的,不用于控制成帧。
通过串行链路(如拨号)的 PPP 使用 HDLC-like framing .字节值 0x7e,称为标志序列,表示帧的开始。帧一直持续到下一个标志字节。帧内容中出现的任何标志字节都会被转义。转义是通过写入 0x7d 来完成的,称为控制转义字节,然后是要转义的字节与 0x20 异或。标志序列转义为 0x5e;控制转义本身也必须转义到 0x5d。如果它们的存在会扰乱调制解调器,也可以转义其他值。结果,如果接收器失去同步,它只能读取并丢弃字节,直到它看到 0x7e,此时它知道它再次处于帧的开头。然后对帧的内容进行结构化,包含一些并不重要但从早期 IBM 协议(protocol)中保留的奇怪的小字段,以及 PPP 数据包(称为协议(protocol)数据单元,PDU),以及帧检查序列(FCS)。
以太网使用逻辑上相似的方法,具有可识别为帧开始和结束标记而不是数据的符号,但不是保留字节加上转义机制,而是使用能够表达不同的特殊控制符号的编码方案来自数据字节 - 有点像使用标点符号来分解一系列字母。所用系统的细节随速度而变化。
标准 (10 Mb/s) 以太网使用称为 Manchester encoding 的东西进行编码,其中要传输的每个位都表示为线路上的两个连续电平,这样每个位的电平之间总是存在转换,这有助于接收器保持同步。帧边界是通过违反编码规则来指示的,导致有一点没有过渡(我几年前在一本书中读过这个,但在网上找不到引用——我可能错了)。实际上,该系统将二进制代码扩展为三个符号 - 0、1 和违规。
快速 (100 Mb/s) 以太网使用不同的编码方案,基于 5b/4b code ,其中四个数据位(nybbles)的组表示为线路上的五个位组,并直接传输,无需曼彻斯特方案。扩展到五位允许选择使用的十六种必要模式来满足频繁电平转换的要求,再次帮助接收器保持同步。但是,仍然有选择一些额外符号的空间,它们可以传输但不对应数据值,实际上,将半字节集扩展到二十四个符号 - 半字节 0 到 F,以及称为 Q、I 的符号、J、K、T、R、S 和 H。以太网使用 JK 对标记帧开始,使用 TR 标记帧结束。
千兆以太网类似于快速以太网,但编码方案不同——光纤版本使用 8b/10b code而不是 5b/4b 代码,双绞线版本使用一些我不太了解的非常复杂的五进制代码排列。两种方法产生相同的结果,即能够传输数据字节或一小组附加特殊符号中的一个,并且这些特殊符号用于成帧。
在这个基本的成帧结构之上,还有一个固定的前导码,然后是一个帧定界符,以及一些变化无意义的控制字段(你好,LLC/SNAP!)。这些字段的有效性可用于验证框架,但不能用于自行定义框架。
关于error-handling - PPP 或以太网如何从错误中恢复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/990661/
我正在寻找的服务器是: 轻量级, 非 buggy , 支持.NET, 在客户端上运行以进行测试, 在Windows上运行 Cassinni太过马车,IIS太昂贵,Apache很难安装,XSP仅是lin
所以我有大约10个短的css文件,可以与mvc应用程序一起使用。 有像 error.css login.css 等等... 仅有一些非常短的CSS文件,这些文件使更新和编辑变得容易(至少对我而言)。我
我正在编写程序来自动化 win32 表单。我正在使用 Microsoft UI 自动化库。我不知道如何获取和调用该表单上的预定义快捷键。现在我只需获取 MenuItem 的 AutomationEle
我有一个在后台线程上运行的及时操作。运行时,我当前将光标置于等待状态: Mouse.OverrideCursor = Cursors.Wait 我刚刚实现了一项功能,允许用户在厌倦等待时单击“取消”按
如何找到所有可能直接或间接调用给定方法的单元测试?当我更改方法时,我希望知道要运行的最佳测试;必须有一个工具! 因为我们有很多接口(interface),所以我对所有调用接口(interface)方法
我想知道,一个类会被装箱吗?我一直假设每个类都有一个虚拟表,可以用来标识类,所以它需要装箱吗? 最佳答案 只有值类型(结构)被装箱。类实例不会被装箱。 关于.net - 类是盒装的吗? 。网,我们在S
所以接下来有一个按钮调用(页面)。它的 href 链接是 site/blah/#。所以我知道它真正运行的 javascript 代码。在我解析完第一页后,我想解析下一页。我如何模拟鼠标点击,以便我可以
我想知道是否有人对解决以下设计问题有好的建议/模式。我有一个命令类的层次结构。在最抽象的层面上,我有一个 ICommand 接口(interface)。执行 ICommand 的 RunCommand
我在资源(xsd 文件)中有几个文件可用于验证收到的 xml 消息。我使用的资源文件名为 AppResources.resx,它包含一个名为 clientModels.xsd 的文件。当我尝试使用这样
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
(最后的简短版本) 我目前正在开发的软件需要跟踪任意数量的 MS Office 文件,现在需要提供将所有这些文件一起打印的功能,以及一些应用程序数据(可能会发送到打印机作为 .xps、.html 或
我想在不指定命名空间或程序集的情况下按名称(字符串)实例化一个类。像这样(Unity 语法): var processor = container.Resolve("SpecialProcessor"
我有一些代码可以对 64 位整数进行大量比较,但是它必须考虑数字的长度,就好像它被格式化为字符串一样。我无法更改调用代码,只能更改函数。 最简单的方法(除了 .ToString().Length 之外
使用遗留代码,我发现我有很多这样的语句(超过 500 个) bool isAEqualsB = (a == b) ? true : false; 这样重写有意义吗? bool isAEqualsB =
我有这个: AudioPlayer player = new AudioPlayer(); player.Directory = vc.Directory; player.StartTime = vc
我已经阅读了很多关于双重检查锁定的危险的文章,我会努力远离它,但话虽如此,我认为他们的阅读非常有趣。 我正在阅读 Joe Duffy 的这篇关于使用双重检查锁定实现单例的文章: http://www.
对于可变类型,值类型和引用类型之间的行为差异很明显: // Mutable value type PointMutStruct pms1 = new PointMutStruct(1, 2); P
关闭。这个问题需要更多 focused .它目前不接受答案。 想要改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 6 年前。 Improve this q
我有一个 Cordova pp 我在 Controller 中调用post方法 它可以在浏览器中工作,但是在构建和调试apk时出现错误 ionic.bundle.js:23826 POST http:
我们正在尝试将时间戳附加到某些 URL 以让内容缓存但在它们发生更改时更新它们。我们有代码可以归结为: DateTime ts = File.GetLastWriteTime(absPath); 其中
我是一名优秀的程序员,十分优秀!