zoukankan      html  css  js  c++  java
  • 链路层的简介和MTU

    链路层杂谈(凭个人理解瞎说的,欢迎拍砖)

        链路层,说白了就是把网络层的IP数据处理一下,加点东西,放到物理层上去。
        加的东西:源、目的地址和CRC校验值,有的还有类型这个字段,用来区分协议。
        处理的部分:就是数据,就是把IP数据报,用指定的方法打个包;


    打包的方法有以下几种:
        尾部封装:把变长字段都放到最后(CRC之前),主要是为了前面的512整字节的数据整体直接复制到内核中而减小复制次数。
        SLIP协议:串行线路IP,就是用END字符作为分隔符,分割数据报。为了防止干扰,数据报的开头也一定保证有一个END标识符。
        压缩的SLIP:也就是CSLIP,相对于SLIP,只存储修改的控制信息。就是为了防止发送一个字节也要加40个字节头的情况。
        PPP:点对点协议,增加了“协议”这个字段,可以支持更多的协议,更多的业务。

    MTU(最大传输单元)

    定义:各种为网络对数据帧都有一个大小限制,这个值就是MTU。

    一般的我们常用的是以太网和IEEE 802.3的限制分别为1500和1492字节。如下图:

    路径MTU
    从A到B可能经过不同的网络,其中最小的MTU就是路径MTU;
    另外,从A到B,与B到A的寻路结果可能不同,所以它们的路径MTU也有可能不同。

    MTU的吞吐量
    如果线路速率是9600 b/s,一字节等于8bit,加上开始停止两个bit,那么线路的速率就是960B/s,传输一个1024B的分节需要1066ms。
    从一般的经验上看,一个交互应用,在本机有另一个应用发送1024B数据到网络的情况下,它大约要等待一般的时间533ms。这个时间对于交互应用来说体验很不好。
    SLIP用减小MTU值的方法解决:MTU=256,那么传输需要266ms,它的一半就是133ms。但是这样减小了带宽的利用率(因为数据报占用的比例小了)

  • 相关阅读:
    javascript高级编程笔记第五章
    关于form表单:hover没有修改表单子元素样式
    JavaScript 生成 对应的protobuf 对象
    ProtoBuf Maven 整合 用来生成对象
    NettyClient 连接 WebSocket
    Exception in thread "Thread-5" java.lang.NoSuchMethodError: io.netty.util.concurrent.SingleThreadEventExecutor异常处理
    Jsonp 使用 爬取 可直接解析页面
    OpenResty 配置SSL 同时支持http 全部转发到 https中
    Nginx(OpenResty)+Lua+Redis IP限流 10s内
    NginxUrl校验路径token+时间戳
  • 原文地址:https://www.cnblogs.com/bugutian/p/5103591.html
Copyright © 2011-2022 走看看