linux流量抓包命令 linux网络抓包工具

在linux命令行环境下如何抓取网络数据包? ? 众所周知,在Windows下开发运行环境下,在调试网络环境时,可以可以很方便linux流量抓包命令的借助wireshark等软件进行抓包分析linux流量抓包命令;并且在linux或者Ubuntu等桌面版里也可以进行安装抓包工具进行抓包分析 , 但总有一些情况,无法直接运用工具(比如一些没有界面linux流量抓包命令的linux环境系统中),则此时我们就需要使用到最简单linux流量抓包命令的tcpdump命令进行网络抓包 。
? 一般的,linux下抓包时,抓取特定的网络数据包到当前文件夹下的文件中 , 再把文件拷贝出来利用Windows下的wireshark软件进行分析 。
tcpdump命令详解linux流量抓包命令:(简单举例)
? 1、抓取到的文件为filename.cap,然后将此文件拷贝到Windows下,使用wireshar打开后,即可对此文件进行分析 。
? 2、eth0 是主机的网络适配器名称 , 具体的参数值可以在linux命令行窗口中通过ifconfig指令查询 。
Linux 下用什么命令查看流量??nethogs: 按进程查看流量占用
?iptraf: 按连接/端口查看流量
?ifstat: 按设备查看流量
?ethtool: 诊断工具
?tcpdump: 抓包工具希赛里有很多这方面资料的 。
linux系统如何抓包linux主机抓包使用tcpdump , 可以加不同参数过滤源IP、端口 , 目的IP、端口,可以撰写到指定文件中 。抓包结果可以用ethereal,wireshark进行分析 。
Linux 基础教程 29-tcpdump命令-1 ? ? 在Linux中输入命令man tcpdump给出的定义如下所示:
是不是感觉很懵?我们用通俗、形象、学术的表达方式来全方位描述tcpdump:
常用选项如下所示:
1、第一个抓包示例
-i : 指定用来抓包的网络接口,这个参数在服务器有多个网卡的时候非常有效
-nn : 不转换协议和端口号,当tcpdump遇到协议号或端口号 , 不需要将这些数字转换为对应的协议名称或端口名称,如22端口SSH端口,我们希望显示22,而非SSH
-X : 将协议头和包内容原原本本的显示出来,tcpdump会同时以16进制和ASCII的形式进行显示,在协议分析时非常好用 。
'port 22' : 告诉tcpdump要有选择的显示所抓到的包 , 在该示例中 , 只显示源端口或目的端口是22的数据包,其他的数据包则不显示 。
-c : 用来指定抓包的个数,示例设置的个数为1,则代表仅抓取一个包之后就退出不再抓包了 。
2、-e 增加数据链路层的头部信息
? ? 通过两个命令的输出对比,可以看到增加-e选项后,输出的结果中增加MAC地址信息 。而且在输出内容中会有 oui Unknown,OUI即Organizationally unique identifier(组织唯一标识符) , 在任何一块网卡中烧录的6字节MAC地址中,前3个字节体现了OUI,其表明了网卡的制造组织,通常情况下,该标识符是唯一的 。在本例中,由于没有识别出网卡的制造商,因此显示为Unknown 。
3、-l 将输出变为行缓冲模式
? ? -l的作用是将tcpdump的输出行为变为 行缓冲 方式,这样可以保证tcpdump遇到换行符 , 就立即将缓冲的内容输出到标准输出(stdout),方便利用管道或重定向方式进行后续处理,而不会造成延迟 。
? ? 在Linux的标准I/O中提供了 全缓冲 、 行缓冲 、 无缓冲 三种缓冲方式 。标准错误是不带缓冲的,而终端设备常为行缓冲,其他默认则为全缓冲 。
? ? 在该例中,将tcpdump输出的内容通过管道提取第5列,可以用来查看详细的连接信息 。而如果不加 -l 选项时 , 则只有当缓冲区全部占满时,tcpdump才会将缓冲区中的内容输出,这样就有可能导致输出不连续的 , 如果强行结束,则会影响下一行的完整性 。

推荐阅读