应 @GamerH2o 博友在微博上提的要求,tcpdump专题会写成一个小型系列文章,力求每篇小文中突出重点,讲解清晰,避免长篇累牍,大家必然昏昏欲睡了。

其实tcpdump就好像一个神探,它有着夜视的绝技,在毫无光亮的环境中,也可以看到所有的东西。(好像在编美剧hero一般,哈哈)

在介绍tcpdump之前,要和你确认好几个关键前提,否则的话,往后的内容您看起来会非常困难。
1 了解和使用过linux
2 掌握网络七层协议及其作用
3 熟悉各层协议头,重点是以太网/IP/TCP/UDP
4 了解交换机、路由器所对应的协议层,并知道两者的异同点。

如果你有些忘记了,那么强烈建议你翻出《计算机网络》教材,先好好回忆一下,然后再进入到下面的内容…

==

正文:

通俗的说,tcpdump是一个抓包工具,用于抓取互联网上传输的数据包。
形象的说,tcpdump就好比是国家海关,驻扎在出入境的咽喉要道,凡是要入境和出境的集装箱,海关人员总要打开箱子,看看里面都装了点啥。
学术的说,tcpdump是一种嗅探器(sniffer),利用以太网的特性,通过将网卡适配器(NIC)置于混杂模式(promiscuous)来获取传输在网络中的信息包。

【抓人生中的第一个包】

要用tcpdump抓包,请记住,一定要切换到root账户下,因为只有root才有权限将网卡变更为“混杂模式”。
然后呢,就是用ifconfig的方法查看好你的服务器的网卡名称。(我的叫做eth0,一般都是这个名字)

# tcpdump -i eth0 -nn -X ‘port 53′ -c 1

?

1

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
19:48:33.285838 IP 116.255.245.206.47940 > 8.8.8.8.53: 22768+ A? www.baidu.com. (31)
       0x0000:  4500 003b c341 0000 4011 3c93 74ff f5ce  E..;.A..@.<.t...        0x0010:  0808 0808 bb44 0035 0027 b457 58f0 0100  .....D.5.'.WX...        0x0020:  0001 0000 0000 0000 0377 7777 0562 6169  .........www.bai        0x0030:  6475 0363 6f6d 0000 0100 01              du.com..... 1 packets captured 1 packets received by filter 0 packets dropped by kernel [/shell] 在此,我重点解释下这个命令:-i选项:
是interface的含义,是指我们有义务告诉tcpdump希望他去监听哪一个网卡。这在我们一台服务器有多块网卡时很有必要。

-nn选项:
意思是说当tcpdump遇到协议号或端口号时,不要将这些号码转换成对应的协议名称或端口名称。比如,众所周知21端口是FTP端口,我们希望显示21,而非tcpdump自作聪明的将它显示成FTP。

-X选项:
告诉tcpdump命令,需要把协议头和包内容都原原本本的显示出来(tcpdump会以16进制和ASCII的形式显示),这在进行协议分析时是绝对的利器。

‘port 53’:
这是告诉tcpdump不要看到啥就显示啥。我们只关心源端口或目的端口是53的数据包,其他的数据包别给我显示出来。

-c选项:
是Count的含义,这设置了我们希望tcpdump帮我们抓几个包。我设置的是1,所以tcpdump不会帮我再多抓哪怕一个包回来。

【未完待续】

从混混乱乱的输出中,大家一定隐约的能看到www.baidu.com,是的,我抓到的这个包,其实是DNS解析的第一个包,也就是发出解析请求的包。至于tcpdump输出的内容到底是什么含义,会在后面娓娓道来。敬请期待。

谢谢!

转载于:https://blog.51cto.com/358845/1693614

