参考图 2‐1 和图 2‐2.简要回答与 TCP/IP 协议相关的下列问题, 将解答填入答题纸对应栏内。
路由器收到一个长度 1520 字节的 IP 数据报, 需要转发到下一跳网络。
(1)如果该数据报 DF=1, 路由器怎么处理这个数据报?
(2)若 DF=0。 该数据报被分为两个 IP 报文分片。 写出这两个 IP 报文分片的长度。 MF 标志位以及 Offset 字段的值(要求第 1 个分片尽量大)。
(3)这两个 IP 报文分片在何处被重新组装回拆分之前的 IP 数据报的状态?
(4)IP 报文的 Identification 字段有什么用处?
(1) 丢弃该数据报, 并将一个 ICMP 错误返回给源端
(2) 第一分片 DF=0; MF=1; Offset=0 第二分片 DF=0; MF=0; Offset=185
(3) 目的主机
(4) Identification 是标识字段, 相同的标识字段的值使分片后的各数据报片最后能正确地重装为原来的数据报。
(1) DF 属于 IP 数据报中的标志(Flag) 位, 其中标志位占 3 位, 目前只有 2 位有效。 标志字段中的最低位记为 MF, MF=1 即表示后面“还有分片” 的数据报。 MF=0 表示这已是若干数据报片中的最后一个。 标志字段中间的一位记为 DF, 意思是“不能分片”。 只有当 DF=0 时才允许分片。 如果该数据报 DF=1, 说明该数据报不能分片。 注意: 在 IP 层下面的每一种数据链路层都有自己的帧格式, 其中包括帧格式中的数据字段的最大长度, 这称为最大传送单元 MTU。 当一个数据报封装成链路层的帧时, 此数据报的总长度(即首部加上数据部分) 一定不能超过下面的数据链路层的 MTU 值。 以太网的最大 MTU 值为 1500字节。 所有路由器收到一个长度为 1520 字节的 IP 数据报, 如果该数据报 DF=1, 路由器直接丢弃。
(2) DF=0 的时候, 表示允许分片, 长度 1520 字节的 IP 数据报, 其中首部 20 字节+1500字节的数据部分。 分片的按照第一个分片尽量大的结果就是: 第一个分片: 1500 字节。 其中 20 字节的首部, 1480 的数据部分, MF=1, 表示还有分片, Offset 字段表示片漂移, 表示较长的分组在分片后, 某片在原分组中的相对位置。 也就是说, 相对用户数据字段的起点, 该片从何处开始。 片漂移以 8 各字节为偏移单位, 第一个分片的偏移字段为 0。 第二个分片: 40 字节。 其中 20 字节的首部。 20 字节的数据部分, MF=0, 表示后面没有分片, 片偏移字段是 1480/8=185。
(3) 这两个 IP 报文分片在目的主机被重新组装回拆分之前的 IP 数据报的状态。
(4) Identification 是标识字段, IP 软件在存储器中维持一个计数器, 每产生一个数据报, 计数器就加 1, 并将此值赋给标识字段, 但这个“标识” 并不是序号, 因为 IP 是无连接服务, 数据报不存在按序接收的问题。 当数据报由于长度超过网络的 MTU 而必须分片时, 这个标识字段的值就被复制到所有的数据报的标识字段中。 相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
同 IPv4 相比, IPv6 扩充了地址字段的长度。 但简化了 IP 基本报头。
(1) 为什么要做这样的简化?
(2) 下面列出 IPv4 报头的 5 个字段中, 哪些在 IPv6 基本报头中没有等价的字段?
Total Length, Identification, Fragment Offset, Time to Live, Header Checksum。
(1) 减少了需要检查和处理的字段的数i ,提高选路效率。
(2) 其 中 Identification, Fragment Offset, Header Checksum没有等价的字段。
(1) IPv6 的包头共有 8 个字段, 总长为 40 字节; 而 IPv4 的包头则包含至少 12 个字段, 长度在没有选项时为 20 字节, 有选项时达 60 字节。 IPv6 采用固定格式的包头减少了需要检查和处理的字段的数量, 提高选路效率。
(2) 在 IPv4 数据报格式中, Total Length 表示为数据报长度, Identification 表示标识字符, Fragment Offset 表示片偏移字段, Time to Live 表示生存时间, Header Checksum表示首部校验和。 其中 IPv6 中的 Payload Length 等价于 Total Length, Hop Limit 等价于 Time to Live。 其中 Identification, Fragment Offset, Header Checksum 没有等价的字段。
(1) TCP 报头的 SYN 比特和 FIN 比特分别起什么作用?
(2) 如果 TCP 接收方处理数据的速度很慢, 导致接收方的接收缓冲区满, 接收方通过 TCP报头的哪个字段通知发送方暂停数据发送?
(3) TCP 接收方收到发送方发来的多个报文, 根据 TCP 报头的哪个字段判断接收到的报文次序是否与发送方的发送次序相同?
(1) SYN: 该字段长度为i位。同步标志,SYN为1时,表示一个连接请求或连接接受。
FIN: 该字段长度为1位。释放连接标志,FW为1时,表明发送端的数据发送完毕,要求释放连接。
(2) Windows Size窗口字段。
(3) 确认号字段(Acknowledgment Number) 标识。
(1) TCP 报文包含 TCP 报头和 TCP 数据两部分, TCP 报文格式中: SYN: 该字段长度为 1 位。 同步标志, SYN 为 1 时, 表示一个连接请求或连接接收。 FIN: 该字段长度为 1位。 释放连接标志, FIN 为 1 时, 表明发送端的数据发送完毕, 要求释放连接。
(2) Windows Size 窗口字段: 该字段长度为 2 字节。 用来进行流量控制, 单位为字节, 这个值是本端期望一次接收的字节数, 并通知对方。
(3) TCP 使用 32 位的确认号字段( Acknowledgment Number) 标识期望收到的下一个字段的第一个字节, 并声明此前的所有数据已经正确无误地收到, 因此, 确认号应该是上次已成功收到的数据字节序列号加 1。 收到确认号的源计算机会知道待定的段已经被收到。 确认号的字段只在 ACK 标志被设置时才有效。