计算题
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


