5.5、TCP 的拥塞控制

在某段时间若 对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏 \color{red}对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏 对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏

  • 这种情况就叫做 拥塞 \color{red}拥塞 拥塞(congestion)。

  • 就是供不应求

  • 在计算机网络中的 链路容量 \color{blue}链路容量 链路容量(即带宽)、 交换结点中的缓存 \color{blue}交换结点中的缓存 交换结点中的缓存 处理机 \color{blue}处理机 处理机等,都是网络的资源。

出现拥塞而不进行控制 \color{red}出现拥塞而不进行控制 出现拥塞而不进行控制,整个网络的 吞吐量将随输入负荷的增大而下降 \color{red}吞吐量将随输入负荷的增大而下降 吞吐量将随输入负荷的增大而下降


1、理想/实际的拥塞控制

如下所示

  • 输入负载:代表单位时间内输入给网络的分组数量
  • 吞吐量:代表单位时间内从网络输出的分组数量

具有理想拥塞的网络,在吞吐量达到饱和之前,网络吞吐量应等于所输入的负载

  • 即吞吐量曲线是 45 ° 45° 45° 的斜线

但当输入负载超过某一限度时,由于网络资源受限,吞吐量就不再增长而保持水平线

  • 也就是吞吐量到达饱和

这就表明输入的负载有一部分损失掉了

  • 例如,输入到网络的某些分组被某个节点丢弃了

虽然如此,但这种理想的拥塞控制下,网络的吞吐量仍然维持在其所能到达的最大值

image-20230105222523288


然而,实际的网络下,并不是这样的

如下所示

随着输入负载的增大,网络吞吐量逐渐减小

  • 也就是再网络吞吐量还未达到饱和时,就已经有一部分的输入分组被丢弃了

当网络的吞吐量明显地小于理想的吞吐量时

  • 网络就进入了轻度拥塞的状态

当输入负载达到某一数值时,网络的吞吐量随反而随着输入负载的增大而减小

  • 这时,网络就进入了拥塞状态

当输入负载继续增大到某一数值时,网络的吞吐量就减小为 0 0 0

  • 此时网络就无法工作量,这就是所谓的死锁

image-20230105223416621

实际的拥塞控制曲线应该尽量接近理想的拥塞控制曲线

image-20230105223458043


2、TCP的四种拥塞控制办法

慢开始(slow-start)、拥塞避免(congestion avoidance)、快重传(fast retransmit)、快恢复(fast recovery)


假定如下条件

  • 数据是单方向传送,而另一个方向只传送确认。

  • 接收方总是有足够大的缓存空间,因而发送方发送窗口的大小由网络的拥塞程度来决定。

  • 以最大报文段 MSS个数为讨论问题的单位,而不是以字节为单位。


image-20230105224049119

发送方维护一个叫做 拥塞窗口 cwnd \color{red}拥塞窗口 \texttt{cwnd} 拥塞窗口cwnd 的状态变量,其值 取决于网络的拥塞程度 \color{red}取决于网络的拥塞程度 取决于网络的拥塞程度,并且 动态变化 \color{red}动态变化 动态变化

  • 拥塞窗口 cwnd 的维护原则 \color{red}\texttt{cwnd}的维护原则 cwnd的维护原则:只要网络 没有出现拥塞 \color{red}没有出现拥塞 没有出现拥塞 拥塞窗口 \color{red}拥塞窗口 拥塞窗口就再 增大 \color{red}增大 增大一些

    • 但只要网络 出现拥塞 \color{red}出现拥塞 出现拥塞 拥塞窗口就减少 \color{red}拥塞窗口就减少 拥塞窗口就减少一些。
  • 判断出现 网络拥塞的依据 \color{red}网络拥塞的依据 网络拥塞的依据:没有按时收到应当到达的确认报文(即 发生超时重传 \color{red}发生超时重传 发生超时重传)。

发送方将拥塞窗口作为 发送窗口 swnd \color{red}发送窗口\texttt{swnd} 发送窗口swnd,即 swnd   =   cwnd \color{red}\texttt{swnd = cwnd} swnd = cwnd

维护一个慢开始门限 ssthresh \color{red}\texttt{ssthresh} ssthresh 状态变量:

