崔勇的网络原理是逐层教学的:与CMU的自顶而下方法不同,崔老师是自底而上(即从物理层开始讲)的讲法。
假如在学期初就能知道这门课的核心主旨(介绍各种各样的协议),是不是体验会良好很多?另外,我觉得大作业放到暑假来做会更好一些,在讲网络层之前就留网络层相关的编程作业实在是有些抽象…
总之,这里是博主在期末复习时做的一些练习题;另外最好练习一下一些具体的计算题(这里面并没有这些题目),亲自动动笔比看答案要管用很多。

【复杂】在选择性重传协议中,发送方窗口大小为2,接收方窗口当前状态为[4 5 6 7],则发送方窗口此时的下界可以是?

2,3,4都有可能。

首先要明确的是,发送窗口下界为未收到确认的最小帧序号;上界为下一个要发的帧序号(还没有发)。比如下界2上界4的窗口代表已经发了2和3,2还在等待确认,4还没发。故而发送窗口下界增加=收到了ack,发送窗口上界增加=新发一个帧。接收窗口的上下界表示希望接收的最大/最小帧序号,每当接收方发送ack就把上下界都加一。

回到本题,正常情况下应该是下界4上界6的窗口(此时发送端正在等待接收方收到它的4和5,并传回ack)。但是下界2或者下界3也有可能,假若它发送了2和3,接收端收到并发送ack2和ack3,此时接收端不管发送端的死活就把窗口下界加到4了,但是ack2丢了,发送端就不能增加下界。

值得注意的是,下界5是不可能的,因为发送窗口下界5表示它收到了ack5,但是倘若接收端真的发了ack5其下界应当加到5。这也说明(倘若不考虑循环)接收窗口的下界永远不可能小于(或者说慢于)发送窗口的下界。

发送和接收窗口的上下界的概念有些迷惑(博主也没太懂),主要还是掌握窗口内有哪几个序号应该就行。


【简单】255.255.240.0网段有多少可用IP?

4094。这道题主要需要注意主机号全0为子网码,全1为广播,这两个不能用于IP。所以共有2^12-2=4094个IP。


【简单】TCP基于消息流?

TCP基于字节流。

“TCP 把应用程序交下来的数据看成仅仅是一连串无结构的字节流。接收方应用程序收到的字节流和发送方应用程序发出的字节顺序完全一样”


【简单】FTP会话全过程,会建立几次控制连接,几次数据连接?

1次控制连接,N次数据连接。

“控制连接(服务器TCP21端口)在整个会话期间一直保持”


【简单】除了带宽和延迟以外,服务质量QoS与什么有关?

抖动和丢包率。


【略复杂】如果在一条3kHz的信道上发送一个二进制信号,该信道的信噪比为20dB,则最大可达到的数据传输率为多少?

首先计算香农定律:信噪比的单位为分贝时,需要用10*log_10 (S/N)来计算,即S/N为100。故而香农定律对其的限制为19.97kbps。

再计算Nyquist定律,二进制信号即为课件所写的信号电平分为2级,故对其的限制为6kbps。

取两者之中的最小值,答案为6kbps。请注意习题课中并没有提到需要考虑Nyquist定律,因为习题课的那道题并没有传输具体的N级信号,也就无需计算之。


【一个知识】CSMA/CD是基于1-坚持型CSMA改进的,而非p-坚持型或非坚持型。


【复杂】在TCP协议中,使用慢启动算法和拥塞避免算法进行拥塞控制。假设网络负载非常稳定,在一个TCP连接中,每当拥塞窗口大小达到W时就会丢包,W = 2^n (n是正整数)。假设每个TCP段的长度都是最大发送段长MSS,段的发送和接收时间可以忽略,RTT(Round Trip Time)为常量,并且有足够多的数据要发送。求平均传输速率。

需要注意的是,这里的拥塞窗口没有KB的单位,所以指的应该是段的个数,即 2 ^ n * MSS。另外,这道题似乎用的是TCP Tahoe的方法,即不考虑TCP Reno的快速恢复(不再重新慢启动,而是直接从阈值开始线性增长)。

