经过前面的学习,tcpdump的用法相信应该都掌握了,今天我们来学习对tcpdump输出内容的学习和了解。我们以第一个示例进行讲解如下所示:

IP协议包分析

[root@localhost ~]# tcpdump -i ens5f1 -nn -X 'port 22' -c 1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens5f1, link-type EN10MB (Ethernet), capture size 262144 bytes
22:34:11.334916 IP 192.168.8.8.22 > 112.64.61.186.37035: Flags [P.], seq 3341229570:3341229782, ack 1999159071, win 31152, length 212
0x0000: 4510 00fc 7e99 4000 4006 44a8 c0a8 0808 E...~.@.@.D.....
0x0010: 7040 3dba 0016 90ab c727 1e02 7728 bf1f p@=......'..w(..
0x0020: 5018 79b0 7799 0000 0000 00b0 823d 4cf1 P.y.w........=L.
0x0030: 1108 58fc 3686 2bd2 5220 fe37 85ab 74cc ..X.6.+.R..7..t.
0x0040: bfb1 8831 7d1c 3b57 52ae aa91 28a2 67d8 ...1}.;WR...(.g.
0x0050: 08fb a257 7fc8 7186 39dc d266 3d32 cce8 ...W..q.9..f=2..
0x0060: 3eb7 130b a7d3 833b 59c9 bdf8 2141 6863 >......;Y...!Ahc
0x0070: 7cae 25ff 459e c94a a635 7098 6925 db48 |.%.E..J.5p.i%.H
0x0080: a9b0 32ab 5393 737f cf8c f2ed b47a 7d8b ..2.S.s......z}.
0x0090: 346c 39df 3ecc d2b0 e0ad 5104 272d 6513 4l9.>.....Q.'-e.
0x00a0: 4b8d 5ee6 6c7d 9477 e40b 8637 996a bb5a K.^.l}.w...7.j.Z
0x00b0: 471a 2ac4 3335 266d 0485 2e52 b2c2 f6e8 G.*.35&m...R....
0x00c0: 0549 5ae0 9c7b ad45 da0a eef2 1ccb b2ac .IZ..{.E........
0x00d0: a4a2 0a96 cc5f 238c 9570 0d15 984e 6f58 ....._#..p...NoX
0x00e0: d8ff 8034 1165 cf44 02e4 ed6b 631e 2548 ...4.e.D...kc.%H
0x00f0: 56fd 4c8a 664c e5ee d845 2e50 V.L.fL...E.P
1 packet captured
1 packet received by filter
0 packets dropped by kernel

第一行

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens5f1, link-type EN10MB (Ethernet), capture size 262144 bytes

这里仅仅是提示如果想获取和查看更详细的命令可以尝试添加的参数。

第二行

listening on ens5f1, link-type EN10MB (Ethernet), capture size 262144 bytes

tcpdump监听的网络设备接口和链路层类型(以太网)要抓包的大小限制

第三行

22:34:11.334916 IP 192.168.8.8.22 > 112.64.61.186.37035: Flags [P.], seq 3341229570:3341229782, ack 1999159071, win 31152, length 212
  • 22:34:11.334916 :抓包的时间
  • IP : 抓取的数据包位于网络层,即IP包
  • 192.168.8.8.22:抓取包的源IP地址和端口
  • > :数据的传输方向
  • 112.64.61.186.37035:抓取的包目的地IP和端口
  • Flags和后面内容:建立三次握手信息

第4~16行

    0x0000:  4510 00fc 7e99 4000 4006 44a8 c0a8 0808  E...~.@.@.D.....
0x0010: 7040 3dba 0016 90ab c727 1e02 7728 bf1f p@=......'..w(..
0x0020: 5018 79b0 7799 0000 0000 00b0 823d 4cf1 P.y.w........=L.
0x0030: 1108 58fc 3686 2bd2 5220 fe37 85ab 74cc ..X.6.+.R..7..t.
0x0040: bfb1 8831 7d1c 3b57 52ae aa91 28a2 67d8 ...1}.;WR...(.g.
0x0050: 08fb a257 7fc8 7186 39dc d266 3d32 cce8 ...W..q.9..f=2..
0x0060: 3eb7 130b a7d3 833b 59c9 bdf8 2141 6863 >......;Y...!Ahc
0x0070: 7cae 25ff 459e c94a a635 7098 6925 db48 |.%.E..J.5p.i%.H
0x0080: a9b0 32ab 5393 737f cf8c f2ed b47a 7d8b ..2.S.s......z}.
0x0090: 346c 39df 3ecc d2b0 e0ad 5104 272d 6513 4l9.>.....Q.'-e.
0x00a0: 4b8d 5ee6 6c7d 9477 e40b 8637 996a bb5a K.^.l}.w...7.j.Z
0x00b0: 471a 2ac4 3335 266d 0485 2e52 b2c2 f6e8 G.*.35&m...R....
0x00c0: 0549 5ae0 9c7b ad45 da0a eef2 1ccb b2ac .IZ..{.E........
0x00d0: a4a2 0a96 cc5f 238c 9570 0d15 984e 6f58 ....._#..p...NoX
0x00e0: d8ff 8034 1165 cf44 02e4 ed6b 631e 2548 ...4.e.D...kc.%H
0x00f0: 56fd 4c8a 664c e5ee d845 2e50 V.L.fL...E.P

以上这些是IP包的内容,左侧是16进制,右侧是ASCII部分。如果想看到这些具体的数据则需要查看前一期中TCP数据报的格式。

  • 4510

    4:IP版本,此处代表为IPv4

    5:代表首部长度,此处代表为20B

    10:代表协议的服务类型
  • 00fc

    表示数据总长度,00FC:代表总长度为252B
  • 7e99

    表示标识,如果IP包的大小超过了数据链路层的MTU限制,就需要对IP包进行拆分,此时就要用这个域来表示哪些包在拆分前是同一组的。此处的标识域为0x7e99
  • 4

    再继续向后看,就是3位标志位,用来控制IP抓分后重新组装用,最低位为MF(More Fragment),中间位为DF(Don't Fragment)不能分片
  • MF=1:表示后面还有分片
  • MF=0:表示这已经是若干分片中的最后一个
  • DF=0:允许分片
  • 000:片偏移量,本次没有拆分包,所以全为0
  • 40:TTL(Time To Life),数据包在网络中的寿命。此处为0x40,进制为64,表示如果中间超过了这个路由节点,则认为目的不可达,中间路由器将进行丢弃处理。
  • 06:指上一层协议类型,此处为0x06,可以看出协议编号为6,代表为TCP协议。
  • 44a8:表示IP首部校验和,此处为0x44a8
  • c0a8 0808:IP源地址,此处为192.168.8.8
  • 7040 3dba:IP目的地址:此处为:112.64.60.186

    到此,数据包头部已经全部解释完成。

UDP协议包分析

    我们先来抓取一个UDP包,如下所示:

[root@localhost ~]# tcpdump -i ens5f1 -nn -X 'udp' -c 1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens5f1, link-type EN10MB (Ethernet), capture size 262144 bytes
18:18:12.499924 IP 192.168.8.101.137 > 192.168.8.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
0x0000: 4500 004e 31ab 0000 8011 763f c0a8 0865 E..N1.....v?...e
0x0010: c0a8 08ff 0089 0089 003a 1277 ddc1 0110 .........:.w....
0x0020: 0001 0000 0000 0000 2046 4b46 4545 4643 .........FKFEEFC
0x0030: 4e44 4344 4144 4244 4744 4144 4944 4144 NDCDADBDGDADIDAD
0x0040: 4245 4945 4645 4841 4100 0020 0001 BEIEFEHAA.....
1 packet captured
1 packet received by filter
0 packets dropped by kernel

相对于IP包来讲,UDP的包要简单很多,其首部总共就8个字节。而UDP位于传输层,自然前面也增加了IP包相关的头部。

  • 0089:源端口为0x0089即:137
  • 0089:目的端口为0x0089即:137
  • 003a:UDP包的总长度,即58字节,去掉首部的8字节后,真正可以用来传输的只有50字节。
  • 1277:UDP校验和。为0x1277

本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注:

Linux 基础教程 31-tcpdump命令-3的更多相关文章

  1. Linux 基础教程 37-进程命令

    pidof     我们知道每个小孩一出生就会一个全国唯一的编号来对其进行标识,用于以后上学,办社保等,就是我们的身份证号.那么在Linux系统中,用来管理运行程序的标识叫做PID,就是大家熟知的进程 ...

  2. Linux 基础教程 32-解压缩命令

        将文件压缩后对提升数据传输效率,降低传输带宽,管理备份数据都有非常重要的功能,因此文件压缩解压技能就成为必备技能.相对于Windows中的文件解压缩工具百花争艳,在Linux中的解压缩工具则要 ...

  3. 嵌入式LINUX基础教程 第2版

    嵌入式LINUX基础教程  第2版 目录 第1章 入门 11.1 为什么选择Linux 11.2 嵌入式Linux现状 21.3 开源和GPL 21.4 标准及相关组织 31.4.1 Linux标准基 ...

  4. Linux基础 - 系统优化及常用命令

    目录 Linux基础系统优化及常用命令 Linux基础系统优化 网卡配置文件详解 ifup,ifdown命令 ifconfig命令 ifup,ifdown命令 ip命令 用户管理与文件权限篇 创建普通 ...

  5. Linux基础系统优化及常用命令

    # Linux基础系统优化及常用命令 [TOC] ## Linux基础系统优化 Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. - ...

  6. Linux基础01 学会使用命令帮助

    Linux基础01 学会使用命令帮助 概述 在linux终端,面对命令不知道怎么用,或不记得命令的拼写及参数时,我们需要求助于系统的帮助文档:linux系统内置的帮助文档很详细,通常能解决我们的问题, ...

  7. [SQL基础教程] 3-1 对表进行聚合查询

    [SQL基础教程] 3-1 对表进行聚合查询 聚合函数 用于合计的函数称为聚合函数或者集合函数 COUNT SUM AVG MAX MIN SELECT COUNT(*) FROM table; SE ...

  8. Linux基础教程 linux中使用find命令搜索文件常用方法记录

    find是linux非常强大的搜索命令,通过man find查看find手册,可以发现find的说明一屏接一屏,估计要看完也得花不少时间.兄弟连Linux培训 小编总结了下,整理出find常用的使用方 ...

  9. Embedded Linux Primer----嵌入式Linux基础教程--2.4节--嵌入式Linux发行版

    嵌入式Linux发行版 究竟什么是Linux发行版?在Linux内核引导之后,它期望找到并挂载根文件系统.当一个匹配的根文件系统已经挂载上,启动脚本开始运行大量程序和系统要求的工具.这些程序经常调用其 ...

  10. Linux基础教程

    Linux基础教程之<Linux就该这么学>之学习笔记第一篇... ========================= 一.Basic Linux Commands    基本的Linux ...

随机推荐

  1. java web 程序---购物车项目内容:

    1.项目介绍   典型电子商务系统(在线购物平台).模拟了当当系统部分功能.2.功能需求    1)用户管理模块(3天)user         实现登录.注册功能    2)产品浏览模块(2天)ma ...

  2. Bootstrap-CL:警告

    ylbtech-Bootstrap-CL:警告 1.返回顶部 1. Bootstrap 警告(Alerts) 本章将讲解警告(Alerts)以及 Bootstrap 所提供的用于警告的 class.警 ...

  3. cas服务器搭建

    一.CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协议.CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的 ...

  4. [置顶] linux c常用函数 (待完善)

    (1)字符测试函数 isalnum(测试字符是否为英文字母或数字) isalpha(测试字符是否为英文字母) isascii(测试字符是否为ASCII码字符) isblank(测试字符是否为空格字符) ...

  5. 读取配置文件工具demo

    //读取配置文件public class ResourcesUtils { /* * @description:根据属性获取文件名 * * @param:propertyName文件的属性名 * * ...

  6. 由python的math.log想到的问题

    result = math.log(243,3) print(result) 输出5.0 print("%f"%result) 还是输出5.0 看出问题了吗?对,没错.int(5. ...

  7. sql server2008本地连接选择windows身份验证无法登陆的解决办法

    1.安装完sqlserver数据库,本地连接登录不了 解决办法:进入cmd,输入net start mssqlserver 服务启动后,再次用windows身份验证就可以登陆本地数据库了

  8. LUA 表排序

    t = { [] = , [] = , [] = } for k, v in pairs(t) do--注意这个输出顺序是没有规律的!!! print(k, v) end local keys = { ...

  9. 词项邻近 & 停用词 & 词干还原

    [词项邻近] 邻近操作符(proximity)用于指定查询中的两个词项应该在文档中互相靠近,靠近程度通常采用两者之间的词的个数或者是否同在某个结构单元(如句 子或段落)中出现来衡量. [停用词] 一些 ...

  10. solr dismax与edismax的参数列表

    dismax q.alt qf (Query Fields) mm (Minimum 'Should' Match) pf (Phrase Fields) ps (Phrase Slop) qs (Q ...