主机 H 通过快速以太网连接 Internet,IP 地址为 192.168.0.8,服务器 S 的 IP 地址为 211.68.71.80。H 与 S 使用 TCP 通信时,在 H 上捕获的其中 5 个 IP 分组如题 47-a 表所示。
题 47-a 表
请回答下列问题。
(1) 题 47-a 表中的 IP 分组中,哪几个是由 H 发送的?哪几个完成了 TCP 连接建立过程?哪几个在通过快速以太网传输时进行了填充?
(2) 根据题 47-a 表中的 IP 分组,分析 S 已经收到的应用层数据字节数是多少?
(3) 若题 47-a 表中的某个 IP 分组在 S 发出时的前 40 字节如题 47-b 表所示,则该 IP 分组到达 H 时经过了多少个路由器?
题 47-b 表
注:IP 分组头和 TCP 段头结构分别如题 47-a 图,题 47-b 图所示。
完整标注本题中所有 IP 分组中的...
用户登录可进行刷题及查看答案
完整标注本题中所有 IP 分组中的各个字段如下:
完整分析 IP 分组头字段如下:
版本:占 4 bit,因为是 IPv4,对应十六进制值为 4 H。本题中所有 IP 分组中该字段均为 4 H。
头部长度:占 4 bit,表示 IP 数据报首部长度,取值以 4 B 为单位,最小长度 20 B,对应十六进制值为 5 H。本题中所有 IP 分组中该字段均为 5 H。
服务类型:占 8 bit,用于表示数据包的优先级,不同数值可提供不同等级的服务质量,一般情况下不使用,默认值为 0,对应十六进制值为 00 H。本题中所有 IP 分组中该字段均为 00 H。
总长度:占 16 bit,IP 数据报总长度 = 头部长度 + 数据载荷长度,取值以 1 B 为单位。
标识:占 16 bit,用于唯一标识主机发送的每一个 IP 包,每发送一个包其值就会加1。当 IPv4 数据报长度超过 MTU 时,无法封装成帧,必须进行分片,属于同一个数据报的各分片有相同的标识。
标志:占 3 bit,其中
片偏移:占 13 bit,取值以 8 B 为单位,指出分片诗句的数据载荷部分偏移其原数据报位置有多少个单位。
生存时间 (TTL):占 8 bit,设置数据包可以经过的路由器数目。每经过一个路由器,TTL 值就会减 1,当该字段值为 0 时,数据包将被丢弃。
协议:占 8 bit,此分组数据提供给哪个传输层协议。常用 IP 协议号对应的上层协议如下:
上层协议 | 协议号 | 协议号(十六进制表示) |
---|---|---|
ICMP | 1 | 01 |
IGMP | 2 | 02 |
TCP | 6 | 06 |
UDP | 17 | 11 |
IPv6 | 41 | 29 |
OSPF | 89 | 59 |
本题中,所有 IP 分组中该字段均为 06 H。上层协议为 TCP 协议。
头部校验和:占 16 bit,用于检验 IP 头部是否损坏,数据的可靠性是由 TCP 保证的。
源 IP 地址:占 32 bit,数据包的源节点的 IP 地址。
目的 IP 地址:占 32 bit,数据包的目的点的 IP 地址。
完整分析 TCP 段头字段如下:
源端口:占 16 bit,发送端的应用程序端口号。
目标端口:占 16 bit,接收端的应用程序端口号。
序号 (seq):占 32 bit,TCP 报文段数据载荷第一个字节的序号,以确保接收方能够按正确的顺序重新组装。
确认号 (ack):占 32 bit,只有在 ACK 标志位被设置为 1 时才有效,表示接收端期望收到的下一个字节的序号。
数据偏移:占 4 bit,以 4 B 为单位,表示 TCP 报文段数据载荷的起始处与 TCP 报文段的起始处的距离。实际上指出了 TCP 报文段头的长度。
保留:占 6 bit,保留供将来使用,目前应设置为 0。
控制位:占 6 bit,总共 6 个标志位,每个各占 1 bit,用于指示TCP报文段的各种控制信息。
窗口:占 16 bit,指定发送端希望接收端为此连接分配的接收窗口大小。
校验和:占 16 bit,用于检测 TCP 报文段是否在传输过程中发生错误。
紧急指针:占 16 bit,只有在 URG 标志位被设置为1时才有效。指示紧急数据的边界。
我们可以根据问题来寻找相应的字段进行分析。
(1) 第一问。H 的 IP 地址为 192.168.0.8,由 H 发送的 IP 分组的源 IP 地址字段值为 c0 a8 00 08 H。
查看 1~5 号 IP 分组的源 IP 地址:
编号 | 字段值 | 源 IP 地址 | 源网络结点 |
---|---|---|---|
1 | c0 a8 00 08 H | 192.168.0.8 | 主机 H |
2 | d3 44 57 50 H | 211.68.71.8 | 服务器 S |
3 | c0 a8 00 08 H | 192.168.0.8 | 主机 H |
4 | c0 a8 00 08 H | 192.168.0.8 | 主机 H |
5 | d3 44 57 50 H | 211.68.71.8 | 服务器 S |
1、3、4 号 IP 分组满足要求,因此 1、3、4 号 IP 分组是由 H 发送的。
第二问。TCP 建立三次握手的示意图如下:
由于题目没有明确表示 1~5 号 IP 分组是明确按照时间顺序给出的,因此需要进行严格分析。
线索一:ACK 和 SYN
编号 | 保留字段拼接控制字段 | 二进制表示 | ACK | SYN |
---|---|---|---|---|
1 | 002 H | 0000 0000 0010 | 0 | 1 |
2 | 012 H | 0000 0001 0010 | 1 | 1 |
3 | 010 H | 0000 0001 0000 | 1 | 0 |
4 | 018 H | 0000 0001 1000 | 1 | 0 |
5 | 010 H | 0000 0001 0000 | 1 | 0 |
可以初步确定 1 号 IP 分组的 TCP 报文段为第一次握手。2 号 IP 分组的 TCP 报文段为第二次握手。3 号或 4 号或 5 号 IP 分组的 TCP 报文段为第三次握手。
线索二:源 IP 地址、目的 IP 地址和标识
源 IP 地址:
编号 | 字段值 | 源 IP 地址 | 源网络结点 |
---|---|---|---|
1 | c0 a8 00 08 H | 192.168.0.8 | 主机 H |
2 | d3 44 57 50 H | 211.68.71.8 | 服务器 S |
3 | c0 a8 00 08 H | 192.168.0.8 | 主机 H |
4 | c0 a8 00 08 H | 192.168.0.8 | 主机 H |
5 | d3 44 57 50 H | 211.68.71.8 | 服务器 S |
目的 IP 地址:
编号 | 字段值 | 目的 IP 地址 | 目的网络结点 |
---|---|---|---|
1 | d3 44 57 50 H | 211.68.71.8 | 服务器 S |
2 | c0 a8 00 08 H | 192.168.0.8 | 主机 H |
3 | d3 44 57 50 H | 211.68.71.8 | 服务器 S |
4 | d3 44 57 50 H | 211.68.71.8 | 服务器 S |
5 | c0 a8 00 08 H | 192.168.0.8 | 主机 H |
1、3、4 号 IP 分组为主机 H 发送给服务器 S 的报文,2、5 号 IP 分组为服务器 S 发送给主机 H 的报文。
标识:每发送一个包标识值就会加 1。
编号 | 字段值 |
---|---|
1 | 019b H |
2 | 0000 H |
3 | 019c H |
4 | 019d H |
5 | 6811 H |
1号、3号、4号标识 019b H、019c H、019d H 连续。为主机 H 连续发出的三个 IP 包。
因为 1 号 IP 分组的 TCP 报文段为第一次握手,所以 3 号 IP 分组的 TCP 报文段为第三次握手。
线索三:序号 (seq) 和确认号 (ack)
序号 (seq):
编号 | 字段值 |
---|---|
1 | 84 6b 41 c5 H |
2 | e0 59 9f ef H |
3 | 84 6b 41 c6 H |
4 | 84 6b 41 c6 H |
5 | e0 59 9f f0 H |
确认号 (ack):
编号 | 字段值 |
---|---|
1 | 00 00 00 00 H |
2 | 84 6b 41 c6 H |
3 | e0 59 9f f0 H |
4 | e0 59 9f f0 H |
5 | 84 6b 41 d6 H |
查出 1、2、3 号 IP 分组的 TCP 报文段的序号 (seq) 和确认号 (ack) 字段:
联立得方程组:
解得 x = 84 6b 41 c5 H 和 y = e0 59 9f ef H,满足要求。
综上所述,1、2、3 号 IP 分组完成了 TCP 连接建立过程。
当然,可猜测这道题 1~5 号 IP 分组是按照时间顺序给出的(实际上命题组为了降低难度也是这么出题的),必须先建立 TCP 连接再传输应用层数据, 因此 1、2、3 号 IP 分组完成了 TCP 连接建立过程。
第三问。以太网数据帧的格式如下:
以太网最小帧长 64 字节,其中数据载荷最小长度为 46 字节。本题中,以太网帧数据载荷就是 IP 分组,若 IP 分组的长度小于 46 字节,就需要进行填充。
读取 IP 分组的总长度字段:
编号 | 字段值 | IP 数据报总长度 |
---|---|---|
1 | 0030 H | 48 字节 |
2 | 0030 H | 48 字节 |
3 | 0028 H | 40 字节 |
4 | 0038 H | 56 字节 |
5 | 0028 H | 40 字节 |
其中 3 和 5 号 IP 数据报总长度小于 46 字节,需要进行填充。
(2) 由 (1) 的分析,3、4 号 IP 分组为主机 H 发送给服务器 S 的报文,5 号 IP 分组为服务器 S 发送给主机 H 的报文。因为 4 号 IP 分组的标识紧接着 3 号 IP 分组的标识,所以 4 号 IP 分组的 TCP 报文段为发送方发送应用层数据的第一个TCP 报文段,5 号 IP 分组的 TCP 报文段的序号 (seq) 等于 4 号 IP 分组的 TCP 报文段确认号 (ack),所以 5 号 IP 分组的 TCP 报文段是对 4 号 IP 分组的 TCP 报文段的回复,是1~5 号 IP 分组的 TCP 报文段的最后一个报文段。
到此,1~5号报文的关系已经全部梳理完毕,1~3 号 IP 分组的 TCP 报文段为建立 TCP 连接的三次握手的 TCP 报文段, 4 号 IP 分组的 TCP 报文段为发送方发送应用层数据的第一个TCP 报文段,5 号 IP 分组的 TCP 报文段为接收方对发送方发送应用层数据的第一个TCP 报文段的确认 TCP 报文段。
建立 TCP 连接的三次握手的 TCP 报文段默认不会携带任何应用层数据,因为在建立过程中传输应用层数据可能是不安全的,TCP 连接建立完成后,才开始正式传输应用层数据。3 号 IP 分组的 TCP 报文段的序号 (seq) 为 84 6b 41 c6 H,表示发送方准备发送的应用层数据的字节号为 84 6b 41 c6 H,4 号 IP 分组的 TCP 报文段的序号 (seq) 仍为 84 6b 41 c6 H,表示发送方正式开始发送以字节号为 84 6b 41 c6 H 起始字节号的应用层数据,5 号 IP 分组的 TCP 报文段的确认号 (ack) 84 6b 41 d6 H,即希望主机 H 发送的下一个字节号,可计算出 S 已经收到的应用层数据字节数是 84 6b 41 d6 H - 84 6b 41 c6 H = 10 H = 16。
评:如果题目加大难度,1 ~ 5 号中发送方的 IP 分组不是连续的,比如 4 号 IP 分组的 TCP 报文段不是发送方发送给接收方的第一个包含应用层数据的 TCP 报文段。或者 1~5 号 IP 分组不是按照时间顺序给出,也要能够通过分析 IP 头和 TCP 头字段梳理出相互关系和正确顺序。
(3) 查询标识字段:
编号 | 字段值 |
---|---|
题 47-a 表 1 | 019b H |
题 47-a 表 2 | 0000 H |
题 47-a 表 3 | 019c H |
题 47-a 表 4 | 019d H |
题 47-a 表 5 | 6811 H |
题 47-b 表 S 发出的 IP 分组 | 6811 H |
5 号和该 IP 分组均由服务器 S 发出且标识均为 6811 H,所以该 IP 分组对应题 47-a 表中的 5 号 IP 分组。两者为同一个 IP 分组在传输路径上的不同路段上的 IP 分组内容。
读取 IP 分组的 TTL 字段:
编号 | 字段值 | TTL |
---|---|---|
题 47-a 表 5 | 31 H | 49 |
题 47-b 表 S 发出的 IP 分组 | 40 H | 64 |
该 IP 分组从 S 发出时 TTL 为 40 H = 64,5 号 IP 分组的目的 IP 地址为主机 H 的 IP 地址且是在主机 H 上捕获的,表示该 IP 分组此时到达主机 H,此时 TTL 为 31 H = 49。因为该 IP 分组在传输路径上传输时每经过一个路由器 TTL 减少 1,所以该 IP 分组到达 H 时经过的路由器数量为 64 - 49 = 15。
登录后提交答案
暂无评论,来抢沙发