![Wireshark 中 TCP 对话和 TCP 流之间的关系](https://linux22.com/image/1476061/Wireshark%20%E4%B8%AD%20TCP%20%E5%AF%B9%E8%AF%9D%E5%92%8C%20TCP%20%E6%B5%81%E4%B9%8B%E9%97%B4%E7%9A%84%E5%85%B3%E7%B3%BB.png)
答案1
在这种情况下,A对话发生在 TCP 级别(传输层),与两个端口之间的 TCP 连接同义。
在此上下文中,“TCP 流”是会话中传递的应用程序消息的集合。例如,链接中的流显示运行统一网络协议程序,要求路由器转发端口 5000,然后路由器响应。所以你实际上是 TCP 段的数据字段。因此我认为它的名字不太恰当。所有 TCP 信息都被剥离了,只留下两台主机上的软件发送和接收的消息。它们可能是HTTPGET 和响应,FTP看跌期权,邮件传输协议MAIL,或任何其他应用程序的本机命令语言。
就我个人而言,我不确定我是否喜欢本文档中 Wireshark 的术语,但它确实很好地体现了他们作为协议分析器的观点。无论底层协议是什么,应用程序都会将两个端点之间的套接字连接视为 IO 流。
顺便说一句,我不同意 IP 具有“对话”功能。IP 不携带维护虚拟电路所需的数据,而是将其留给上层。TCP 处理严格的电路,而 UDP 处理非常松散的电路,将排序、错误更正和流量控制留给其应用程序。
答案2
TCP对话和 TCP 流应该处于同一级别,但是,至少在 Wireshark 的某些版本中,它们使用不同的代码来识别哪些数据包是会话/流的一部分,因此它们可能会给出不同的答案。
例如,其中一个可能将两个端点(IP 地址/端口对)之间的所有流量视为同一对话/流的一部分,即使这两个端点之间的一个 TCP 连接被关闭,而另一个 TCP 连接恰好在同一捕获中的相同两个端点之间打开(不太可能,因为端口不会立即被重用,但并非不可能),而另一个可能识别出正在关闭的连接并将它们显示为单独的对话/流。
如果他们使用的不是相同的代码,那么这可以说是一个错误,但可能是尚未有人修复的错误。
明显地,知识产权“对话”,指的是两个人之间的知识产权端点(两个 IP 地址)与 TCP 对话/流不同;正如您注意到的,两个 IP 端点之间可以有多个 TCP 对话、UDP 对话等,因此同一个 IP 对话中可以有多个 TCP/UDP/等对话。
答案3
仅查看您链接的页面上的示例,这两个术语在功能上似乎并没有什么不同。两者似乎都是单个网络连接的长度。
对话页面不会汇总多个连接,它实际上会显示每个连接,包括时间长度和字节数。流窗口仅显示实际发送数据的详细信息。