点击上方蓝色字关注我们~

面试官

你说你会网络编程?你说你熟悉网络知识,那你使用过tcpdump吗?能给我讲下tcpdump是什么,或者你有用过tcpdump解决过实际问题吗?

如果你学过网络,甚至搞过网络编程,或者在分析网络情况等,那么对当前网络请求进行抓包诊断分析十分重要,可以帮助你理解网络的交互方式,特别是网络协议的原理,可以帮你更加好的理解tcp等原理和牢固的掌握。

掌握这项技能,对你是非常有帮助的!

PART

1

Linux抓包原理

Linux抓包是通过注册一种虚拟的底层网络协议来完成对网络报文(准确的说是网络设备)消息的处理权。

当网卡接收到一个网络报文之后,它会遍历系统中所有已经注册的网络协议,例如以太网协议、x25协议处理模块来尝试进行报文的解析处理,这一点和一些文件系统的挂载相似,就是让系统中所有的已经注册的文件系统来进行尝试挂载,如果哪一个认为自己可以处理,那么就完成挂载。

当抓包模块把自己伪装成一个网络协议的时候,系统在收到报文的时候就会给这个伪协议一次机会,让它来对网卡收到的报文进行一次处理,此时该模块就会趁机对报文进行窥探,也就是把这个报文完完整整的复制一份,假装是自己接收到的报文,汇报给抓包模块。

PART

2

tcpdump介绍

tcpdump是Linux系统下的一款抓包命令集,工作原理是基于网卡抓取流动在网卡上的数据包。

在Linux系统中由于tcpdump命令的简单和强大,我们一般直接使用tcpdump命令来抓取数据包。

保存之后,拖下来在wireshark中分析。一般会在图形化界面的Linux(Ubuntu、CentOS等)上使用wireshark进行分析,也可以在Windows(Windows wireshark基于winpcap处理网络驱动层)上分析。

默认情况下,tcpdump不会抓取本机内部通讯的报文。根据网络协议栈的规定,对于报文,即使是目的地是本机,也需要经过本机的网络协议层,所以本机通讯肯定是通过API进入了内核,并且完成了路由选择。

如果要使用tcpdump抓取其他主机MAC地址的数据包,必须开启网卡混杂模式,所谓混杂模式,用最简单的语言说就是让网卡抓取任何经过它的数据包,不管这个数据包是不是发给它或者是它发出的。

一般而言,Unix不会让普通用户设置混杂模式,因为这样可以看到别人的信息,比如telnet的用户名和密码,这样会引起一些安全上的问题,所以只有root用户可以开启混杂模式,开启混杂模式的命令是:ifconfig en0 promisc, en0是你要打开混杂模式的网卡。(ifconfig ens32 -promisc关闭)

简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

PART

3

tcpdump使用

1、Linux安装tcpdump(一般Linux默认会有安装)

# tcpdump -h

没有安装,那么使用yum进行安装

# yum -y install tcpdump

安装完成:

2、tcpdump语法参数解释

[root@verysu ~]# 

选项:

-A:以ASCII编码打印每个报文(不包括链路层的头),这对分析网页来说很方便;

3、tcpdump实战

1、直接启动tcpdump,将监视第一个网络接口(eth0)上所有流过的数据包。

# tcpdump // (第一个网卡)等价于 tcpdump -i:eth0

也可以使用参数启动指定网卡:-i eth0//抓取通过eth0网卡的数据包,信息实时打印在屏幕上。-i表示指定哪个网卡接口,后面跟网卡名字,比如eth0或者lo

可以看到tcp协议的相关数据:seq、ack、win、length等。

2、监视指定主机的数据包

比如:监视Google,此时需要在主机上请求www.google.com地址,才能监测到网络数据包,进而被tcpdump抓取。

抓取该网卡eth0和www.google.com地址会话的数据包,实时打印在屏幕上,host后面跟IP地址或者域名。

# tcpdump -i eth0 host www.google.com

第一项是时间,如果命令加上-tttt参数,那么会显示年月日,但是大多数情况下用不到这个参数。

第二项是IP地址,我没有加-nn参数,所以这里服务器ip地址和服务器端口号被域名解析成了verysu.53310等,箭头是指数据发送方向。

第三项Flags,seq,ack等,是TCP协议的三次握手标识。

3、监视其它指定主机等使用方式的数据包

// 截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信

注意:如果通信进程都处于同一个主机上,无论IP地址是任何地址,其数据都是只经过lo,不会经过其他的网卡。

4、保存抓包数据

tcpdump 

保存好抓包数据,之后可以使用wireshark进行分析了。


后台回复“加群”,带你进入高手如云交流群

推荐阅读:

HTTP/3 原理实战

Linux 下10个帮助你调试的命令

Nginx为什么快到根本停不下来?

OVS 和 OVS-DPDK 对比

微软出品的最新K8S学习指南3.0下载

了解HTTPS工作原理,看这一篇就够了

值得收藏的14个Linux下CPU监控工具

Linux 硬盘结构长啥样,了解一下

谨慎使用的 Linux 命令

史上最硬核的Linux依赖问题解决方案

一文搞懂HTTP+TCP的长连接和短连接

正确理解CPU使用率和平均负载的关系

和面试官之间关于操作系统的一场对弈

Linux 系统 UDP 丢包问题分析思路


喜欢,就给我一个“在看”


10T 技术资源大放送!包括但不限于:云计算、虚拟化、微服务、大数据、网络、Linux、Docker、Kubernetes、Python、Go、C/C++、Shell、PPT 等。在公众号内回复「1024,即可免费获取!!

