计算机网络实验: 使用Wireshark抓包工具进行应用层和传输层网络协议分析(TCP部分)

在这一部分,我们通过与远程服务器之间发送 150KB 的文件来分析 TCP 数据包的发送和接收。研究内容包括:

  • TCP利用序列号和确认号来提供的可靠数据传输
  • TCP 拥塞控制算法中的慢启动和拥塞避免
  • TCP 协议的流控制策略
  • 如何建立 TCP 连接
  • TCP 连接的性能(吞吐量和往返时间)

具体步骤为:

  1. 抓取传输到远程服务器的 TCP 数据包
    a) 打开 web 浏览器,进入:
    http://gaia.cs.umass.edu/wireshark-labs/alice.txt
    复制这篇文章 Alice in Wonderland 到电脑。
    在这里插入图片描述
    直接复制文字到本地即可,也可以单击鼠标右键,选择“网页另存为”,保存txt文件。
    在这里插入图片描述
    b) 接下来访问:
    http://gaia.cs.umass.edu/wireshark-labs/TCP-wireshark-file1.html
    如下图:
    在这里插入图片描述
    接下来,点击“浏览”,选择在上一步中保存的txt文件,但不点击upload按钮。不要关闭浏览器。
    在这里插入图片描述
    c) 启动Wireshark,现在开始进行数据包捕获。然后在网络封包分析和数据包捕获选项页面点击“OK”。
    在这里插入图片描述
    d) 返回浏览器,点击“Upload alice.txt file”按钮来更新文件到服务器。一旦这个文件被更新,会有一条恭喜信息。
    在这里插入图片描述
    e) 现在停止网络封包分析和数据捕获。网络封包分析窗口如下所示:
    在这里插入图片描述
    在这里插入图片描述
    f) 很意外地,发现有52.114.77.164与168.63.202.111这两个IP地址的报文,干扰了我们的判断。对这部分问题的处理见如下链接:
    【解决方案】使用Wireshark工具抓取TCP数据包时为什么遇到了52.114.77.164与168.63.202.111?

    g) 再次启动Wireshark,尝试捕获报文。结果如下。
    在这里插入图片描述
    下图为实验指导书中给出的结果。
    在这里插入图片描述
    与实验指导书中给出的结果进行对比,二者一致,所有的TCP报文,源地址与目的地址只有192.168.0.101与128.119.245.12,前者为本机IP地址,后者为服务器IP地址,捕获成功。

  2. 分析建立 TCP 连接的过程。

    从捕获到的TCP报文入手,结合课程所学,进行分析。

    a) 根据课程所学,我们知道,TCP通过三次握手建立连接。

    步骤1:客户机向服务器发送 TCP SYN报文段
    · 指定初始序号
    · 没有数据
    步骤2:服务器收到SYN报文段, 用SYNACK报文段回复
    · 服务器为该连接分配缓冲区和变量
    · 指定服务器初始序号
    步骤3:客户机接收到 SYNACK, 用ACK报文段回复,可能包含数据

    具体过程如下图所示:
    在这里插入图片描述
    b) 下面分析捕获的报文。在捕获到的报文段中,可以看到非常明显的三次握手过程,即前三行:
    在这里插入图片描述
    观察第一个报文段为客户端向服务器发送的请求报文的内容,客户端端口为1412,服务器端口为80。这一报文的SYN=1, Seq=0,Len=0,表明该请求无数据,为连接请求。
    在这里插入图片描述
    第二个报文段是服务器向客户端发送的确认报文段, SYN=1,seq=0,ACK number=1,也就是期望下一段的Seq为1。服务器响应了来自主机1412端口的连接请求,向主机发送一个确认报文。该报文内容如下图所示。
    在这里插入图片描述
    第三个报文段是客户端向服务器发送的确认报文段。该报文段的Seq=1,与上一个报文段的 ACK number=1相对应。该报文段的ACK number=1,也就是期望下一段的Seq为1。该报文内容如下图所示:
    在这里插入图片描述
    在完成三次握手建立连接之后,便进行数据传输。

  3. 根据抓取的数据结果,分析 TCP 的基本结构和内容。
    以下图所示的TCP报文为例:
    在这里插入图片描述
    Source Port:源端口号,这里是1113
    Destination Port:目的端口号,这里是80
    Sequence Number:序号,relative为相对序号,raw为真实序号
    Acknowledgement number:确认号,与序号相同,有绝对与相对之分
    Header Length:首部长度,这里为20字节
    Flags:标志位,包括Syn、Fin等
    Window size value:窗口大小
    Checksum:检查和
    Urgent Pointer:紧急指针

  4. TCP 拥塞控制分析:
    a) 在网络封包分析的“listing of captured-packets”窗口中选一个TCP段,然后选择Statistics->TCP Stream Graph-> Time-Sequence-Graph(Stevens)
    在这里插入图片描述
    b) 可以看到一个类似下面的情形
    在这里插入图片描述
    c) 使用 Time-Sequence-Graph(Stevens)绘图工具查看 TCP 数据段的时序图,找出TCP 慢启动的开始和结束以及拥塞避免阶段。
    i. 首先,需要读懂TCP流图形的横纵座标的含义。
    a. 横座标:时间序列
    b. 纵座标:受监控的TCP流在某个方向所传数据的字节流
    ii. 综上,可以得出结论:
    a. TCP流图形用于表示在单位时间内,受监控的TCP流在某个方向所传数据的字节流。
    b. 斜线的斜率越大,表示文件的传输速率越高,反之,文件传输缓慢。
    iii. 首先回顾一下拥塞避免:
    在这里插入图片描述
    iv. 结合以上两图,发现TCP流图中没有拥塞避免的阶段。0.9s左右速度骤减,推测原因出自网络状态不稳定。在慢启动还没有结束时,便已经上传完成了文件。慢启动对应成倍增加速率,拥塞控制对应线性增加速率。
    d) 如何加大数据量,会怎样呢?加大数据量,重复上述步骤,结果如下。
    在这里插入图片描述
    红框内为拥塞避免阶段,观察到每个RTT内,线性增加速率。同时观察到重传现象。慢启动过程与拥塞避免符合我们之前的分析。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41112170/article/details/106546348

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章