原文:如果线路的速率是9600b/s,而一个字节有8bit,加上一个起始比特和一个停止比特,那么线路的速率就是960B/s(字节/秒)。以这个速率传输一个1024字节的分组需要1066ms,如果用SLIP链接运行一个交互式应用程序,同时还运行另一个应用程序如FTP发送或接收1024字节的数据,那么一般来说就必须等待一半的时间(533ms)才能把交互式应用程序的分组数据发送出去。请问这里的起始比特和停止比特是哪里来的?等待一半的时间是怎么计算来的?

解决方案 »

  1.   

    串行线路的延时和最大传输单元MTU还有关系的,如果不知道MTU,是不知道需等待多长时间的
      

  2.   

    SLIP数据报的封装:IP数据报以一个称作END(0xc0)的特殊字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个END字符。
    >>但是这里是字节(byte),而不是位(bit)。所以不明白起始比特与结束比特是什么意思
      

  3.   

    如果用SLIP链接运行一个交互式应用程序,同时还运行另一个应用程序如FTP发送或接收1024字节的数据,那么一般来说就必须等待一半的时间(533ms)才能把交互式应用程序的分组数据发送出去。
    >>这里的等待时间应该是1066ms,但是为什么是一半的等待时间?
      

  4.   

    找到了,这里说的是平均等待时间,而不是一定是这么长时间。请看22页“我们对平均等待时间的计算(传输最大数据帧所需时间的一半)……”如果MTU是256,那么等待时间可能是1ms,也能是256ms
      

  5.   

    起始字节和起始位,是两个层次的概念起始位是数据链路层上的概念。例如232,第一个比特(即低电平)表示1个字节的开始,通知对方开始接受字节,每个字节都是如此,这样保证字节的传输正确。SLIP的起始字节是网络层的概念,就是在上述数据链路层基础上,用于IP数据包的判断起始和结束,这个用于保证一个IP数据包的完整传输。
      

  6.   

    SLIP数据报的封装:IP数据报以一个称作END(0xc0)的特殊字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个END字符。... 如果线路的速率是9600b/s,而一个字节有8bit,加上一个起始比特和一个停止比特,那么线路的速率就是960B/s(字节/秒)。
    >>一个是字节(byte),一个是位(bit)。不明白起始比特与结束比特是从哪里来的
      

  7.   


    英文版的原文
    If we're using the SLIP link for an interactive application, along with an application such as FTP that sends or receives 1024-byte packets, we have to wait, on the average, half of this time (533 ms) to send our interactive packet.译者犯了小错误没有将平均时间这个意思表达出来。
      

  8.   

    SLIP如果是基于232串行链路的话,它的每个字节都是按照上述方式发送。232通讯实现了每个字节的传输,但是我们的通讯不可能只是在字节的基础上传输。
    打个比方,假设你需要通过串口通讯告诉对方一句话,你单纯发送一个字节肯定无法表达你的意思。
    这就需要定一个协议,比如先发一个0xc0表示我开始说话了,等你说完这句话,再发送一个0xc0表示这句话结束了SLIP就是这个道理,先发送完IP数据报后,发送一个0xc0表示一个完整IP包发送完毕。这时对方才开始对IP包进行校验,并发送给上层应用程序。