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连接的建立和终止):

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

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

TCPDUMP学习笔记。的更多相关文章

  1. tcpdump学习笔记

    简介     简单的说,tcpdump就是一个抓包工具,类似Wireshark.     tcpdump可以根据使用者的定义过滤/截取网络上的数据包,并进行分析.tcpdump可以将数据包的头部完全接 ...

  2. Linux 学习笔记

    Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...

  3. FreeSWITCH 学习笔记

    [1]FreeSWITCH学习笔记 1.Windows安装包下载地址:http://files.freeswitch.org/windows/installer/ 2.源码下载地址:http://fi ...

  4. 学习笔记:CentOS7学习之十九:Linux网络管理技术

    目录 学习笔记:CentOS7学习之十九:Linux网络管理技术 本文用于记录学习体会.心得,兼做笔记使用,方便以后复习总结.内容基本完全参考学神教育教材,图片大多取材自学神教育资料,在此非常感谢MK ...

  5. Java IO学习笔记一:为什么带Buffer的比不带Buffer的快

    作者:Grey 原文地址:Java IO学习笔记一:为什么带Buffer的比不带Buffer的快 Java中为什么BufferedReader,BufferedWriter要比FileReader 和 ...

  6. Java IO学习笔记四:Socket基础

    作者:Grey 原文地址:Java IO学习笔记四:Socket基础 准备两个Linux实例(安装好jdk1.8),我准备的两个实例的ip地址分别为: io1实例:192.168.205.138 io ...

  7. 网络协议学习笔记(二)物理层到MAC层,交换机和VLAN,ICMP与ping原理

    概述 之前网络学习笔记主要讲解了IP的诞生,或者说整个操作系统的诞生,一旦有了IP,就可以在网络的环境里和其他的机器展开沟通了.现在开始给大家讲解关于网络底层的相关知识. 从物理层到MAC层:如何在宿 ...

  8. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  9. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

随机推荐

  1. How to turn on syntax highlighting in osx

    put follow code in ~/.vimrc set ai " auto indenting set history=100 " keep 100 lines of hi ...

  2. Win7 VS2013环境编译Lua5.3.1

    主要参考这篇文章,原文有几个错误顺便改正了. 在Windows下使用Visual Studio编译Lua5.3 写本文时Lua官方网站放出的新版本为5.3.1,然后我不知道为啥,神奇的国内不能访问Lu ...

  3. java常用设计模式八:代理模式

    一.概述 代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象. 其特征是代理类与委托类有同样的接口,真正的核心业务逻辑还是在实际对象里面. 二.为什么要使用代理模式 当 ...

  4. java常用设计模式二:工厂模式

    1.简单工厂模式(静态工厂方法模式) 抽象实例: public interface People { void talk(); } 具体实例: public class Doctor implemen ...

  5. 用jquery实现复选框全选全不选问题(完整版),在网络上怎么也找不到完整的解决方案,重要搞全了

    首先准备jsp页面控件: 请选择您的爱好:<br> <input type="checkbox" id="all" name="se ...

  6. Word图片上传控件-eWebEditor9x整合教程-Xproer.WordPaster

    示例下载(JSP):eWebEditor9x, 示例下载(.NET):eWebEditor9x,   1.1. 集成到eWebEditor9x 主要步骤如下: 1.增加WordPaster文件夹   ...

  7. postman接口功能测试

    前言                                                         之前还没实际做过接口测试的时候呢,对接口测试这个概念比较渺茫,只能靠百度,查看各种 ...

  8. 给公司服务器装web服务器,邮件服务器——安装SecureCRT

    系统用centos5.9 首先在window上安装SecureCRT终端 1:首先验证安装secureCRT的本地机和linux服务器能否ping的通: 2:判断linux 服务端是否安装了ssh 若 ...

  9. 谈谈HashMap线程不安全的体现

    原文出处: Hosee HashMap的原理以及如何实现,之前在JDK7与JDK8中HashMap的实现中已经说明了. 那么,为什么说HashMap是线程不安全的呢?它在多线程环境下,会发生什么情况呢 ...

  10. Python 7步机器学习

    http://python.jobbole.com/84108/ 由于我们要使用机器学习和科学计算的 packages ,这里建议安装  Anaconda.Anaconda 是一个可在 Linux , ...