计算题总结

0x00 常用常数

名称

数值

以太网帧最小帧长

64bit

以太网帧最大帧长

1500B

IP头部长度

20B

以太网有效载荷

1500-20=1480B

TCP首部长度

20B

UDP首部长度

8B

TCP伪首部长度

12B

UDP伪首部长度

20B

0x01 物理层

比特率与波特率:

=×log2nnn=22bit比特率=波特率\times \log_2n \\ 其中n为码元的进制数,比如二进制就是n=2 \\ 比特率又称信息传输速率 \\ 在以太网的曼彻斯特编码中,2个\text{bit}代表了一个数据

奈奎斯特定理和香农定理:

=2Wlog2VWHzV=Wlog2(1+SN)WHz=10log10SNdBV=2理想低通信道下极限数据传输率=2W\log_2V \\ 其中W为带宽,单位为\text{Hz} \\ V就是有几种不同的用来表示数据的物理状态 \\ 信道的极限数据传输速率=W\log_2(1+\frac{S}{N}) \\ 其中W为带宽,单位为\text{Hz} \\ 信噪比=10\log_{10}\frac{S}{N},单位为\text{dB} \\ 如果发现题目询问的最大数据传输率给出了码元与比特数之间的关系\\ 那就用两个定理都计算一遍,然后取最小值\\ 比如题目提示你这是一个二进制信号(V=2)

奈奎斯特定理计算的是无噪声的情况下,香农定理计算的是有噪声的情况下

带宽的意思是最低和最高频率范围之差,比如频率范围为3.5-3.9MHZ,则带宽即为3.9-3.5=0.4MHZ

比特率(数据传输率)的单位是bps是bits/sec,位每秒,而不是Bps(Bytes/sec),这点一定要注意,1Bps=8bps,因为1byte=8bit,同样由此区分MB和Mb。

如果不采用分组的话,从主机A传送到主机B,发送时延和接受时延是相同的,就比如使用10Mbps的链路不分组传送8Mb的数据,那么就需要 2×810=1.62\times\frac{8}{10}=1.6 秒的时间,因为发送时延和接受时延是相同的。分组后当收到一个分组时发送端还在发送另一个分组,所以就不用乘以2,但是要注意计算最后一个分组出发后到达信宿所花费的时间,因为最后一个分组发出之后,发送端便停止了发送,只有接收端还有一个接受时延要单独计算在内。

0x02 数据链路层

最小帧长的计算

=线××2\mathbf{\large最小帧长=总线传播时延\times数据传输速率\times 2} \\ 收到小于最小帧长的帧将会被全部丢弃 \\ 总传播时延是双向的,也就是一趟去一趟回来的\\ \mathbf{\large 最小帧长实质为在争用期发出的比特数}

链路利用率

=tt+ktk使k=2k=1链路利用率=\frac{t_{发送数据}}{t_{发送数据}+k\cdot t_{单向传播延迟}}\\ 其中k为系数,当链路使用停止-等待协议时,k=2 \\ 当链路采用滑动窗口协议时,k=1

CSMA/CD的二进制指数退避算法

  • 确定基本退避时间,一般为2倍总线端到端的传播时延2 τ\tau

  • 定义k为重传次数,但k不超过10,当重传次数大于10时k就一直取10

  • 从离散的整数集合{0,1,..., 2k12^k-1 }中随机取一个数r,重传所需要的退避时间就是r倍的基本退避时间,即 2τr2\tau r

  • 当重传16次还不成功时,抛弃此帧,向高层报告

CSMA/CD协议检测到冲突的最大和最小时间

  • 检测到冲突的最大时间发生在:A发送的数据帧快要抵达B时,B接着发送数据帧,然后形成了碰撞,此时检测到碰撞所花时间为两倍的传输时延

  • 检测到冲突的最小时间发生在:A和B同时向对方发送数据,这样两者就会在路中间相遇,检测到碰撞所花时间为一倍的传输时延

同样如此,有了最大时间和最小时间我们可以求得检测到碰撞后发送方已发送的数据长度范围

0x03 传输层

最大吞吐量的计算

达到最大吞吐量时,系统接收到确认之后立即发送下一报文段,所以:

=t+tt=2t最大吞吐量=\frac{发送数据量}{t_{往返时延}+t_{发送时延}}\\ 其中t_{往返时延}=2t_{端到端时延}

需要加上往返时延的原因是因为发送过去之后,对方接着发回一个确认

通过报文段序号来确定发送的字节数

TCP首部的序号字段是用来保证数据能有序地提交到应用层,序号建立在字节流之上,比如第一个报文段的序号是90,则代表了此报文段是从字节90开始的,第二个报文段是120,就代表此报文段是从字节120开始的,中间空了30个字节,说明报文段的长度为30字节。

TCP传输中确认号的确定

确认号即为当前序号加上其发送的数据字节数,其中其发送的字节数要按照IP分组的总长度减去IP数据报的头部长度减去TCP数据报的头部长度来确定。

0x04 网络层

默认路由的写法

0.0.0.0/0 下一跳路由器

别忘了后面还有个/0

路由表中的0.0.0.0/0一般往互联网上跳

指定某个特定的IP到某一路由器路由表写法

192.168.1.2/32 下一跳路由器

如果指定某一个特定的IP到某一个路由器那就直接/32全部匹配即可

IP数据报的分片总长度计算

首先看头部的MF和DF标志位,MF=1表示后面还有分片,MF=0表示这是最后一个分片,DF=0是允许分片

先看MF等于1的,也就是后面还分片的,计算总长度字段长度然后减去头部长度(一般为20字节,如果从IP数据报头部的首部长度标识来看单位是4B,假如说首部长度位值为5,则IP数据报首部长度为54=20B)即为*有效载荷量,然后与MF等于1的数据报的有效载荷量相加即可。

数据报的总长度(包含首部和数据部分)不能超过数据链路层的MTU(最大传送单元)的大小,比如以太网的MTU为1500字节,则一个IP数据报封装成帧之后的大小就比如小于等于1500字节,数据部分多的就只能分片

1500字节的16进制表示为05 DC

单给定IP地址写子网掩码的时候一定要注意这是第几类IP地址

IP地址范围

私有IP地址范围

子网掩码

A

0.0.0.0-127.255.255.255

10.0.0.0-10.255.255.255

255.0.0.0

B

128.0.0.0-191.255.255.255

172.16.0.0-172.31.255.255

255.255.0.0

C

192.0.0.0-223.255.255.255

192.168.0.0-192.168.255.255

255.255.255.0

可以这样记忆地址范围,A类是从0-127,B类是在127的基础上加了64,C类是在B类末尾的基础上加了32