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连接的建立和终止):
另外,第二次抓包有一个TCP的状态为PSH,如下图(第12步):
我看了一下TCP状态说明,PSH表示有 DATA数据传输,前面第十步,第八步都有数据传输,为何没有PSH呢?
最新文章
- ffmpeg-20160908[09,10,13,15,19,21,22,24]-bin.7z
- Google play billing(Google play 内支付)
- jvm垃圾回收的时间问题
- !! python 之半年总结
- HDU 1498 50 years, 50 colors(最小点覆盖,坑称号)
- jsp 重定向技术
- Windows环境下Android Studio安装和使用教程
- SOFA 源码分析 — 负载均衡和一致性 Hash
- Thymeleaf【快速入门】
- 通过FileReader和FileWriter实现复制文件的方法。
- CF数据结构练习(二)
- [PA2014]Bohater
- php 多线程
- Python——多进程
- 洛谷P2879 [USACO07JAN]区间统计Tallest Cow
- C#------如何处理缺少对公共可见类型或成员的xml注释的警告
- 实用的IOS应用程序框架
- 在python命令行执行sudo命令
- POJ 1113 Wall 凸包 裸
- 公司git流程图,广告业务术语
热门文章
- yum 安装报错:Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&;arch=x86_64&;repo=os&;infra=stock error was 14: curl#6 - ";Could not resolve host: mirrorlist.centos.org; Unknown error";
- 2018.12.15 spoj Longest Common Substring II(后缀自动机)
- 连接oracle数据库报错:TNS-12516 TNS:listener could not find available handler with matching protocol stack解决方法
- Mybatis-Plus 实战完整学习笔记(一)------简介
- hadoop yarn组件介绍
- SQL优化实战之加索引
- 好文推荐系列--------(2)GruntJS——重复乏味的工作总会有人做(反正我不做)
- 安装mysql后必做的两件事
- CMake和静态库顺序
- 顺序表[A+B->;A]