计算题
0x00 常用常数
名称 | 数值 |
---|---|
以太网帧最小帧长 | 64bit |
以太网帧最大帧长 | 1500B |
IP头部长度 | 20B |
以太网有效载荷 | 1500-20=1480B |
TCP首部长度 | 20B |
UDP首部长度 | 8B |
TCP伪首部长度 | 12B |
UDP伪首部长度 | 20B |
0x01 物理层
比特率与波特率:
奈奎斯特定理和香农定理:
奈奎斯特定理计算的是无噪声的情况下,香农定理计算的是有噪声的情况下
带宽的意思是最低和最高频率范围之差,比如频率范围为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,但是要注意计算最后一个分组出发后到达信宿所花费的时间,因为最后一个分组发出之后,发送端便停止了发送,只有接收端还有一个接受时延要单独计算在内。
0x02 数据链路层
最小帧长的计算:
链路利用率:
CSMA/CD的二进制指数退避算法:
- 确定基本退避时间,一般为2倍总线端到端的传播时延2
- 定义k为重传次数,但k不超过10,当重传次数大于10时k就一直取10
- 从离散的整数集合{0,1,…,}中随机取一个数r,重传所需要的退避时间就是r倍的基本退避时间,即
- 当重传16次还不成功时,抛弃此帧,向高层报告
CSMA/CD协议检测到冲突的最大和最小时间:
- 检测到冲突的最大时间发生在:A发送的数据帧快要抵达B时,B接着发送数据帧,然后形成了碰撞,此时检测到碰撞所花时间为两倍的传输时延
- 检测到冲突的最小时间发生在:A和B同时向对方发送数据,这样两者就会在路中间相遇,检测到碰撞所花时间为一倍的传输时延
同样如此,有了最大时间和最小时间我们可以求得检测到碰撞后发送方已发送的数据长度范围
0x03 传输层
最大吞吐量的计算:
达到最大吞吐量时,系统接收到确认之后立即发送下一报文段,所以:
需要加上往返时延的原因是因为发送过去之后,对方接着发回一个确认
通过报文段序号来确定发送的字节数:
TCP首部的序号字段是用来保证数据能有序地提交到应用层,序号建立在字节流之上,比如第一个报文段的序号是90,则代表了此报文段是从字节90开始的,第二个报文段是120,就代表此报文段是从字节120开始的,中间空了30个字节,说明报文段的长度为30字节。
TCP传输中确认号的确定:
确认号即为当前序号加上其发送的数据字节数,其中其发送的字节数要按照IP分组的总长度减去IP数据报的头部长度减去TCP数据报的头部长度来确定。
0x04 网络层
默认路由的写法:
1 | 0.0.0.0/0 下一跳路由器 |
别忘了后面还有个/0
路由表中的0.0.0.0/0一般往互联网上跳
指定某个特定的IP到某一路由器路由表写法:
1 | 192.168.1.2/32 下一跳路由器 |
如果指定某一个特定的IP到某一个路由器那就直接/32全部匹配即可
IP数据报的分片总长度计算:
首先看头部的MF和DF标志位,MF=1表示后面还有分片,MF=0表示这是最后一个分片,DF=0是允许分片
先看MF等于1的,也就是后面还分片的,计算总长度字段长度然后减去头部长度(一般为20字节,如果从IP数据报头部的首部长度标识来看单位是4B,假如说首部长度位值为5,则IP数据报首部长度为5*4=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