以前在TCP卷一里,看到过tcpdump的使用。当时,没太在意,尤其它输出的格式,因为不熟悉,更不愿去用它。这段时间的开发,用socket比较多。在遇到问题时,仅从socket api函数的返回值,往往看不出问题的实质。

后来,经laser提醒,才知道tcpdump的强大。这里不想介绍tcpdump的选项,我只想举一些实例,以便给自己作个笔记。

使用以下命令,监听15001端口的tcp连接,-X 表示以16进制显示报文,-s 0 表示显示整个ip报的内容(默认为68bytes),但如果太长的话,tcpdump的缓冲区可能不够用而引发丢失报文:

$ tcpdump 'port 15001 and tcp' -X -s 0

例如,使用telnet发起连接:
yunkai@lsyp1002:~/tmp $ telnet 10.111.112.7 15001
Trying 10.111.112.7...
Connected to 10.111.112.7 (10.111.112.7).
Escape character is '^]'.
$W2,53,100,200,057181932602,13656645563,85022088,#
$X2,14,100,1,#^]
telnet> quit

Connection closed.

tcpdump的输出如下:

root@lsyp1002:~ # /usr/sbin/tcpdump 'port 15001 and tcp' -X -s 0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
13:37:07.448992 IP lsyp1002.xxx.xxxx.com.58939 > 10.111.112.7.15001: S 3188757698:3188757698(0) win 5840 <mss 1460,sackOK,timestamp 870140741 0,nop,wscale 7>
    0x0000:  4510 003c df87 4000 4006 e10b cbd1 fe80  E..<..@.@.......
    0x0010:  3cbf 7307 e63b 3a99 be10 94c2 0000 0000  <.s..;:.........
    0x0020:  a002 16d0 c44c 0000 0204 05b4 0402 080a  .....L..........
    0x0030:  33dd 4b45 0000 0000 0103 0307            3.KE........

  • client(lsyp1002.xxx.xxxx.com.58939)向server(10.111.112.7.15001)发送一个SYN

13:37:07.486678 IP 10.111.112.7.15001 > lsyp1002.xxx.xxxx.com.58939: S 1646598539:1646598539(0) ack 3188757699 win 5792 <mss 1460,sackOK,timestamp 3676470709 870140741,nop,wscale 7>
    0x0000:  4500 003c 0000 4000 3506 cba3 3cbf 7307  E..<..@.5...<.s.
    0x0010:  cbd1 fe80 3a99 e63b 6225 198b be10 94c3  ....:..;b%......
    0x0020:  a012 16a0 efe2 0000 0204 05b4 0402 080a  ................
    0x0030:  db22 7db5 33dd 4b45 0103 0307            ."}.3.KE....

  • server向client响应一个(SYN,ACK)

13:37:07.486692 IP lsyp1002.xxx.xxxx.com.58939 > 10.111.112.7.15001: . ack 1 win 46 <nop,nop,timestamp 870140779 3676470709>
    0x0000:  4510 0034 df88 4000 4006 e112 cbd1 fe80  E..4..@.@.......
    0x0010:  3cbf 7307 e63b 3a99 be10 94c3 6225 198c  <.s..;:.....b%..
    0x0020:  8010 002e 34fb 0000 0101 080a 33dd 4b6b  ....4.......3.Kk
    0x0030:  db22 7db5                                ."}.

  • client向server响应一个ACK,至此,经典的TCP三次握手完成。

13:37:15.996335 IP lsyp1002.xxx.xxxx.com.58939 > 10.111.112.7.15001: P 1:53(52) ack 1 win 46 <nop,nop,timestamp 870149289 3676470709>
    0x0000:  4510 0068 df89 4000 4006 e0dd cbd1 fe80  E..h..@.@.......
    0x0010:  3cbf 7307 e63b 3a99 be10 94c3 6225 198c  <.s..;:.....b%..
    0x0020:  8018 002e 296c 0000 0101 080a 33dd 6ca9  ....)l......3.l.
    0x0030:  db22 7db5 2457 322c 3533 2c31 3030 2c32  ."}.$W2,53,100,2
    0x0040:  3030 2c30 3537 3138 3139 3332 3630 322c  00,057181932602,
    0x0050:  3133 3635 3636 3435 3536 332c 3835 3032  13656645563,8502
    0x0060:  3230 3838 2c23 0d0a                      2088,#..

  • client向server发送(PSH)数据:$W2,53,100,200,057181932602,13656645563,85022088,#

13:37:16.034003 IP 10.111.112.7.15001 > lsyp1002.xxx.xxxx.com.58939: . ack 53 win 46 <nop,nop,timestamp 3676479257 870149289>
    0x0000:  4500 0034 6457 4000 3506 6754 3cbf 7307  E..4dW@.5.gT<.s.
    0x0010:  cbd1 fe80 3a99 e63b 6225 198c be10 94f7  ....:..;b%......
    0x0020:  8010 002e f224 0000 0101 080a db22 9f19  .....$......."..
    0x0030:  33dd 6ca9                                3.l.

  • server响应一个ack,表明收到了数据,并期待53序号后面的数据

