我一直在使用服务器Projekt并使用tcpdump嗅探客户端和服务器之间的包交换。我在解决/解释tcpdump的输出时遇到了一些问题。我似乎无法在网上找到任何有意义的信息。所以这就是我所拥有的。
我在嗅探包装后用十六进制和ascii读取它。
tcpdump -nnvvv -XX -i any -r vcs_tcp_noimg.pcap
我有这个
The Server is running on port 6126 and Client port 45852
我知道标有红色的那个总是从Null字节开始,然后是E..N - >是网络IP和其他人。
蓝色的是实际的消息/有效负载。前两个我不能读,所以我得出结论data exchange is Byte
的类型。但是3 marked Blue
,我可以看到参数/字段用户和名称。哪个是文本,所以我总结出数据类型是Text
。
因此,在这种情况下,我可以断定服务器和客户端之间交换的有效负载/数据类型是mixture of text and Bytes
吗?
为了证明我的好奇心,我接着将tcpdump
格式更改为-A for ascii Text。
tcpdump -nnvvv -A -i any -r vcs_tcp_noimg.pcap
为什么:因为如果我执行-A并将所有有效负载作为ascii Text,那么我可以断定数据交换类型是文本,如果数据不可读,那么我可以说数据类型是Byte
然后令我惊讶的是,我得到了这个 红色标记 - >不可读的 - >字节 蓝色标记 - >可读,甚至有链接。
所以我的问题是。 1.如何确定客户端和服务器之间的数据交换类型? 从我的研究中可以得出结论,这是字节和ascii文本的混合?
最后[F]和[F.]有什么区别? 我知道[。]是确认和[F] FIN。这可能是[F.] FIN ACK,这是否意味着通信现已结束?
提前致谢。
答案 0 :(得分:0)
您可以从TCP / IP通信入门中受益。您应该查看RFC文档(例如793),它们完整地解释了协议的工作原理以及如何解析标题。
TCP上的通信始于RFC的三次握手,它将是从客户端到服务器的SYN,从服务器到客户端的SYN ACK以及从客户端到服务器的最终ACK。这将通过IP端口对打开两个半双工连接。
为了优雅地终止通信,RFC描述了四路关闭。连接的一端以FIN ACK开始,因为每一方总是在确认流中的当前位置。另一方将通过ACK对此做出回应以确认收盘。该方实际上可以继续发送数据,但已发送FIN ACK的一方已经关闭了其信道,因此此时可能只会发送ACK。最后(实际上,在FIN ACK之后通常不会返回额外的数据),连接的另一端将以相同的模式关闭:FIN ACK,正确的响应是ACK。