在备考网络协议相关知识时,有几个关键的核心部分需要重点掌握。
一、TCP滑动窗口(接收窗口rwnd/拥塞窗口cwnd)大小计算
1. 知识点内容
- 接收窗口(rwnd):它表示接收方愿意接收的字节数。这个大小受到接收方缓冲区大小的限制。例如,如果接收方的缓冲区还能接收1000字节的数据,那么rwnd可能就是1000(实际情况会根据具体的协议实现和网络状态有所调整)。
- 拥塞窗口(cwnd):主要用于控制网络中的拥塞情况。它根据网络的拥塞程度动态变化。开始时比较小,比如1个报文段大小。当发送方收到连续的几个报文段的确认后,会按照慢启动算法增大cwnd,如cwnd翻倍。
- 滑动窗口大小计算:发送方的发送窗口大小等于min(rwnd, cwnd)。这意味着发送方不能超过接收方愿意接收的量,同时也不能超过为了避免网络拥塞而设定的限制。
2. 学习方法
- 理解概念:首先要深入理解rwnd和cwnd的概念及其背后的意义。可以通过画图的方式来直观地表示接收方的缓冲区和发送方的发送情况。
- 公式推导:对于窗口大小的计算公式,要多做一些练习题。从简单的例子开始,比如初始状态下rwnd和cwnd都比较小,然后逐步增加复杂度,考虑网络出现丢包等情况时窗口大小的变化。
- 实际案例分析:研究一些网络通信的实际案例,看在不同的网络场景下如何确定滑动窗口的大小。
二、HTTP缓存(ETag/Last - Modified)验证机制
1. 知识点内容
- ETag(实体标签):它是服务器为每个资源生成的一个唯一的标识符。当客户端再次请求该资源时,会将之前收到的ETag发送给服务器。服务器会比较客户端发来的ETag和自己当前资源的ETag,如果相同,说明资源未改变,可以直接返回304 Not Modified状态码,而不需要重新发送整个资源内容。
- Last - Modified:这是资源最后修改时间。客户端在后续请求中带上这个时间,服务器根据资源的实际最后修改时间进行比较。如果资源在客户端记录的Last - Modified之后没有修改,也会返回304状态码。
2. 学习方法
- 对比学习:将ETag和Last - Modified进行对比。分析它们各自的优缺点,例如ETag更加精确,不受文件修改时间精度的影响,而Last - Modified相对简单但在某些情况下可能不够准确。
- 模拟实验:通过编写简单的HTTP服务器和客户端程序来模拟这个验证机制。这样可以更深入地理解在代码层面是如何实现这些验证的。
- 查看实际网络请求:使用浏览器的开发者工具,查看实际的HTTP请求和响应,观察在缓存验证过程中ETag和Last - Modified是如何工作的。
三、DNS解析(递归查询/迭代查询)响应时间公式
1. 知识点内容
- 递归查询:客户端向本地DNS服务器发起查询请求,本地DNS服务器如果不知道答案,会代替客户端向其他DNS服务器进行查询,直到得到结果并返回给客户端。
- 迭代查询:客户端向本地DNS服务器发起查询请求,本地DNS服务器如果不知道答案,会告诉客户端下一个可能知道答案的DNS服务器地址,然后由客户端自己去向这个新的DNS服务器查询,如此反复。
- 响应时间公式:对于递归查询,响应时间会受到网络延迟、DNS服务器处理速度等因素的影响。一般来说,假设网络延迟为t1,DNS服务器处理时间为t2,查询经过n个DNS服务器,则总响应时间T = t1n + t2(n - 1)(这里只是一个简化的模型)。对于迭代查询,由于每次查询都需要客户端重新发起连接等操作,响应时间会更复杂,并且还与客户端的处理能力有关。
2. 学习方法
- 网络拓扑分析:通过分析不同的网络拓扑结构,理解递归查询和迭代查询在不同网络环境下的工作过程,从而更好地推导响应时间公式。
- 实验测量:在自己的网络环境中,使用工具来测量不同DNS查询方式的响应时间,并与公式计算的结果进行对比,找出可能影响公式的实际因素。
- 研究DNS服务器日志:如果有条件查看DNS服务器的日志,可以从日志中分析查询的过程和所花费的时间,加深对响应时间的理解。
在重点巩固阶段(考前15天),要着重对这些核心公式与定理进行记忆,并通过大量的练习和实际案例分析来加深理解,这样才能在考试中应对自如。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!