《神探tcpdump第一招》-linux命令五分钟系列之三十五相关推荐

  1. 《神探tcpdump第五招》-linux命令五分钟系列之三十九

    == [系列文章] <神探tcpdump第一招>-linux命令五分钟系列之三十五 <神探tcpdump第二招>-linux命令五分钟系列之三十六 <神探tcpdump第 ...

  2. 《神探tcpdump第四招》-linux命令五分钟系列之三十八

    == 本文会是"选项内容"的最后一期讲解,主要会讲讲-w和-r两个选项.tcpdump的选项很多,多达50个,其他我没有涉及的选项,还是要大家自己通过man tcpdump的方式来 ...

  3. 软考高级信息系统项目管理师系列之三十五:组织级项目管理

    软考高级信息系统项目管理师系列之三十五:组织级项目管理 一.组织级项目管理内容 二.组织级项目管理概述 三.组织级项目管理对战略的支持 四.组织级项目管理框架内容 五.成熟度模型 组织级项目管理知识包 ...

  4. 《作业控制系列》-“linux命令五分钟系列”之十

    很久没发这个系列了.一直在看perl.现在回归.因为发现所有的脚本的基础都是linux命令- === 通俗的讲,作业控制命令是用来控制一个一个任务的. 1 我想把updatedb命令(用于重新建立整盘 ...

  5. 《篡权的ss》-linux命令五分钟系列之三十一

    原文链接 本原创文章属于<Linux大棚>博客. 博客地址为http://roclinux.cn. 文章作者为roc. === 上篇文章<和netstat说再见>中说到nets ...

  6. 《mount的艺术》-linux命令五分钟系列之十四

    在阅读本文之前,我假设你已经对Linux系统下的硬盘.光盘的设备命令规则有所了解,比如sda和sda1的关系,以及hda.sda.fd.cdrom等设备. === 1 我把U盘插到USB口上了,下一步 ...

  7. Linux命令:MySQL系列之十--MySQL用户和权限管理,mysql管理员密码重置

    MySQL用户账号包括:用户名@主机名 用户名:16个字符以内 主机:主机有以下几种表现方式 主机名: mysql IP地址: 172.16.90.111 网络地址:172.16.0.0/255.25 ...

  8. 网络安全系列之三十五 缓冲区溢出

    缓冲区溢出的大名可谓如雷贯耳,我们不必去探究缓冲区溢出的原理,只需知道他能做什么就可以了.如果能够成功地对远程计算机进行缓冲区溢出,那么就可以获得远程计算机的Shell,也就可以直接以管理员的身份在远 ...

  9. 《sed的流艺术之四》-linux命令五分钟系列之二十四

    [正文开始] 上文接<sed的流艺术之三>-linux命令五分钟系列之二十三 例十 如果设定了很多-e的command,它们的执行顺序是怎样的呢? [rocrocket@rocrocket ...

最新文章

  1. ueditor与七牛云存储结合
  2. npjsba-2018-用肠道微生物模型指导个性化膳食缓解局部性肠炎
  3. mysql view none,MySQL笔记之视图的使用详解
  4. 042_CSS3字体
  5. unity3d显示c4d材质_C4D小白最常踩的9个坑,看看你中招了没?
  6. 【Python基础】分享5 款超牛逼的 Jupyter Notebook 插件!
  7. python获取电脑硬件信息_Python实现的读取电脑硬件信息功能示例
  8. jQuery的eval
  9. 【代码实现接口测试】Requests库
  10. Java中的Unsafe在安全领域的一些应用总结和复现
  11. 供养出家人,所做功德不可思议
  12. 深度学习笔记(46) 深度卷积网络学习
  13. Windows系统 notepad命令详解,Windows系统打开记事本
  14. 年终总结系列2:人人都在讲的全面风险管理,真的做到了吗?
  15. codova添加android慢_从 0 开始学 Linux 内核之 android 内核栈溢出 ROP 利用
  16. js中做数字运算时出现的异常,期望值比实际值小太多太多
  17. (day 36 - 滑动窗口)剑指 Offer 57 - II. 和为s的连续正数序列
  18. Subclipse与Subversive比较
  19. HTML5 九宫格拼图游戏
  20. Boob炸弹拆除IDA版

热门文章

  1. 情人节 html5,情人节H5案例 | 2019第一波情人节营销已上线
  2. python安装成功的图标_ubuntu下:安装anaconda、环境配置、软件图标的创建、成功启动anaconda图形界面...
  3. Redis初学:14(Redis中的事务)
  4. oracle恢复是怎么看进度,Oracle中查看慢查询进度的脚本分享
  5. Java项目:(前端vue后台java微服务)在线考试系统(java+vue+springboot+mysql+maven)
  6. 微信小程序发送模板消息,php发送模板消息
  7. [微信小程序]时间戳转日期
  8. iOS scrollToItemAtIndexPath 无效的解决方案
  9. iOS开发中用到的一些第三方库
  10. [python][jupyter notebook]之菜鸟安装[pyecharts]中Geo或Map显示问题