[关闭]
@SovietPower 2022-05-18T04:53:46.000000Z 字数 1996 阅读 879

计算机网络 实验6 TCP

CN



https://zybuluo.com/SovietPower/note/1969519


实验内容

捕获TCP包

Wireshark中,选择捕获选项,选择连接的网络,关闭混杂模式,设置过滤器tcp port 80,开始。
wget www.baidu.com发送请求,当wget结束时停止捕获。
结果:

分析TCP包

画出TCP数据段的结构

TCP链接建立

TCP握手的三个数据包

因为网络状况不好,所以会有 Retransmission(超时重传)、Ord-of-Order(网络拥塞,导致顺序包抵达时间不同)、DUP ACK(重复应答)。

画出三次握手协议的步骤图

观察TCP数据段中的Options字段
前两次握手都设置了Options:MSS、NOP、Window scale、NOP、NOP、SACK permitted。
以第一次的为例:

  1. Options: (12 bytes), Maximum segment size, No-Operation (NOP), Window scale, No-Operation (NOP), No-Operation (NOP), SACK permitted
  2. TCP Option - Maximum segment size: 1460 bytes
  3. TCP Option - No-Operation (NOP)
  4. TCP Option - Window scale: 8 (multiply by 256)
  5. TCP Option - No-Operation (NOP)
  6. TCP Option - No-Operation (NOP)
  7. TCP Option - SACK permitted

MSS:表示希望接受的最大报文长度为 1460B。
Window scale:表示要扩大窗口,即实际窗口大小为
SACK permitted:表示当发送序列中某个数据包丢失时,可以通过发送 SACK 报文通知发送方该数据包丢失,则发送方可以重新发送这个丢失的数据包,而不用发送全部的数据包。

TCP链接释放

TCP挥手的数据包

(因为重新捕获了所以端口变了)
在客户机发送FIN时,服务器没有包需要发送,所以在发出ACK的同时发出FIN,所以只有三个包。

画出四次挥手协议的步骤图

为什么连接的时候是三次握手,关闭的时候却是四次挥手
因为连接时,对于客户机的SYN,服务器可以同时返回SYN和ACK
释放时,对于客户机的FIN,服务器要立刻返回ACK,但可能并不能同时发送FIN(因为还有数据包)。当服务器发送完成后才能单独发送一个FIN。
当客户机发送FIN时,若服务器没有包要发送,则也只需要三次,因为可以像连接时将ACK和FIN两个包合并。

TCP数据传输

在统计中查看IO图表。
在下方的 Y Axis 修改单位。添加 All packets 的过滤器查看需要的包。



All packets 最高约为,或

实验中的下载速率是多少?
下载内容用过滤器tcp.srcport==80显示。
最高约为不知道为什么。

内容占下载率的百分比是多少?
对如下数据包,负载百分比为

  1. Frame 11: 1414 bytes on wire (11312 bits), 1414 bytes captured (11312 bits) on interface \Device\NPF_{F9F266B1-8A20-44C5-B64D-87757D623C6D}, id 0
  2. Ethernet II, Src: Cisco_c6:bd:40 (e8:65:49:c6:bd:40), Dst: LiteonTe_f9:c1:65 (50:5b:c2:f9:c1:65)
  3. Internet Protocol Version 4, Src: 110.242.68.4 (110.242.68.4), Dst: 172.30.247.107 (172.30.247.107)
  4. Transmission Control Protocol, Src Port: 80, Dst Port: 11136, Seq: 1, Ack: 102, Len: 1360
  5. Source Port: 80
  6. Destination Port: 11136
  7. [Stream index: 1]
  8. [TCP Segment Len: 1360]
  9. ...

实验中的上传速率,即ACK消息的发送速率是多少?
上传内容用过滤器tcp.dstport==80显示。
从最初的减少到,然后到

如果最近从服务器收到的TCP数据段的序列号是X,那么下一个发送的ACK是多少?

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注