cwnd   <   ssthresh \texttt{cwnd < ssthresh} cwnd < ssthresh 时,使用慢开始算法;

cwnd   >   ssthresh \texttt{cwnd > ssthresh} cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法;

cwnd   =   ssthresh \texttt{cwnd = ssthresh} cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞避免算法。

2.1、慢开始(指数增长) & 拥塞避免(线性+1)

如下所示:拥塞窗口随传输轮次变化图

传输轮次:发送方给接收方发送数据报文段后,接收方给发送方发回相应的确认报文段

  • 一个传输轮次所经历的时间其实就是往返时间

  • 往返时间并非是恒定的数值

使用传输轮次是为了强调把拥塞窗口所允许发送的报文段连续发送出去,并收到了对已发送的最后一个报文段的确认

拥塞窗口:它会随网络拥塞程度以及所使用的拥塞控制算法动态变化

  • TCP 双方建立逻辑连接关系时,拥塞窗口的值设置为 1 1 1

慢开始门限的初始值此处设置为 16 16 16

image-20230105225220219

2.1.1、TCP 报文段未丢失情况

在执行慢开始算法时,发送方每收到一个对新报文的确定时,就把拥塞窗口值 + 1,然后开始下一轮的传输

当拥塞窗口值增长到慢开始门限值时,就改为执行拥塞避免算法

由于当前拥塞窗口值是 1 1 1,而发送窗口值等于拥塞窗口值

  • 因此,发送方当前只能发送一个 TCP 数据报文段
  • 即:拥塞窗口值是几,就能发送几个 TCP 数据报文段

image-20230105225907501

例如:此时发送方当前拥塞窗口值已经增大到了慢开始门限值

之后,改用拥塞避免算法

也就是每个传输轮次结束后,拥塞窗口值只能线性 + 1

  • 而不像慢开始那样,每个传输轮次结束后,拥塞窗口值按指数规律增长

image-20230105230504349

2.1.2、TCP 报文段丢失情况

例如:此时,发送方可以发送 171 171 171 ~ 194 194 194 24 24 24 个数据报文段

假设这 24 24 24 个数据报文段在传输过程中丢失了几个

  • 则必然会造成发送方对这些丢失报文段的超时重传

image-20230105230721374

发送方很可能判断网络出现了拥塞,需要进行以下工作

①将慢开始门限值更新为发生拥塞时拥塞窗口值的一半,如下所示

slowstart.gif

②将拥塞窗口值减少为 1 1 1,并重新开始执行慢开始算法,如下所示

yongsaibimian.gif


当慢开始算法执行到拥塞窗口值增大到新的慢开始门限值时,就停止使用慢开始算法

  • 转而执行拥塞避免算法

如下所示

yongsaibimian2.gif


2.1.3、小结

通过上述可以看出

1、一开始,TCP 发送方一开始使用慢开始算法,让拥塞窗口值从 1 1 1 开始按指数规律增大

  • 当拥塞窗口值增大到慢开始门限值时,停止使用慢开始算法,转而执行拥塞避免算法,让拥塞窗口值按线性 + 1 的规律增大

2、当超时重传是就判断网络可能出现了拥塞,采取相应的措施

  • 一方面:将慢开始门限值更新为发生拥塞时拥塞窗口值的一半
  • 另一方面:将拥塞窗口值减少为 1 1 1,并重新开始执行慢开始算法

3、拥塞窗口值又从 1 1 1 开始按指数规律增大

  • 当增大到了新的慢开始门限时,停止使用慢开始算法,转而执行拥塞避免算法,让拥塞窗口值按线性 + 1 的规律增大

image-20230105232355625


2.1.4、注意

“慢开始” 是指一开始向网络注入的报文段少,并不是指拥塞窗口 cwnd \texttt{cwnd} cwnd 增长速度慢;

“拥塞避免 ”并非指完全能够避免拥塞,而是指在拥塞避免阶段将拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞;


2.2、快重传 & 快恢复

慢开始和拥塞避免算法是 1988 1988 1988 年提出的TCP拥塞控制算法(TCP Tahoe版本)。

