首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解tshark输出

理解tshark输出
EN

Stack Overflow用户
提问于 2018-09-22 05:37:25
回答 1查看 1.2K关注 0票数 1

我试图使用以下命令来理解tshark捕获的网络数据的输出

代码语言:javascript
复制
sudo tshark -i any ‘tcp port 80’ -V -c 800  -R ‘http contains <filter__rgument>' > <desired_file_location>

因此,我在输出中得到一些数据包,每个包以一行开头,如下所示:

代码语言:javascript
复制
Frame 5: 1843 bytes on wire (14744 bits), 1843 bytes captured (14744 bits) on interface 0

我有一些关于包裹的基本问题:

  1. 帧和包是相同的东西(可互换使用)吗?
  2. 包在逻辑上是否表示一个请求(在我的例子中是HTTP请求)?如果不是,一个请求可以跨越多个数据包,还是一个数据包可以包含多个请求?一个更基本的问题是包代表什么?
  3. 我在请求中看到了很多信息。是否有一种方法可以使用t鲨来捕获http头和http reqeust主体?基本上,我整个练习的动机是捕捉所有这些请求,稍后再重放。

任何能回答这些疑问的建议都会很有帮助。

EN

回答 1

Stack Overflow用户

发布于 2018-09-23 13:36:53

你问了几个问题。以下是一些答案。

帧和包是相同的吗?

不是的。从技术上讲,当您查看网络数据时,当该数据包括第二层帧头时,您将看到一个帧。该帧内的IP数据包只是从第二层的角度来看的数据。当您查看IP数据报(或去掉帧头)时,您现在正在查看一个数据包。

最后,我告诉人们,你应该知道不同之处,并试着正确地使用这些术语,但在实践中,这并不是一个非常重要的区别。

数据包是否代表单个请求?

这要看情况了。使用HTTP1.0和1.1,您可以这样看待它,尽管没有理由说,如果客户机有大量的POST数据要发送,请求就不能跨越多个数据包。最好将单个“连接”或“会话”视为单个请求/响应。(在HTTP1.1中,这不一定是严格正确的,但通常是正确的)

对于HTTP2.0,这在设计上是不正确的。单个连接或会话用于处理多个数据流(请求/响应)。

如何获得请求标头?

这件事太长了,我无法在这里回答。最简单的方法,很可能是简单地启动WireShark,进入过滤器栏并输入“http”。一旦你击中了点,你会看到一个列表,所有不同的子元素,你可以看。您可以使用'-Y‘选项在tshark中使用这些列,还可以另外指定要显示的列(这样可以有效地添加和删除列)。

查看此信息的另一种方法是使用filter表达式按钮来打开协议选择器。如果向下滚动到HTTP,则可以选择它,然后查看所有可用的字段。

在查看这些内容时,要意识到一些字段位于顶层,而不是在requestresponse中。例如,content-length显示为http下的字段,而不是http.request.content_length。这是因为content-length是所有请求和响应所共有的字段。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52453815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档