问题1-3

  1. 打开 Chrome 浏览器,先访问 http://gaia.cs.umass.edu/wireshark-labs/alice.txt
  2. 把页面上的文字(Alice in Wonderland)全部复制,保存到本机的一个文本文件,命名为 alice.txt
1
2
3
4
5
mkdir WS_tcp
cd WS_tcp
cat > alice.txt
# ctrl + d返回命令行
wireshark
  1. 网卡eth0,确认开始抓包,回到 Chrome,访问 http://gaia.cs.umass.edu/wireshark-labs/TCP-wireshark-file1.html
  2. 在页面中点击选择文件,选择刚刚新建的alice.txt,Upload,等待页面返回Confradulations
  3. 回到Wireshark,停止抓包
  4. 过滤器:http.request.method == POST,记一下编码(我的是No.230) (成功上传了)
  5. 点击No.230,查看Internet Protocol Version 4 Transmission Control Protocol
  6. 题目:
    1. 客户端计算机(源)用于传输文件到 gaia.cs.umass.edu 的 IP 地址和 TCP 端口号是什么?
      IP:192.168.178.162
      端口:40468
    2. gaia.cs.umass.edu 的 IP 地址是什么?它在哪个端口号上发送和接收此连接的 TCP 段?
      IP:128.119.245.12
      端口:80
    3. 你自己的客户端计算机用于传输文件到 gaia.cs.umass.edu 的 IP 地址和 TCP 端口号是什么?
      IP 地址:192.168.178.162
      TCP 端口号:40468

问题4

  1. 在过滤器输入 tcp.flags.syn == 1
  2. 找第一个Source 为你的主机ip destination为服务器地址的没有443的[SYN],点击并展开Transmission Control Protocol(No.87,stream index 7)
  3. 题目:
    序列号:0(相对序列号)
    SYN 标识: Flags 字段为 0x002 (SYN),Syn 标志置位

问题5

  1. 右键No.87,右键追踪流,找到包:源IP是 128.119.245.12,Info 显示 80 → 40468 [SYN, ACK] (No.90)
  2. 点击90,展开 Transmission Control Protocol
  3. 题目:
    序列号: 0(相对序列号)
    确认号: 1
    确定方式: 服务器将客户端 SYN 段的序列号(0)+ 1,表示期望接收的下一个字节序列号为 1
    标识: Flags 为 0x012 (SYN, ACK),SYN 和 ACK 同时置位

问题6

  1. 根据问题1-3截图知,HTTP POST 段的序列号:145074(相对序列号)

问题7-8

  1. 点击任意一个从客户端发往服务器的包
  2. 菜单栏 → 统计 → TCP 流图 → 往返时间图
  3. 过滤器:tcp.stream eq 7,找6个包算就行
  4. 题目:
    1. 第7题
      1 94 1 25.697074119 25.697234406 0.160 0.160
      2 95 698 25.697180161 25.697309750 0.130 0.156
      3 96 3618 25.697219428 25.697396461 0.177 0.159
      4 98 6538 25.697234406 25.697430000 0.196 0.163
      5 99 13538 25.697242324 25.697503808 0.261 0.176
      6 103 17082 25.697366939 25.697503808 0.137 0.171
    2. 第8题(TCP)长度:
      1 94 697
      2 95 2920
      3 96 2920
      4 98 7300
      5 99 1460
      6 103 2920

问题9

  1. 过滤器:tcp.stream eq 7
  2. 选择一个服务器发回的 ACK 包
  3. 展开 Transmission Control Protocol
  4. 看 Window 字段
  5. 浏览多个 ACK 包,找最小值
  6. 题目:
    最小可用缓冲区:21122 bytes
    是否限制发送方:没有,窗口从未接近 0,没有零窗口通告

问题10

  1. 过滤器:tcp.analysis.retransmission,结果为空
  2. 题目:
    是否有重传:没有
    检查依据: tcp.analysis.retransmission and ip.addr == 128.119.245.12 过滤结果为空,本连接无重传段

问题11

  1. 由前文知:
    1. 通常一次确认:2920 bytes(2 个 MSS 段,延迟确认机制)
    2. 每两个段 ACK 一次的实例:
      No.102(Ack=3618)确认了段2和段3
      No.105(Ack=6538)确认了段4的数据(部分)

问题12

  1. 过滤器:tcp.stream eq 7,最后5个包的info和时间
  2. 题目:
    总传输字节数: 149419 bytes(POST 包 Next Seq = 149420,减客户端初始 Seq 1)
    传输时间:
    开始:SYN 发送 = 25.426553195(No.87)
    结束:最后一个数据 ACK = 27.048695083(No.242,确认了全部数据)
    传输时间 = 27.048695083 − 25.426553195 = 1.622141888 s
    吞吐量:约 110540 bytes/s(约 0.88 Mbps)

问题13

  1. 点击 tcp.stream eq 7 中任意一个客户端发的包
  2. 菜单 → 统计 → TCP 流图 → 时间序列图(Stevens)
  3. 题目:
    从图上看:
    慢启动阶段: 0s ~ 约 0.3s
    曲线斜率由缓变陡,呈指数增长特征
    这段时间内拥塞窗口快速增大
    拥塞避免阶段: 约 0.3s 之后
    曲线斜率趋于稳定,呈线性增长
    每个 RTT 窗口增加约 1 个 MSS
    与理想化行为的差异:
    图形呈阶梯状而非平滑曲线——这是因为 TCP 发送是突发的,在收到 ACK 后一次性发出多个包
    慢启动和拥塞避免的过渡不明显,没有一个尖锐的拐点
    整个传输过程中没有丢包,因此没看到快速重传/快速恢复阶段
    Y 轴序列号在短时间内快速增长,说明整体网络状况良好

问题14

已在13中实现