13:37:16.186581 IP 10.111.112.7.15001 > lsyp1002.xxx.xxxx.com.58939: P 1:15(14) ack 53 win 46 <nop,nop,timestamp 3676479410 870149289>
    0x0000:  4500 0042 6458 4000 3506 6745 3cbf 7307  E..BdX@.5.gE<.s.
    0x0010:  cbd1 fe80 3a99 e63b 6225 198c be10 94f7  ....:..;b%......
    0x0020:  8018 002e b507 0000 0101 080a db22 9fb2  ............."..
    0x0030:  33dd 6ca9 2458 322c 3134 2c31 3030 2c31  3.l.$X2,14,100,1
    0x0040:  2c23                                     ,#

  • server的对client作出应答,向client PSH数据:$X2,14,100,1,#

13:37:16.186591 IP lsyp1002.xxx.xxxx.com.58939 > 10.111.112.7.15001: . ack 15 win 46 <nop,nop,timestamp 870149479 3676479410>
    0x0000:  4510 0034 df8a 4000 4006 e110 cbd1 fe80  E..4..@.@.......
    0x0010:  3cbf 7307 e63b 3a99 be10 94f7 6225 199a  <.s..;:.....b%..
    0x0020:  8010 002e f0bf 0000 0101 080a 33dd 6d67  ............3.mg
    0x0030:  db22 9fb2                                ."..

  • client收到server的数据,进行ack确认

13:37:38.620338 IP lsyp1002.xxx.xxxx.com.58939 > 10.101.10.7.15001: F 53:53(0) ack 15 win 46 <nop,nop,timestamp 870171913 3676479410>
    0x0000:  4510 0034 df8b 4000 4006 e10f cbd1 fe80  E..4..@.@.......
    0x0010:  3cbf 7307 e63b 3a99 be10 94f7 6225 199a  <.s..;:.....b%..
    0x0020:  8011 002e 991c 0000 0101 080a 33dd c509  ............3...
    0x0030:  db22 9fb2                                ."..

  • 当向telnet发送quit命令时,telnet进行主动关闭,其向server发送FIN结束信号

13:37:38.658459 IP 10.101.10.7.15001 > lsyp1002.xxx.xxxx.com.58939: F 15:15(0) ack 54 win 46 <nop,nop,timestamp 3676501883 870171913>
    0x0000:  4500 0034 6459 4000 3506 6752 3cbf 7307  E..4dY@.5.gR<.s.
    0x0010:  cbd1 fe80 3a99 e63b 6225 199a be10 94f8  ....:..;b%......
    0x0020:  8011 002e 4152 0000 0101 080a db22 f77b  ....AR.......".{
    0x0030:  33dd c509                                3...

  • server端回应(FIN,ack)信息,即表示收到了client的结束信号,也表示它也将关闭服务端的连接

13:37:38.658474 IP lsyp1002.xxx.xxxx.com.58939 > 10.101.10.7.15001: . ack 16 win 46 <nop,nop,timestamp 870171951 3676501883>
    0x0000:  4510 0034 df8c 4000 4006 e10e cbd1 fe80  E..4..@.@.......
    0x0010:  3cbf 7307 e63b 3a99 be10 94f8 6225 199b  <.s..;:.....b%..
    0x0020:  8010 002e 412c 0000 0101 080a 33dd c52f  ....A,......3../
    0x0030:  db22 f77b                                .".{

  • client对server的FIN信号进行确认。

这就是从发起连接->传送数据->关闭连接的全过程。

以下分析tcpdume输出的数据,取以下这次输出作为样例:

13:37:15.996335 IP lsyp1002.xxx.xxxx.com.58939 > 10.101.10.7.15001: P 1:53(52) ack 1 win 46 <nop,nop,timestamp 870149289 3676470709>
    0x0000:  4510 0068 df89 4000 4006 e0dd cbd1 fe80   E..h..@.@.......
    0x0010:  3cbf 7307 e63b 3a99 be10 94c3 6225 198c   <.s..;:.....b%..
    0x0020:  8018 002e 296c 0000 0101 080a 33dd 6ca9   ....)l......3.l.
    0x0030:  db22 7db5 2457 322c 3533 2c31 3030 2c32   ."}.$W2,53,100,2
    0x0040:  3030 2c30 3537 3138 3139 3332 3630 322c   00,057181932602,
    0x0050:  3133 3635 3636 3435 3536 332c 3835 3032   13656645563,8502
    0x0060:  3230 3838 2c23 0d0a                       2088,#..

红色部分,为IP数据报的首部,共20字节。 
蓝色部分,为TCP数据报的首部,共8*32bit=32个字节。 
灰色部分,为TCP的DATA部分。

TCP的首部,没有DATA的长度信息,因为IP的首部已经包含了整个IP包的共长度,可以由下面的减法求出DATA的长度:

length(TCP.DATA) = IP包的总长度 - IP首部长度 - TCP首部长度


转载地址;http://blog.csdn.net/chinainvent/article/details/5177877