我们先计算慢启动阶段发送的数据量和时间:从初始的一个 MSS 到 W/2 (也就是2 ^ (n - 1)个MSS),共发送 1 + 2 + 4 + … + 2 ^ (n – 1) = 2 ^ n – 1个MSS,RTT个数为n个。

再计算线性增加(即所谓的拥塞避免算法)发送的数据量和时间:从 W/2 (也就是2^(n - 1)个MSS)到 W(也就是2 ^ n个MSS),共发送2 ^ (2n – 2) + 2 ^ (2n – 3) + 2 ^ (n – 2)个MSS,RTT个数为2 ^ (n – 1)个。

综合两个阶段,我们得出平均传输速率大致为 (3W ^2 + 10W – 8) / (4W + 8log_2 W) * (MSS / RTT)。

近似等于0.75 W * MSS / RTT 。

【略复杂】5台路由器组成全相连的网络,每台路由器有5个接口,分别连接其它4台路由器和1个局域网,每个局域网最多连接20台计算机,每台计算机分配1个IP地址。如果只有一个IPv4地址块202.112.10.0/24可供分配,请给出一种合理的地址分配方案,分别给出每个局域网的地址空间和路由器每个端口的地址以及它们的掩码。

5台路由器之间有10条链路,每个链路都要分配4个IP地址(事实上最少只能4个IP地址)。可分配202.112.10.(0,4,8,12,16,20,24,28,32,36),掩码为255.255.255.252(即只有两位主机号)。
每个局域网有20台主机,故分配32个地址。可分配202.112.10.(64,96,128,160,192),掩码为255.255.255.224(即有五位主机号)。

【简单】差分曼彻斯特码的原理是:每一位中间都有一个跳变,位中间跳变表示( ),位前跳变表示( )

差分曼彻斯特编码的位中间跳变表示时钟,位前跳变表示数据。而曼彻斯特编码每位中间的跳变同时作为数据和时钟。(自同步)这也能看出差分曼彻斯特码时钟、数据分离,便于提取的优点。【这么细致且坑爹的题真的会考吗??】

【简单】DHCP为什么需要四次交互而不是两次交互?明明两次交互就足够发现DHCP服务器并获取IP地址了

因为主机可能获得了多个DHCP服务器提供的IP地址,而显然它只会用到一个(而多余的地址不会用到);故而需要再次进行request-ACK交互来确认它的确使用了这个地址。(值得一提的是,DHCP服务器分配给客户端的IP地址在yiaddr这个字段里;服务器端在67端口,客户端在68号端口)

【一个知识】一个新主机加入网络并发送数据包的全过程(如下图)


【复杂】考虑在一个无错的64Kbps卫星信道上单向发送512字节长的数据帧,来自另一个方向反馈的确认帧非常短。对于窗口大小为1、7、15和127 的情形,试问最大的吞吐量分别是多少?从地球到卫星的传播延迟为270ms。

本题需要注意,信道利用率不要超出100% – 这意味着吞吐量不可能大于信道传输速率,即64Kbps。

首先我们求一下信道利用率:信道利用率的分子为窗口大小W乘以每个数据帧的发送时间;分母为一个数据帧的时间加上RTT【发送端发送完一整个窗口之后需要立刻收到ACK。所以从头开始算的话,发送第一个数据帧的发送时间要计算在内、往返的信号传播速度要计算在内、ACK的发送时间也要计算在内(虽然本题的确认帧默认发送时间忽略)。所以加起来是一个数据帧的时间加上RTT;倘若ACK的长度跟普通数据帧一样,或者是捎带确认,那么分母就应该是两个数据帧的时间加上RTT】。信道利用率最大为100%,故而W大于等于10的时候,吞吐量就已经达到极限的64Kbps了:即窗口为15和127时,吞吐量为64Kbps。

然后我们再计算窗口为1和7的情况:由上面的公式可知W=1时吞吐量为6781.5bps,W=7时吞吐量为47470.2bps。计算过程详见下图:


【简单】波特率(baud)和比特率(bit)的关系

  • 波特率:每秒钟信号变化的次数,也称调制速率(频谱带宽)
  • 比特率:每秒钟传送的二进制位数(数据传输带宽)

