第一次实验:Protocol Layers
- 捕获跟踪
- *Pick a URL and fetch it with* wget *or* curl*.*
- 检查跟踪
- 数据包结构
- 协议开销
- 复用密钥
- *Which Ethernet header field is the demultiplexing key that tells it the next higher layer is IP?*
- *Which IP header field is the demultiplexing key that tells it the next higher layer is TCP? What*
- **Explore on your own**
- 不携带高层数据的短TCP数据包的作用
- 服务器响应的数据包中第一个包和最后一个包有什么不同
- 底层加密如何实现
- 下层增加压缩的变化
捕获跟踪
Pick a URL and fetch it with wget or curl*.*
捕获结果如下
检查跟踪
协议为HTTP,是一个GET
另一个数据包,信息字段中有“200 OK”
数据包结构
- Ethernet占用14字节
- IP占用20字节
- TCP占用20字节
- HTTP占用156字节
Ethernet | IP | TCP | HTTP |
---|---|---|---|
14B | 20B | 20B | 156B |
Ethernet Header | Ethernet Payload | Ethernet Payload | Ethernet Payload |
IP Header | IP Payload | IP Payload |
协议开销
有效开销为 156 156 156B
协议开销:
66 + 54 + 210 − 156 + 60 = 234 B 66 + 54 + 210 - 156 + 60 = 234B 66+54+210−156+60=234B
有效信息占比为
156 / 390 = 40 % 156/390 = 40\% 156/390=40%
由此可知协议开销很大。
复用密钥
Which Ethernet header field is the demultiplexing key that tells it the next higher layer is IP?
Ethernet报头字段是 Type
,对应取值为 0x0800
Which IP header field is the demultiplexing key that tells it the next higher layer is TCP? What
IP包头字段是 Protocol
,对应取值为 6
Explore on your own
不携带高层数据的短TCP数据包的作用
在三次握手协议中,需要客户端先发送TCP-服务器发回确认-客户端再次确认,这些数据包都是不含高层数据的短TCP。以上图中的TCP为例,为第三次握手。
服务器响应的数据包中第一个包和最后一个包有什么不同
- 第一个包通常包含响应的 HTTP 头部,而最后一个包则包含 HTTP 实体的最后一部分或者完整的实体。
- 第一个包和最后一个包的序列号和确认号(sequence number and acknowledgment number)也会不同,因为它们传输的是不同的数据。
底层加密如何实现
如果底层添加了加密,则底层将在从高层传递下来的消息中添加一个新的消息头(用于加密和解密),并将该消息传递到下一层。这意味着每个底层消息不再仅仅是一个被修改的高层消息,而是一个新的被加密的消息。这可能会导致下层消息的数量增加,因为一条高层消息可能需要多个被加密的消息来传输。这也使得协议分析和网络分析更加复杂。除此之外,密钥不应进行传输,而应与接收方协商防止加密失效。
下层增加压缩的变化
下层会将头附加到从高层传递下来的消息中,因此如果下层增加了压缩,该模型会发生变化。具体来说,在下层增加了压缩后,下层接收到来自高层的消息时,会将其压缩后附加头部,然后将消息和头部作为一个新的消息传递到下一层。在接收端,下层会解压消息并去除头部,然后将解压后的消息传递到上层。因此,压缩的添加会导致消息在传递过程中被改变,但整个分层模型的基本结构不会发生改变。