1990 1990 1990 年又增加了两个新的拥塞控制算法( 改进 TCP 的性能 \color{red}改进 \texttt{TCP} 的性能 改进TCP的性能),这就是快重传和快恢复(TCP Reno版本)。

  • 有时, 个别报文段 \color{red}个别报文段 个别报文段会在网络中 丢失 \color{red}丢失 丢失,但实际上网络 并未发生拥塞 \color{red}并未发生拥塞 并未发生拥塞

  • 这将导致 发送方 \color{red}发送方 发送方超时重传,并 误认为 \color{red}误认为 误认为网络发生了 拥塞 \color{red}拥塞 拥塞;

  • 发送方把拥塞窗口 cwnd 又设置为最小值 1 \color{red}发送方把拥塞窗口 \texttt{cwnd} 又设置为最小值1 发送方把拥塞窗口cwnd又设置为最小值1,并错误地启动慢开始算法,因而 降低了传输效率 \color{red}降低了传输效率 降低了传输效率

例如:如下所示,当拥塞窗口值增大到 24 24 24 时,发生了超时重传

  • 而网络并没有发生拥塞,但是发送方却误认为网络发生了拥塞

image-20230105233524423


2.2.1、快重传算法

采用快重传算法可以KaTeX parse error: Unexpected end of input in a macro argument, expected '}' at position 12: \color{\red}̲让发送方尽早知道发生了个别报文…

所谓快重传,就是使发送方 尽快进行重传 \color{red}尽快进行重传 尽快进行重传,而 不是等超时重传计时器超时 \color{red}不是等超时重传计时器超时 不是等超时重传计时器超时再重传。

  • 要求接收方不要等待自己发送数据时才进行捎带确认,而是要 立即发送确认 \color{red}立即发送确认 立即发送确认;

  • 即使收到了失序的报文段也要立即发出对已收到的报文段的 重复确认 \color{red}重复确认 重复确认

  • 发送方一旦 收到 3 个连续的重复确认 \color{red}收到3个连续的重复确认 收到3个连续的重复确认,就将相应的报文段 立即重传 \color{red}立即重传 立即重传,而不是等该报文段的超时重传计时器超时再重传。

  • 对于个别丢失的报文段,发送方不会出现超时重传,也就不会误认为出现了拥塞(进而降低拥塞窗口 cwnd 1 1 1)。使用快重传可以使整个网络的吞吐量提高约 20 % 20\% 20%


发送方发送 1 1 1 号数据报文段

  • 接受方收到后给发送方发回对 1 1 1 号报文段的确认

在该确认报文段到达发送方之前,发送方还可以将发送窗口内的 2 2 2 号数据报文段发送出去

  • 接受方收到后给发送方发回对 2 2 2 号报文段的确认

在该确认报文段到达发送方之前,发送方还可以将发送窗口内的 3 3 3 号数据报文段发送出去

  • 但该报文段丢失了,接收方自然不会给发送方发回针对该报文段的确认

image-20230105234349457


发送方还可以将发送窗口内的 4 4 4 号数据报文段发送出去

  • 接受方收到后,发现这不是按序到达的报文段
  • 因此,给发送方发回针对 2 2 2 号报文段的重复确认

表明:“我现在希望收到的是 3 号报文段,但是我没有收到 3 号报文段,而是收到了未按序到达的报文段”

发送方还可以将发送窗口内的 5 5 5 号数据报文段发送出去

  • 接受方收到后,发现这不是按序到达的报文段
  • 因此,给发送方发回针对 2 2 2 号报文段的重复确认

发送方还可以将发送窗口内的 6 6 6 号数据报文段发送出去

  • 接受方收到后,发现这不是按序到达的报文段
  • 因此,给发送方发回针对 2 2 2 号报文段的重复确认

image-20230105234653946


至此,发送方收到 3 3 3 个连续的对 2 2 2 号报文段的重复确认,就立即重传 3 3 3 号报文段

  • 接受方收到后给发送方发回对 6 6 6 号报文段的确认

表明序号到 6 6 6 为止的报文段都正确接收了

  • 这样就不会造成对 3 3 3 号报文段的超时重传
  • 而是提早进行了重传

image-20230105234941203


