链路层杂谈(凭个人理解瞎说的,欢迎拍砖)
链路层,说白了就是把网络层的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。但是这样减小了带宽的利用率(因为数据报占用的比例小了)
时间: 2024-10-14 20:39:33