故而波特率与比特率的关系取决于信号值与比特位的关系:例如每个信号值可表示3位,则比特率是波特率的3倍;每个信号值可表示1位,则比特率和波特率相同


【一个知识】IPV4数据报(报头)格式

  • 版本:4bit,表示采用的IP协议版本
  • 首部长度:4bit,表示整个IP数据报首部的长度,以4B为单位,最大表示范围(2^4-1)×4=60字节(最小为20字节)
  • 服务类型ToS:8bit,该字段一般情况下不使用
  • 总长度:16bit,表示整个IP报文的长度,能表示的最大字节为2^16-1=65535字节
  • 标识ID:16bit,IP软件通过计数器自动产生,每产生1个数据报计数器加1,在ip分片后用来标识同一片的分片
  • 标志:3bit,目前只有两位有意义;MF,置1表示后面还有分片,置0表示这是数据报片的最后1个;DF,不能分片标志,置0时表示允许分片
  • 片偏移:13bit,表示IP分片后,相应的IP片在总的IP片的相对位置(8octets)
  • 生存时间TTL(Time To Live):8bit,表示数据报在网络中的生命周期,用通过路由器的数量来计量,即跳数(每经过一个路由器会减1)
  • 协议:8bit,标识上层协议(TCP/UDP/ICMP…)
  • 首部校验和:16bit,对数据报首部进行校验,不包括数据部分
  • 源地址:32bit,标识IP片的发送源IP地址➢目的地址:32bit,标识IP片的目的地IP地址
  • 选项:可扩充部分,具有可变长度,定义了安全性、严格源路由、松散源路由、记录路由、时间戳等选项
  • 填充Padding:用全0的填充字段补齐为4字节的整数倍

其中值得注意的是,协议不是指ip协议的版本(而版本才是)、标志中的MF为1表示后面还有分片、标志中的DF为1表示不能分片


【简单】域名服务提供下列哪些信息之间的转换?(一般而言)本地服务器向根服务器查询采用递归还是迭代查询法?

域名与IP地址的转换;一般采用迭代方式。

递归查询指的是域名服务器替本地服务器查询下一个服务器,而迭代查询指的是域名服务器将下一步应当查询的服务器告知本地服务器。递归查询的坏处在于一旦某个查询失联了就得从头开始查询,而迭代查询只需重复这步查询即可。


【简单】一个IPv4 数据报长度为4000B(固定头部长度)。现在经过一个网络传送,但此网络能够传送的最大数据长度为1500B。试问各数据报片段的数据字段长度应为何值?

数据报的头部有20字节,故而实际载荷为3980B。所以三段分片长度分别为1480B,1480B,1020B。

需要注意的是原数据报就有20字节的首部!

【简单】”http://info.tsinghua.edu.cn:80/index.jsp“ 说出这个URL各个组成部分

http是协议名;info.tsinghua.edu.cn是主机名;80是端口号;index.jsp是路径和文件名。


【自制题目(不保证正确性)】服务器浪费带宽有哪几种可能?

  • 有带宽但是没有充分利用(比如带宽明明可以传高清视频,但还是只传了低清的)
  • 传输过去后接收端发现数据无用(比如既发高清又发低清版本,接收端会发现低清版本没有用)
  • 接收端缓存满了,传过去直接被丢掉了
  • 因为信道错误导致的重传(这是否可以算一个答案?)

考后感想

日你妈了个逼,出了两道综合性很强的大题,一个主要考vlan,一个主要考http协议。他妈的这两个协议的具体运作方式上课就没怎么讲,根本就tm不会(怎么可能只根据ppt上的文字描述就知道这个东西是怎么运行的呢?),乱写。对比dsa邓公给的一整套demo,高下立判。

总之是门体验不太好的课。如果不考虑给分、大作业和考试的话其实这些东西挺有意思的。但是莫名其妙的大作业、避重就轻的讲课方式让人很恶心,属于是标准的清华魅力时刻;就这种教学水平怎么能和CMU的毕业生竞争?