TCP

实验四

TCP是什么?

​ 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。——百度百科

1.捕获从计算机到远程服务器的批量 TCP 传输

​ 1.在电脑上保存ASCII档案文件

image.png

​ 2. 打开 http://gaia.cs.umass.edu/wireshark-labs/TCP-wireshark-file1.html

image.png

​ 3.开始捕获,上传文件。

image.png

image.png

​ 可以看到计算机和 gaia.cs.umass.edu 的初始三次握手

image-20211025191651638

​ 将文件传输到 gaia.cs.umass.edu 的客户计算机使用的 IP 地址是:192.168.84.71

​ TCP 端口号码是:50231

​ gaia.cs.umass.edu 的 IP 地址是:128.119.245.12,在80端口号上发送和接收此连接的 TCP 区段

TCP Basics

​ 我们关注 TCP 而不是 HTTP,因此更改 Wireshark 的“捕获数据包列表”视窗,以显示有关包含 HTTP 讯息的 TCP 区段的信息。Wireshark 执行此操作,选择 Analyze-> Enabled Protocols。

image.png

​ 用于在客户端计算机和 gaia.cs.umass.edu 之间启动 TCP 连接的 TCP SYN 区段的序列号是 0

​ 将区段标识为 SYN 区段的区段功能是开始三次握手,主机发送 SYN 请求服务器建立连接,这是三次握手第一步

​ gaia.cs.umass.edu 发送给客户端计算机以回复 SYN 的 SYNACK 区段的序列号是 0,ACK是 1

​ ACK字段用于表示确认字段中的值是有效的,功能是说明服务器成功接收了我们发出的连接请求,并发送SYN-ACK确认报文

image.png

​ 包含 HTTP POST 命令的 TCP 区段的序列号是 1,其中 PSH 表示有数据传输


​ 将包含 HTTP POST 的 TCP 区段视为 TCP 连接中的第一个区段。前六个 TCP 区段的长度是多少?在这个 TCP 连线中前 6 个 TCP 区段的序列号是什么(包括包含 HTTP POST 的段)?每区段发送的时间是什么时候?收到的每个区段的 ACK 是什么时候?鉴于发送每个 TCP 区段的时间与收到确认的时间之间的差异,六个区段中每个区段的 RTT 值是多少?收到每个 ACK 后,EstimatedRTT 值是什么?假设第一个 EstimatedRTT 的值等于第一个区段的测量 RTT。

  • EstimatedRTT 运算公式
1
EstimatedRTT = (1 - a) × EstimatedRTT + a × SampleRTT

1.区段一

image.png

​ 长度:749

​ 序列号:1

​ 发送时间:Oct 25, 2021 19:02:29.995963000

​ RTT:

2.区段二

image.png

​ 长度:1370

​ 序列号:16630

​ 发送时间:Oct 25, 2021 19:02:31.432825000

​ RTT:

3.区段三

image.png

​ 长度:1370

​ 序列号:32260

​ 发送时间:Oct 25, 2021 19:02:32.667493000

​ RTT:

4.区段四

image.png

​ 长度:1370

​ 序列号:48700

​ 发送时间:Oct 25, 2021 19:02:33.271935000

​ RTT:

5.区段五

image.png

​ 长度:1370

​ 序列号:65140

​ 发送时间:Oct 25, 2021 19:02:33.538223000

​ RTT:

6.区段六

image.png

​ 长度:1370

​ 序列号:81580

​ 发送时间:Oct 25, 2021 19:02:33.784999000

​ RTT:

image.png

​ 对于服务器而言,收到的最小可用缓冲区空间量为 131328

​ 对于主机而言,收到的最小可用缓冲区空间量为 29200

​ 缺少接收器缓冲区空间会限制发送方传送 TCP 区段,这是因为 TCP 的流量控制服务,能够消除发送方使接收方缓存溢出的可能性,使得发送方的发送速率与接收方应用程序的读取速率相匹配。

image.png

​ 从中可以看出跟踪文件中有重传的区段。

​ 接收器通常在 ACK 中确认多少数据?是否可以识别接收方每隔一个接收到的区段才发送确认的情况?(I don’t know)

​ TCP 连接的吞吐量(每单位时间传输字节数)是多少?如何计算这个值?

​ 平均吞吐量 = 传输数据的比特数 F ÷ 接收方接收所有数据所用时间 T

TCP拥塞控制

image.png

​ 每个点代表一个发送的 TCP 区段,绘制区段的序列号与发送的时间,堆叠在一起的一组点表示发送方背靠背发送的一系列数据包。使用时序图(Stevens)查看从客户端发送到 gaia.cs.umass.edu 服务器的区段的序列号与时间关系图。您能否确定 TCP 的慢启动阶段的开始和结束位置,以及拥塞避免接管的位置?