实验0:http抓包跟踪/流传输时间/tcp慢启动

wget www.baidu.com 抓包分析

0.环境ubuntu+mininet+xterm+wireshark:mininet建立基本拓扑,h1-s1-h2,xterm打开h1的命令行,配置dns,wireshark &,wget www.baidu.com,观察抓到的包

Screenshot from 2020-04-05 22-33-21.png

  1. 先是两个ARP包:h1发送⼴广播包查询⽹网关(10.0.0.3,就是路路由器器s1)的mac地址,10.0.0.3收到后响应,返回⾃自⼰己的mac地址

  2. 四个DNS包:10.0.0.1(就是h1)向dns(8.8.8.8)发送两个查询包,A和AAAA记录分别 查询www.baidu.com的ipv4和ipv6地址,dns收到后返回两个响应包

  3. TCP和HTTP:

  • 三次握⼿:双⽅方确定序列列号,建⽴立连接
  • h1发送http请求,baidu服务器器发回确认包和响应(分成了两个,包18和20,后来重组到了20里),h1收到后发送 确认消息(两个包分两次确认)
  • 四次挥⼿手断开tcp连接
  1. 最后是两个ARP包:路由器器s1查询h1的mac地址

卡住的点:

1. http响应分了两个包,分段和重组的机制花了好久才搞明白

  1. 在最后重组得到的http包中有TCP segment of a reassembled PDU信息,可以看到由哪几个分段组成
  2. 这个分段和重组是http协议封装的:

TCP本身没有分段的概念,它的sequence number和acknowledge number 是使TCP是基于流的协议的支撑
TCP segment of a reassembled PDU的出现是因为Wireshark分析了其上层的HTTP协议而给出的摘要,如果配置Wireshark不支持HTTP协议解析,这个信息就没有了
参见:https://www.cnblogs.com/yinghao-liu/p/7532889.html

2. DNS查询发了两个包,A和AAAA,是不同记录

每个域名下可配置多个记录(可以理解为不同的记录返回不同的查询结果),包括ipv4,ipv6,别名等
在查询的时候加上不同记录类型,可以得到一域名(可能)不同的解析结果
参见:https://itbilu.com/other/relate/EyxzdVl3.html

流完成时间

  1. python配置带宽和延迟,创建拓扑,h2上dd不同大小的文件,h1上wget,观察时间
  2. 不知道为什么有时候达不到最佳(明明拓扑很简单也没有拥塞
  3. 实验现象:
    实际传输速率会随着带宽的增加⽽增加,文件越大,速率变化与带宽变化越趋近于正⽐比关系
    对于较⼩小的⽂文件,当带宽增加到⼀一定程度,实际传输速率保持稳定不不再增加

    是由于:TCP的慢启动机制
    拥塞窗⼝cwnd:TCP的真正的发送窗口=min(rwnd, cwnd)
    当新建连接时,cwnd初始化为1个最大报⽂文段(MSS)⼤小,发送端开始按照拥塞窗口⼤小发送数据,每当有一个报文段被确认,cwnd就增加1个MSS⼤小。这样cwnd的值就随着⽹网络往返时间 (Round Trip Time,RTT)呈指数级增⻓长
    由于慢启动机制,在开始阶段会有一段低速传输阶段,从⽽限制了⼩文件传输速率的上限。也因此,⽂件越⼤大,传输速率随带宽增加的越明显。
  4. 关于画这个图:


    Screen Shot 2020-04-08 at 3.59.46 PM.png

在nunbers中,用散点图,指定每条线的数据范围就好,通过修改数据点样式可以换ui和连线

你可能感兴趣的:(实验0:http抓包跟踪/流传输时间/tcp慢启动)