tcpdump的输出分析相关推荐

  1. 38 | 案例篇:怎么使用 tcpdump 和 Wireshark 分析网络流量?

    通常,需要暴露到公网的服务,都会绑定一个域名,既方便了人们记忆,也避免了后台服务 IP 地址的变更影响到用户. 不过要注意,DNS 解析受到各种网络状况的影响,性能可能不稳定.比如公网延迟增大,缓存过 ...

  2. tcpdump抓包分析 https://www.01hai.com/note/av263669

    转:tcpdump抓包分析(强烈推荐) 内容预览: 转自:https://mp.weixin.qq.com/s?__biz=MzAxODI5ODMwOA==&mid=266...~ .,表示没 ...

  3. 转 Wireshark和TcpDump抓包分析心得

    1. Wireshark与tcpdump介绍 Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Windows平台下使用Wireshark,如果是Linux的话 ...

  4. linux 查看握手时间,实战:tcpdump抓包分析三次握手四次挥手

    本文档以实战的形式介绍tcpdump抓包分析三次握手四次挥手的过程. 执行tcpdump命令 tcpdump -n -i ens32 host 192.168.10.10 and 42.186.113 ...

  5. python基于pingouin包进行统计分析:使用tost函数执行独立双样本双单侧检验(TOST)、以dataframe的形式输出分析结果(包含p值、自由度、bound等)

    python基于pingouin包进行统计分析:使用tost函数执行独立双样本双单侧检验(TOST).以dataframe的形式输出分析结果(包含p值.自由度.bound等) 目录

  6. python基于pingouin包进行统计分析:使用tost函数执行单样本的双单侧检验(TOST)、以dataframe的形式输出分析结果(包含p值、自由度、bound等)

    python基于pingouin包进行统计分析:使用tost函数执行单样本的双单侧检验(TOST).以dataframe的形式输出分析结果(包含p值.自由度.bound等) 目录

  7. python基于pingouin包进行统计分析:使用tost函数执行配对的双单侧检验(TOST)、以dataframe的形式输出分析结果(包含p值、自由度、bound等)

    python基于pingouin包进行统计分析:使用tost函数执行配对的双单侧检验(TOST).以dataframe的形式输出分析结果(包含p值.自由度.bound等) 目录

  8. 速读原著-TCP/IP(tcpdump的输出)

    A.4 tcpdump的输出 t c p d u m p的输出是"原始的".在本书中包含它的输出时,我们对它进行了修改以便阅读.首先,它总是输出它正在监听的网络接口的名字.我们把这 ...

  9. python基于pingouin包进行统计分析:使用ancova函数执行协方差分析、covar参数设置单个协方差变量、以dataframe的形式输出分析结果(包含SS、自由度、F值、p值、np2等)

    python基于pingouin包进行统计分析:使用ancova函数执行协方差分析.covar参数设置单个协方差变量.以dataframe的形式输出分析结果(包含SS.自由度.F值.p值.np2等) ...

最新文章

  1. 垃圾回收器机制(一):对象存活及强,弱等各种引用辨析
  2. sklearn pipeline_我的sklearn学习经验
  3. 基尼指数——基尼系数是指国际上通用的、用以衡量一个国家或地区居民收入差距的常用指标。基尼系数介于0-1之间,基尼系数越大,表示不平等程度越高。...
  4. criterion java_Java Criterion類代碼示例
  5. 模块化数据中心有什么优势?
  6. 一种比sys.path更好的获得当前脚本路径的方法
  7. MySQL将utf8字符集改为utf8mb4
  8. 前端学习(2185):tabberitem传入active图片
  9. Tcl学习之--表达式
  10. 什么是元宇宙?如果你想参与进Metaverse中去,应该采用什么策略?
  11. 实现模拟内存动态分区分配算法_你还在为了JVM而烦恼么?(内存结构和垃圾回收算法)...
  12. [PAT B1023]组个最小数
  13. [PAL规范]SAP HANA PAL 数据处理四分位间距检测Inter-quartile Range Test编程规范IQRTEST...
  14. 大数据场景下多源异构数据的实时处理分析
  15. 免费送!!!CSDN 会员月卡!
  16. 计算机远程桌面连接连接不上,电脑远程桌面时常出现连接不上问题,怎么处理问题...
  17. FPGA-超声波避障小车(ego1)
  18. Mac上如何利用itunes恢复存放在移动硬盘的iPhone数据
  19. mandatory和immediate
  20. CPU和cache的区别、RAM和ROM的区别、常见的名称缩写

热门文章

  1. DM8分区表和分区索引管理
  2. 硬件复位、软件复位、上电复位
  3. 大型计算机游戏排行榜,iOS大型游戏
  4. 程序数据集散地:数据库-----的解析
  5. 数字藏品交易平台开发教程
  6. 湖工大计算机网络试卷,安工大计算机网络试卷A
  7. 实用贴,HDTV的4个基本元素
  8. 微信抽奖小程序开发_分享微信抽奖小程序制作的步骤
  9. JUNIPER的认证分类
  10. 节能环保,让我们还地球一碧水蓝天