zoukankan      html  css  js  c++  java
  • tcpdump+wireshark配合抓包并分析数据

    下午调试crawlermanager时,成同学反映:client发送的command包,有些没有收到响应。但是查我这边的日志显示是已经发送响应包了的。

    不放心,就使用tcpdump抓了一下包,然后使用wireshark进行分析,成功定位了问题。

    (1)运行tcpdump:

    tcpdump -s 0 -c 100 dst host 109.119.20.82 -w ./target.cap

    相关解释:

    (1)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
    (2)-c 100 : 只抓取100个数据包
    (3)dst host 109.119.20.82 : 只抓取发送到109.119.20.82上的包
    (4)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析

    更多参见:http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html

    (2)使用wireshark打开target.cap:

    然后逐个包分析。

    终于,在一个包中发现如下情况:

    按照我们规定的通信协议:头四个字节 00 00 00 2d表示该包body的长度,但实际抱得长度远远超出了该值!从内容看,是将多个包的内容合并到一个包一起发送了!

    这就是tcp协议中经典的“粘包”问题,本来客户端是已经处理了该问题,但由于实现的bug,导致客户端在处理完第一个包后就丢弃了其他内容,于是客户端就出现了:“丢失响应包”的情况了。

  • 相关阅读:
    POJ -- 3468
    HDOJ--1698
    简单的API应用
    Linux引导流程
    Python 实现网络爬虫小程序
    codeforce
    Count the string -- HDOJ 3336
    初次运行 Git 前的配置
    leetcode244- Shortest Word Distance II- medium
    leetcode243- Shortest Word Distance- easy
  • 原文地址:https://www.cnblogs.com/chutianyao/p/2771959.html
Copyright © 2011-2022 走看看