我试图使用以下命令来理解tshark捕获的网络数据的输出
sudo tshark -i any ‘tcp port 80’ -V -c 800 -R ‘http contains <filter__rgument>' > <desired_file_location>因此,我在输出中得到一些数据包,每个包以一行开头,如下所示:
Frame 5: 1843 bytes on wire (14744 bits), 1843 bytes captured (14744 bits) on interface 0我有一些关于包裹的基本问题:
任何能回答这些疑问的建议都会很有帮助。
发布于 2018-09-23 13:36:53
你问了几个问题。以下是一些答案。
帧和包是相同的吗?
不是的。从技术上讲,当您查看网络数据时,当该数据包括第二层帧头时,您将看到一个帧。该帧内的IP数据包只是从第二层的角度来看的数据。当您查看IP数据报(或去掉帧头)时,您现在正在查看一个数据包。
最后,我告诉人们,你应该知道不同之处,并试着正确地使用这些术语,但在实践中,这并不是一个非常重要的区别。
数据包是否代表单个请求?
这要看情况了。使用HTTP1.0和1.1,您可以这样看待它,尽管没有理由说,如果客户机有大量的POST数据要发送,请求就不能跨越多个数据包。最好将单个“连接”或“会话”视为单个请求/响应。(在HTTP1.1中,这不一定是严格正确的,但通常是正确的)
对于HTTP2.0,这在设计上是不正确的。单个连接或会话用于处理多个数据流(请求/响应)。
如何获得请求标头?
这件事太长了,我无法在这里回答。最简单的方法,很可能是简单地启动WireShark,进入过滤器栏并输入“http”。一旦你击中了点,你会看到一个列表,所有不同的子元素,你可以看。您可以使用'-Y‘选项在tshark中使用这些列,还可以另外指定要显示的列(这样可以有效地添加和删除列)。
查看此信息的另一种方法是使用filter表达式按钮来打开协议选择器。如果向下滚动到HTTP,则可以选择它,然后查看所有可用的字段。
在查看这些内容时,要意识到一些字段位于顶层,而不是在request或response中。例如,content-length显示为http下的字段,而不是http.request.content_length。这是因为content-length是所有请求和响应所共有的字段。
https://stackoverflow.com/questions/52453815
复制相似问题