zoukankan      html  css  js  c++  java
  • TCPDUMP学习笔记。

    1.启动

    普通情况下,直接启动tcpdump将监视第一个网络界面上所有流过的数据包,注意这里使用超级用户。当用户上网得时候,就会将监视得数据打印出来。

    我没使用root用户,结果输入tcpdump命令,提示:

    tcpdump: packet printing is not supported for link type BLUETOOTH_HCI_H4_WITH_PHDR: use –w

    2.简单实例

    监听网卡(我的网卡号是eno16777736)

    # tcpdump -i eno16777736

    监听指定协议的数据

    # tcpdump -i eno16777736 -nn 'icmp'  (-nn的功能是用ip地址表示主机。)

    说明: 这个是用来监听icmp协议的数据,就是ping命令使用的协议。类似的,如果要监听tcp或者是udp协议,只需要修改上例的icmp就可以了。

    3.针对网络接口、端口和协议的数据包截取。

    我在虚拟机上运行了一个TCP服务端程序,接收数据,端口为9877,本机上运行客户端发送数据,然后用tcpdump抓包:

    # tcpdump -w test.pcap -i eno16777736 tcp port 9877

    运行客户端发送数据完成之后,结束抓包(按ctrl+ c中断tcpdump命令的执行)就会在当前目录下生成一个test.pcap文件。

    这个文件可以用抓包工具wireshark来分析,直接打开就可以看到这个pcap文件的信息,实际就是TCP数据包格式存储的数据,熟悉TCP格式的话基本都能看懂了。

    4.数据包分析

    以上一个为例,抓了一个发送“HelloSocket!”的数据包,命令行提示:

    5 packets captured
    5 packets received by filter
    0 packets dropped by kernel

    就是抓了5个包(?)。

    TCP包最大能容纳65535字节数据,于是我就试想发送一个65535字节的数据,会不会抓到6个,然而提示的是:

    13 packets captured
    13 packets received by filter
    0 packets dropped by kernel

    也就是说抓了13个包。原来IP层有个MUT的概念,也就是分片。而且第一次显示的是5个包,第二次显示的是13个包,为何数据量小于MUT不是1个包,经过分析才知道,服务器上面的抓包命令不但抓了收到数据“HelloSocket!”的数据包,还把TCP三次握手的包夜抓了,每次握手传一个包,就是3个包(注意包括服务器发送出去的包),最后还有个XXXXXXXXXXXX包。想要只抓数据包,得修改命令参数,后面补充。

    通过这次抓包,可以明显观察到TCP三次握手的情景(下图1,2,3步就是TCP三次握手情形,参考《UNIX网络编程卷1,第三版》,第2.6节TCP连接的建立和终止):

    image

    另外,第二次抓包有一个TCP的状态为PSH,如下图(第12步):

    image

    我看了一下TCP状态说明,PSH表示有 DATA数据传输,前面第十步,第八步都有数据传输,为何没有PSH呢?

  • 相关阅读:
    [SharePoint 2010] 自定义字段类型开发(二)
    [SharePoint 2007/2010]Query SharePoint Calendar Event
    打印出带颜色的调试信息
    c语言调试开关
    c语言调试接口
    字符串截取
    黑客
    【原创】洛谷 LUOGU P3379 【模板】最近公共祖先(LCA) -> 倍增
    【转载】从头到尾彻底理解KMP
    【原创】tarjan算法初步(强连通子图缩点)
  • 原文地址:https://www.cnblogs.com/VIPler/p/5837917.html
Copyright © 2011-2022 走看看