使用快重传可以使整个网络的吞吐量提高约 20 % 20\% 20%

2.2.2、快恢复算法

发送方一旦 收到 3 个重复确认 \color{red}收到3 个重复确认 收到3个重复确认,就知道现在只是丢失了个别的报文段。

  • 于是不启动慢开始算法,而 执行快恢复算法 \color{red}执行快恢复算法 执行快恢复算法

发送方将慢开始门限 ssthresh 值和拥塞窗口 cwnd 值调整为当前窗口的一半 ; 开始执行拥塞避免算法 \color{red}发送方将慢开始门限\texttt{ssthresh} 值和拥塞窗口\texttt{cwnd}值调整为当前窗口的一半;开始执行拥塞避免算法 发送方将慢开始门限ssthresh值和拥塞窗口cwnd值调整为当前窗口的一半;开始执行拥塞避免算法

也有的快恢复实现是把快恢复开始时的拥塞窗口 cwnd 值再增大一些,即等于新的 ssthresh + 3 \texttt{ssthresh} + 3 ssthresh+3

  • 既然发送方收到 3 3 3 个重复的确认,就表明有 3 3 3 个数据报文段已经离开了网络;

  • 3 3 3 个报文段不再消耗网络资源而是停留在接收方的接收缓存中;

  • 可见现在网络中不是堆积了报文段而是减少了 3 3 3 个报文段。因此可以适当把拥塞窗口扩大些。

2.3、整体曲线图

image-20230106001109301

3、习题

image-20230106001252721

image-20230106001702162

答案 C

4、小结