关于fi dd ler 手机抓包 网卡地址地址_面试官:你给我讲讲抓包神器tcpdump的原理...相关推荐

  1. 关于fi dd ler 手机抓包 网卡地址地址_一篇不错的网络数据抓包

    一,网络抓包 Android 手机抓包  adb shell tcpdump -p -vv -s 0 -w /sdcard/capture.pcap adb pull /sdcard/capture. ...

  2. 关于fi dd ler 手机抓包 网卡地址地址_利用无线路由器如何抓取手机网络数据包【详细介绍】...

    当用户运用手机访问网络时,手机在不断接受与发送数据包,而这些数据包中包含了大量的用户信息,包括各种账号信息.聊天信息.发送接收文件.邮件.浏览的网页等.虽然很多信息是加密传输的,但还是会有大量信息是明 ...

  3. 关于fi dd ler 手机抓包 网卡地址地址_实测对比Wireshark利用nRF52832抓包和Packet Sniffer抓包体验...

    在蓝牙的开发过程中,使用抓包器对蓝牙模块收发数据进行抓包BLE分析,无疑会极大地提高我们的研发开发效率,同时能帮我们快速地定位问题.对于初学者或者开发者来说,BLE抓包分析能让我们更快地理解蓝牙的工作 ...

  4. 关于fi dd ler 手机抓包 网卡地址地址_超详细的网络抓包神器 tcpdump 使用指南

    tcpdump 是一款强大的网络抓包工具,它使用 libpcap 库来抓取网络数据包,这个库在几乎在所有的 Linux/Unix 中都有.熟悉 tcpdump 的使用能够帮助你分析调试网络数据,本文将 ...

  5. 关于fi dd ler 手机抓包 网卡地址地址_大年别闲着,跟我来学tcpdump抓包

    快过年了,首先祝福大家新年好,猪年吉祥,阖家团圆,万事如意!在吃喝玩乐睡之余是不是还觉得很闲?很闲?别慌,不怕的,正好可以利用这段时间学点技术提升自己,今天虫虫就给大家奉上新年技术第一波,tcpdum ...

  6. 关于fi dd ler 手机抓包 网卡地址地址_linux 抓包工具tcpdump和tshark

    yum -y install tcpdump 有时候我们发现网卡流量很高,可能超出你们平时的预期,比如说我们就买了10m宽带,平时的话就跑个5M 6M,今天实际上跑满了 很明显有波动,这个时候你肯定想 ...

  7. 关于fi dd ler 手机抓包 网卡地址地址_抓包神器:tcpdump!我还真没用过

    点击上方蓝色字关注我们~ 面试官 你说你会网络编程?你说你熟悉网络知识,那你使用过tcpdump吗?能给我讲下tcpdump是什么,或者你有用过tcpdump解决过实际问题吗? 如果你学过网络,甚至搞 ...

  8. 关于fi dd ler 手机抓包 网卡地址地址_实测对比Wireshark利用nRF52832抓包和Packet Sniffer抓包使用体验...

    在蓝牙的开发过程中,使用抓包器对蓝牙模块收发数据进行抓包BLE分析,无疑会极大地提高我们的研发开发效率,同时能帮我们快速地定位问题.对于初学者或者开发者来说,BLE抓包分析能让我们更快地理解蓝牙的工作 ...

  9. 关于fi dd ler 手机抓包 网卡地址地址_关闭手机位置权限,安卓App仍能获取位置...

    你信任 Android 的权限管理吗?当一个 Android 应用无端向你寻求位置信息时,十有八九你会点下拒绝,并认为这样就可以阻止它获取到你的位置信息. 但事实并非如此,根据安全研究人员表示,已经有 ...

最新文章

  1. Caffe 中关于 LetNet-5 网络的定义文件 lenet.prototxt 解析
  2. 思科ssh验证方式_SSH的应用:一个实例两种验证模式的实现
  3. 蓝桥杯java第八届第十题--k倍区间
  4. boost::sub_range相关的测试程序
  5. 每日一笑 | 如果把大脑看成CPU的话...
  6. 哈希表中能有相同元素吗_最小删除以使用哈希表使所有元素相同
  7. Flex 学习笔记------FLACC Crossbridge
  8. linux进程号为一,一步步探究linux进程中的用户ID
  9. python居中对齐符号怎么打_Python字符串居中对齐
  10. 冯德勇linux百度网盘,RHCE 学习笔记(14)- 文件系统(2) - 搜索文件
  11. html5自动填充父类框,html5和css3进阶(浮动)----02
  12. oracle数据库监听问题,分享一个有意思的Oracle19c数据库监听异常
  13. Android 导出PDF PdfDocument
  14. 今天终于知道了!阿里巴巴 P8、P9 及以上到底是什么水平?
  15. 台式计算机经常使用的硬盘是什么尺寸,台式机硬盘和笔记本硬盘能通用吗?有什么区别?...
  16. python while循环和for循环转换_Python的While循环和for循环,python,while
  17. 程序员公众号编辑神器-mdnice
  18. 快狗打车CTO沈剑:数据库架构一致性最佳实践
  19. MuleSoft知识总结-11.Mule基本组件(Transform Message)
  20. react中CodeMirror (代码编辑器)

热门文章

  1. 创作类游戏《塞尔达传说:旷野之息》风格的水着色器
  2. 邮件开发:Javamail、JAF简介
  3. Java学习---面试基础知识点总结
  4. SEO转化大师,如何做网站成果转化?
  5. QT版《保卫萝卜》简易攻略
  6. java-zxing生成条形码(一维码)
  7. 职场7个建议 轻松抛弃同龄人
  8. windows如何通过网线共享网络给其他设备
  9. 每日一题之hiho213周 Boarding Passes
  10. 神州优雅A460-i3拆机图解