【问题标题】:Calculate number of bytes sent in TCP session计算 TCP 会话中发送的字节数
【发布时间】:2019-09-02 05:55:52
【问题描述】:

我目前正在学习 TCP 协议和 3 次握手。我无法弄清楚如何计算在此 TCP 会话中传输的字节数。我知道在前 3 和最后 4 中是连接建立和关闭连接,但在 4-11 之间我不知道要计算字节数

TCP session

【问题讨论】:

  • 如果我在 TCP 会话中发送 10 KB 字节流并关闭会话/连接 - 那么字节数将是 10 KB 加上开销。听起来您对 TCP“开销”中发生的事情感兴趣 - 如果服务/协议的用户关心该协议的实现细节,它就会打破范式。在询问 TCP“开销”的内部字节数时,您要求的是您无法可靠访问的内容。例如,ipV4 与 ipV6 会给出不同的结果。
  • 不是。我附上TCP会话的图像。我知道你可以计算用SeqNum和AckNum发送的数据
  • 您是要手动计算字节数还是在发送程序中计算字节数。如果手动,您可以在 WireShark 中捕获对话,然后查看详细信息(例如,原始)
  • 手动。我在wireshark中没有捕获,这只是PDF格式,我想知道如何仅使用SeqNUm和Ack Number进行计算

标签: tcp


【解决方案1】:

查看附件的第 4 到 6 帧:

  1. 172.20.1.21.1303 > 172.20.0.81.23: P 1:22(21) ack 1 win 65535
  2. 172.20.0.81.23 > 172.20.1.21.1303: P 1:13(12) ack 22 win 61299
  3. 172.20.1.21.1303 > 172.20.0.81.23: P 22:25(3) ack 13 win 65523
  • 第 4 帧是从主机 A 到 B。“P”标志之后的第一个数字 (1) 是该段第一个数据字节的(相对)序列号,括号中的数字 (21) 是该段的长度(以字节为单位)。
  • 第 5 帧是主机 B 对 A 的响应。'ack' (22) 之后的值是主机 B 告诉主机 A B 已接收到字节 1 到 21,并且它期望接下来的序列号为 22。
  • 第 6 帧是从 A 到 B 的下一段。果然,序列号是 22,与 B 期望的一致,这次长度为 3 个字节。

如果您再查看序列的最后一帧,我们可以在第 12 帧中看到主机 B 的序列号为 1052,这意味着它在连接过程中发送了 1052 个字节(以及第 13 帧中的 ack证实了这一点)。同样,第 14 帧显示主机 A 发送了 107 个字节(第 15 帧中的 ack 确认了这一点)。

【讨论】:

    猜你喜欢
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 2011-09-18
    相关资源
    最近更新 更多