image-20230106001823255

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 译者序 前言 第1章 概述 1 1.1 引言 1 1.2 分层 1 1.3 TCP/IP的分层 4 1.4 互联网的地址 5 1.5 域名系统 6 1.6 封装 6 1.7 分用 8 1.8 客户-服务器模型 8 1.9 端口号 9 1.10 标准化过程 10 1.11 RFC 10 1.12 标准的简单服务 11 1.13 互联网 12 1.14 实现 12 1.15 应用编程接口 12 1.16 测试网络 13 1.17 小结 13 第2章 链路层 15 2.1 引言 15 2.2 以太网和IEEE 802封装 15 2.3 尾部封装 17 2.4 SLIP:串行线路IP 17 2.5 压缩的SLIP 18 2.6 PPP:点对点协议 18 2.7 环回接口 20 2.8 最大传输单元MTU 21 2.9 路径MTU 21 2.10 串行线路吞吐量计算 21 2.11 小结 22 第3章 IP:网际协议 24 3.1 引言 24 3.2 IP首部 24 3.3 IP路由选择 27 3.4 子网寻址 30 3.5 子网掩码 32 3.6 特殊情况的IP地址 33 3.7 一个子网的例子 33 3.8 ifconfig命令 35 3.9 netstat命令 36 3.10 IP的未来 36 3.11 小结 37 第4章 ARP:地址解析协议 38 4.1 引言 38 4.2 一个例子 38 4.3 ARP高速缓存 40 4.4 ARP的分组格式 40 4.5 ARP举例 41 4.5.1 一般的例子 41 4.5.2 对不存在主机的ARP请求 42 4.5.3 ARP高速缓存超时设置 43 4.6 ARP代理 43 4.7 免费ARP 45 4.8 arp命令 45 4.9 小结 46 第5章 RARP:逆地址解析协议 47 5.1 引言 47 5.2 RARP的分组格式 47 5.3 RARP举例 47 5.4 RARP服务器的设计 48 5.4.1 作为用户进程的RARP服务器 49 5.4.2 每个网络有多个RARP服务器 49 5.5 小结 49 第6章 ICMP:Internet控制报文协议 50 6.1 引言 50 6.2 ICMP报文的类型 50 6.3 ICMP地址掩码请求与应答 52 6.4 ICMP时间戳请求与应答 53 6.4.1 举例 54 6.4.2 另一种方法 55 6.5 ICMP端口不可达差错 56 6.6 ICMP报文的4.4BSD处理 59 6.7 小结 60 第7章 Ping程序 61 7.1 引言 61 7.2 Ping程序 61 7.2.1 LAN输出 62 7.2.2 WAN输出 63 7.2.3 线路SLIP链接 64 7.2.4 拨号SLIP链路 65 7.3 IP记录路由选项 65 7.3.1 通常的例子 66 7.3.2 异常的输出 68 7.4 IP时间戳选项 69 7.5 小结 70 第8章 Traceroute程序 71 8.1 引言 71 8.2 Traceroute 程序的操作 71 8.3 局域网输出 72 8.4 广域网输出 75 8.5 IP源站选路选项 76 8.5.1 宽松的源站选路的traceroute 程序示例 78 8.5.2 严格的源站选路的traceroute 程序示例 79 8.5.3 宽松的源站选路traceroute程序 的往返路由 80 8.6 小结 81 第9章 IP选路 83 9.1 引言 83 9.2 选路的原理 84 9.2.1 简单路由表 84 9.2.2 初始化路由表 86 9.2.3 较复杂的路由表 87 9.2.4 没有到达目的地的路由 87 9.3 ICMP主机与网络不可达差错 88 9.4 转发或不转发 89 9.5 ICMP重定向差错 89 9.5.1 一个例子 90 9.5.2 更多的细节 91 9.6 ICMP路由器发现报文 92 9.6.1 路由器操作 93 9.6.2 主机操作 93 9.6.3 实现 93 9.7 小结 94 第10章 动态选路协议 95 10.1 引言 95 10.2 动态选路 95 10.3 Unix选路守护程序 96 10.4 RIP:选路信息协议 96 10.4.1 报文格式 96 10.4.2 正常运行 97 10.4.3 度量 98 10.4.4 问题 98 10.4.5 举例 98 10.4.6 另一个例子 100 10.5 RIP版本2 102 10.6 OSPF:开放最短路径优先 102 10.7 BGP:边界网关协议 103 10.8 CIDR:无类型域间选路 104 10.9 小结 105 第11章 UDP:用户数据报协议 107 11.1 引言 107 11.2 UDP首部 107 11.3 UDP检验和 108 11.3.1 tcpdump输出 109 11.3.2 一些统计结果 109 11.4 一个简单的例子 110 11.5 IP分片 111 11.6 ICMP不可达差错(需要分片) 113 11.7 用Traceroute确定路径MTU 114 11.8 采用UDP的路径MTU发现 116 11.9 UDP和ARP之间的交互作用 118 11.10 最大UDP数据报长度 119 11.11 ICMP源站抑制差错 120 11.12 UDP服务器的设计 122 11.12.1 客户IP地址及端口号 122 11.12.2 目标IP地址 122 11.12.3 UDP输入队列 122 11.12.4 限制本地IP地址 124 11.12.5 限制远端IP地址 125 11.12.6 每个端口有多个接收者 125 11.13 小结 126 第12章 广播和多播 128 12.1 引言 128 12.2 广播 129 12.2.1 受限的广播 129 12.2.2 指向网络的广播 129 12.2.3 指向子网的广播 129 12.2.4 指向所有子网的广播 130 12.3 广播的例子 130 12.4 多播 132 12.4.1 多播组地址 133 12.4.2 多播组地址到以太网地址的转换 133 12.4.3 FDDI和令牌环网络中的多播 134 12.5 小结 134 第13章 IGMP:Internet组管理协议 136 13.1 引言 136 13.2 IGMP报文 136 13.3 IGMP协议 136 13.3.1 加入一个多播组 136 13.3.2 IGMP报告和查询 137 13.3.3 实现细节 137 13.3.4 生存时间字段 138 13.3.5 所有主机组 138 13.4 一个例子 138 13.5 小结 141 第14章 DNS:域名系统 142 14.1 引言 142 14.2 DNS基础 142 14.3 DNS的报文格式 144 14.3.1 DNS查询报文中的问题部分 146 14.3.2 DNS响应报文中的资源记录部分 147 14.4 一个简单的例子 147 14.5 指针查询 150 14.5.1 举例 151 14.5.2 主机名检查 151 14.6 资源记录 152 14.7 高速缓存 153 14.8 用UDP还是用TCP 156 14.9 另一个例子 156 14.10 小结 157 第15章 TFTP:简单文件传送协议 159 15.1 引言 159 15.2 协议 159 15.3 一个例子 160 15.4 安全性 161 15.5 小结 162 第16章 BOOTP: 引导程序协议 163 16.1 引言 163 16.2 BOOTP的分组格式 163 16.3 一个例子 164 16.4 BOOTP服务器的设计 165 16.5 BOOTP穿越路由器 167 16.6 特定厂商信息 167 16.7 小结 168 第17章 TCP:传输控制协议 170 17.1 引言 170 17.2 TCP的服务 170 17.3 TCP的首部 171 17.4 小结 173 第18章 TCP连接的建立与终止 174 18.1 引言 174 18.2 连接的建立与终止 174 18.2.1 tcpdump的输出 174 18.2.2 时间系列 175 18.2.3 建立连接协议 175 18.2.4 连接终止协议 177 18.2.5 正常的tcpdump输出 177 18.3 连接建立的超时 178 18.3.1 第一次超时时间 178 18.3.2 服务类型字段 179 18.4 最大报文段长度 179 18.5 TCP的半关闭 180 18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半打开连接 188 18.8 同时打开 189 18.9 同时关闭 191 18.10 TCP选项 191 18.11 TCP服务器的设计 192 18.11.1 TCP服务器端口号 193 18.11.2 限定的本地IP地址 194 18.11.3 限定的远端IP地址 195 18.11.4 呼入连接请求队列 195 18.12 小结 197 第19章 TCP的交互数据流 200 19.1 引言 200 19.2 交互式输入 200 19.3 经受时延的确认 201 19.4 Nagle算法 203 19.4.1 关闭Nagle算法 204 19.4.2 一个例子 205 19.5 窗口大小通告 207 19.6 小结 208 第20章 TCP的成块数据流 209 20.1 引言 209 20.2 正常数据流 209 20.3 滑动窗口 212 20.4 窗口大小 214 20.5 PUSH标志 215 20.6 慢启动 216 20.7 成块数据的吞吐量 218 20.7.1 带宽时延乘积 220 20.7.2 拥塞 220 20.8 紧急方式 221 20.9 小结 224 第21章 TCP的超时与重传 226 21.1 引言 226 21.2 超时与重传的简单例子 226 21.3 往返时间测量 227 21.4 往返时间RTT的例子 229 21.4.1 往返时间RTT的测量 229 21.4.2 RTT估计器的计算 231 21.4.3 慢启动 233 21.5 拥塞举例 233 21.6 拥塞避免算法 235 21.7 快速重传与快速恢复算法 236 21.8 拥塞举例(续) 237 21.9 按每条路由进行度量 240 21.10 ICMP的差错 240 21.11 重新分组 243 21.12 小结 243 第22章 TCP的坚持定时器 245 22.1 引言 245 22.2 一个例子 245 22.3 糊涂窗口综合症 246 22.4 小结 250 第23章 TCP的保活定时器 251 23.1 引言 251 23.2 描述 252 23.3 保活举例 253 23.3.1 另一端崩溃 253 23.3.2 另一端崩溃并重新启动 254 23.3.3 另一端不可达 254 23.4 小结 255 第24章 TCP的未来和性能 256 24.1 引言 256 24.2 路径MTU发现 256 24.2.1 一个例子 257 24.2.2 大分组还是小分组 258 24.3 长肥管道 259 24.4 窗口扩大选项 262 24.5 时间戳选项 263 24.6 PAWS:防止回绕的序号 265 24.7 T/TCP:为事务用的TCP扩展 265 24.8 TCP的性能 267 24.9 小结 268 第25章 SNMP:简单网络管理协议 270 25.1 引言 270 25.2 协议 270 25.3 管理信息结构 272 25.4 对象标识符 274 25.5 管理信息库介绍 274 25.6 实例标识 276 25.6.1 简单变量 276 25.6.2 表格 276 25.6.3 字典式排序 277 25.7 一些简单的例子 277 25.7.1 简单变量 278 25.7.2 get-next操作 278 25.7.3 表格的访问 279 25.8 管理信息库(续) 279 25.8.1 system组 279 25.8.2 interface组 280 25.8.3 at组 281 25.8.4 ip组 282 25.8.5 icmp组 285 25.8.6 tcp组 285 25.9 其他一些例子 288 25.9.1 接口MTU 288 25.9.2 路由表 288 25.10 trap 290 25.11 ASN.1和BER 291 25.12 SNMPv2 292 25.13 小结 292 第26章 Telnet和Rlogin:远程登录 293 26.1 引言 293 26.2 Rlogin协议 294 26.2.1 应用进程的启动 295 26.2.2 流量控制 295 26.2.3 客户的中断键 296 26.2.4 窗口大小的改变 296 26.2.5 服务器到客户的命令 296 26.2.6 客户到服务器的命令 297 26.2.7 客户的转义符 298 26.3 Rlogin的例子 298 26.3.1 初始的客户-服务器协议 298 26.3.2 客户中断键 299 26.4 Telnet协议 302 26.4.1 NVT ASCII 302 26.4.2 Telnet命令 302 26.4.3 选项协商 303 26.4.4 子选项协商 304 26.4.5 半双工、一次一字符、一次 一行或行方式 304 26.4.6 同步信号 306 26.4.7 客户的转义符 306 26.5 Telnet举例 306 26.5.1 单字符方式 306 26.5.2 行方式 310 26.5.3 一次一行方式(准行方式) 312 26.5.4 行方式:客户中断键 313 26.6 小结 314 第27章 FTP:文件传送协议 316 27.1 引言 316 27.2 FTP协议 316 27.2.1 数据表示 316 27.2.2 FTP命令 318 27.2.3 FTP应答 319 27.2.4 连接管理 320 27.3 FTP的例子 321 27.3.1 连接管理:临时数据端口 321 27.3.2 连接管理:默认数据端口 323 27.3.3 文本文件传输:NVT ASCII 表示还是图像表示 325 27.3.4 异常中止一个文件的传输: Telnet同步信号 326 27.3.5 匿名FTP 329 27.3.6 来自一个未知IP地址的匿名FTP 330 27.4 小结 331 第28章 SMTP:简单邮件传送协议 332 28.1 引言 332 28.2 SMTP协议 332 28.2.1 简单例子 332 28.2.2 SMTP命令 334 28.2.3 信封、首部和正文 335 28.2.4 中继代理 335 28.2.5 NVT ASCII 337 28.2.6 重试间隔 337 28.3 SMTP的例子 337 28.3.1 MX记录:主机非直接连到 Internet 337 28.3.2 MX记录:主机出故障 339 28.3.3 VRFY和EXPN命令 340 28.4 SMTP的未来 340 28.4.1 信封的变化:扩充的SMTP 341 28.4.2 首部变化:非ASCII字符 342 28.4.3 正文变化:通用Internet邮件 扩充 343 28.5 小结 346 第29章 网络文件系统 347 29.1 引言 347 29.2 Sun远程过程调用 347 29.3 XDR:外部数据表示 349 29.4 端口映射器 349 29.5 NFS协议 351 29.5.1 文件句柄 353 29.5.2 安装协议 353 29.5.3 NFS过程 354 29.5.4 UDP还是TCP 355 29.5.5 TCP上的NFS 355 29.6 NFS实例 356 29.6.1 简单的例子:读一个文件 356 29.6.2 简单的例子:创建一个目录 357 29.6.3 无状态 358 29.6.4 例子:服务器崩溃 358 29.6.5 等幂过程 360 29.7 第3版的NFS 360 29.8 小结 361 第30章 其他的TCP/IP应用程序 363 30.1 引言 363 30.2 Finger协议 363 30.3 Whois协议 364 30.4 Archie、WAIS、Gopher、Veronica 和WWW 366 30.4.1 Archie 366 30.4.2 WAIS 366 30.4.3 Gopher 366 30.4.4 Veronica 366 30.4.5 万维网WWW 367 30.5 X窗口系统 367 30.5.1 Xscope程序 368 30.5.2 LBX: 低带宽X 370 30.6 小结 370 附录A tcpdump程序 371 附录B 计算机时钟 376 附录C sock程序 378 附录D 部分习题的解答 381 附录E 配置选项 395 附录F 可以免费获得的源代码 406 参考文献 409 缩略语 420

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值