根据以太网数据帧结构和 IP 分组...
根据以太网数据帧结构和 IP 分组头结构,将以太网数据帧中的各个字段标出。如下图所示。

完整分析所有 IP 字段如下:
版本:占 4 bit,因为是 IPv4,对应十六进制值为 4 H。本题中为 4 H。
头部长度:占 4 bit,表示 IP 数据报首部长度,取值以 4 B 为单位,最小长度 20 B,对应十六进制值为 5 H。本题中为 5 H。
服务类型:占 8 bit,用于表示数据包的优先级,不同数值可提供不同等级的服务质量,一般情况下不使用,默认值为 0,对应十六进制值为 00 H。本题中为 00 H。
总长度:占 16 bit,IP 数据报总长度 = 头部长度 + 数据载荷长度,取值以 1 B 为单位,最大传送单元 MTU = 1500 B,总长度不超过 MTU。本题中为 01ef H。即 IP 数据报总长度为 495 B。
标识:占 16 bit,用于唯一标识主机发送的每一个IP包,每发送一个包其值就会加1。当 IPv4 数据报长度超过 MTU 时,无法封装成帧,必须进行分片,属于同一个数据报的各分片有相同的标识。本题中为 113b H。
标志:占 3 bit,从左到右依次为
- 保留位:占 1 bit,为 0。
- DF (Don’t Fragment):占 1 bit,1 表示不允许分片,0 表示允许分片。
- MF (More Fragment):占 1 bit,1 表示后面还有分片,0 表示这是最后一个分片。
片偏移:占 13 bit,取值以 8 B 为单位,指出分片数据的数据载荷部分偏移其原数据报位置有多少个单位。
本题中,标志和片偏移拼接为 4000 H,二进制为 0100 0000 0000 0000 B,标志二进制为 010 B,其中保留位为 0,DF 为 1,表示不允许分片,MF 为 0,表示这是最后一个分片。片偏移二进制为 0 0000 0000 0000 B,即为 0。因为没有分片,所以不会产生片偏移。
生存时间 (TTL):占 8 bit,设置数据包可以经过的路由器数目。每经过一个路由器,TTL 值就会减1,当该字段值为 0 时,数据包将被丢弃。本题中为 80 H。
协议:占 8 bit,此分组数据提供给哪个传输层协议。常用 IP 协议号对应的上层协议如下:
上层协议 |
协议号 |
协议号(十六进制表示) |
ICMP |
1 |
01 |
IGMP |
2 |
02 |
TCP |
6 |
06 |
UDP |
17 |
11 |
IPv6 |
41 |
29 |
OSPF |
89 |
59 |
本题中为 06 H。上层协议为 TCP 协议,HTTP 协议是基于 TCP 协议的。
头部校验和:占 16 bit,用于检验 IP 头部是否损坏,数据的可靠性是由 TCP 保证的。本题中为 ba9d H。
源 IP 地址:占 32 bit,数据包的源节点的 IP 地址。本题中为 0a028064 H。点分十进制格式为 10.2.128.100。
目的 IP 地址:占 32 bit,数据包的目的点的 IP 地址。本题中为 40aa6220 H。点分十进制格式为 64.170.98.32。
(1) 第一问。因为题 47-b 图是该主机进行 Web 请求的以太网数据帧内容,所以 Web 服务器的 IP 地址位于 IP 头部的目的 IP 地址字段,16进制格式为 40 aa 62 20,转化为点分十进制格式为 64.170.98.32。
第二问。根据网络拓扑图可知,该主机的默认网关是路由器 R,分析数据链路,主机会将 Web 请求发送给默认网关,再由默认网关将 Web 请求转发给 Web 服务器。所以以太网帧的目的 MAC 地址 00-21-27-21-51-ee 即为该主机的默认网关的 MAC 地址。
(2) 已知目的 IP 地址,但不知道目的 MAC 地址,需要使用 ARP 协议确定目的 MAC 地址。因为 ARP 协议请求报文需要进行广播,最后路由器返回 ARP 单播响应得到目的 MAC 地址。所以封装 ARP 协议请求报文的以太网数据帧的目的 MAC 地址是 ff-ff-ff-ff-ff-ff。
(3) HTTP/1.1 协议与 HTTP/1.0 相比有了一些重要的改进,其中包括持续连接的引入。持续连接允许客户端和服务器之间的单个TCP连接传输多个 HTTP 请求和响应,而无需为每个请求/响应对创建新的连接。这样可以减少连接的建立和关闭所带来的开销,并且可以更有效地利用网络资源。在 HTTP/1.1 中,默认情况下使用持续连接,除非在请求头中显式指定 Connection: close 来关闭连接。这与 HTTP/1.0 不同,后者在每个请求/响应后都会关闭连接。
非流水线方式指每一个请求需要等待其对应的响应返回之后,才能发送下一个请求。换句话说,当使用非流水线方式时,客户端发送一个请求后需要等待服务器返回相应的响应后才能发送下一个请求,而不会同时发送多个请求。
HTTP 是基于 TCP 的应用层协议。
TCP 头结构如下图所示:

根据以太网数据帧结构、IP 分组头和 TCP 头的结构,将以太网数据帧中的各个字段标出。如下图所示。

完整分析 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报文段的各种控制信息。从左到右依次为
- URG:表示紧急指针字段是否有效。
- ACK:表示确认号字段是否有效。
- PSH:表示接收端是否应该尽快将数据交给应用程序。
- PST:表示是否需要重置连接。
- SYN:在建立 TCP 连接时用来同步请求。
- FIN:在释放 TCP 连接时用于关闭连接。
窗口:占 16 bit,指定发送端希望接收端为此连接分配的接收窗口大小。
校验和:占 16 bit,用于检测 TCP 报文段是否在传输过程中发生错误。
紧急指针:占 16 bit,只有在 URG 标志位被设置为1时才有效。指示紧急数据的边界。
TCP 建立三次握手的示意图如下:

本题中,保留和控制位内容为 018 H =
,其中 ACK = 1,SYN = 0。
若该报文是 TCP 的第一次握手,则其中 ACK = 0,SYN = 1,所以该报文不是 TCP 的第一次握手。
若该报文是 TCP 的第二次握手,则其中 ACK = 1,SYN = 1,所以该报文不是 TCP 的第二次握手。
所以该报文是 TCP 的第三次握手或者 TCP 已经建立完成后发送的,因此无需考虑建立 TCP 的一个 RTT 的开销。
HTTP/1.1 协议以持续的非流水线方式工作,每个 RTT 传输一个对象,共需传输 6 个对象(1 个 html 页面引用了 5 个 JPEG 小图像),所以共需要 6 个 RTT。
(4)
方法一:读取 IP 头总长度字段
因为该帧中 IP 头总长度字段为 01ef H,单位字节,即 495 B,说明 IP 数据报总长度为 495 B,即以太网帧的数据载荷为 495 B,小于 MTU=1500 B,所以该帧所封装的 IP 分组经过路由器 R 转发时,不需要进行分片。
方法二:读取 IP 头标志字段
标志和片偏移拼接为 4000 H,即 0100 0000 0000 0000 B,标志为 010 B,其中保留位为 0,DF 为 1,表示不允许分片,MF 为 0,表示这是最后一个分片。不允许分片蕴含 IP 数据报总长度不超过 MTU,所以该帧所封装的 IP 分组经过路由器 R 转发时,不需要进行分片。
修改 IP 分组头中的字段如下:
源 IP 地址:由主机的 IP 地址 10.2.128.100 修改为路由器 R 连接 Internet 的接口的 IP 地址 101.12.123.15。
生存时间 (TTL):IP 分组每经过一个路由器,生存时间 TTL 字段的值就减 1,由 80 H 修改为 7F H。
首部校验和:由于上述字段发生改变,因此需要重新计算首部校验和。
登录后提交答案