========================================
作者: zhoushq(http://hi.baidu.com/zhou2008/
)
发表于: 2008.04.28
分类: tcp
出处: http://hi.baidu.com/zhou2008/blog/item/ec28c7fd8f26a240d7887d74.html
========================================
-e 所截取的每个包都显示链路层报头:源MAC地址>目的MAC地址,以太类型 IPV4 (0X0800), 包数据长度。
-n 别把地址转换成名字:显示ip地址,而非主机名称
-nn 别把协议和端口号转换为服务名:譬如显示80端口而非HTTP
-x 以16 进制数形式显示每一个报文(去掉链路层报头后) . 可以显示较小的完整报文
示例:#tcpdump -ennx -c 1
-xx 以16 进制数形式显示每一个报文(包含链路层报头)
-X 以16 进制数形式显示每一个报文(不包含链路层报头),同时显示ASCII码。
-XX 以16 进制数形式显示每一个报文(包含链路层报头),同时显示ASCII码。
-s 重定义截取报文大小,默认为96(或68),如果定义为0,则表示获取完整报文。该参数应尽量小,尤其在繁忙网络环境中。
-w 将截取的报文输出到文件中。
-r 从文件中读取报文。
示例:#tcpdump -en -s 0 -XX -i eth0 host
www.sina.com.cn
-w telnet.out2 将截取到的报文输出到文件telnet.out2中。
示例:#tcpdump -en -s 0 -XX -i eth0 host www.sina.com.cn
-r telnet.out2 从telnet.out2中读取报文
监视ARP报文
#arping 192.168.1.100
#tcpdump -enxx -s 0 arp -c 2
上述内容逐一对应截取的报文。
红框第一部分是:链路层以太网帧格式
6字节目的MAC地址(000C 294D 662C)+ 6字节源MAC地址(0014 bf62 f916)+ 2字节帧类型(0800)
帧类型:
0x0800 IP数据报
0x0806 ARP数据报
0x0835 RARP数据报
第二个红框部分是:IP首部
以下为摘录:
图中4500—01c8为IP的头信息。这些数是十六进制表示的。一个数占4位,例如:4的二进制是0100
4位版本:
表示目前的协议版本号,数值是4表示版本为4,因此IP有时也称作IPv4;
4位首部长度:
头部的是长度,它的单位是32位(4个字节),数值为5表示IP头部长度为20字节。
8位服务类型(TOS):
00,这个8位字段由3位的优先权子字段,现在已经被忽略,4位的TOS子字段以及1 位的未用字段(现在为0)构成。4位的TOS子字段包含:最小延时、最大吞吐量、最高可靠性以及最小费用构成,这四个1位最多只能有一个为1,本例中都为0,表示是一般服务。
前16位合为:4500
16位
总长度:
总长度字段是指整个IP数据报的长度,以字节为单位。数值为00 2c
,换算为十进制为44字节,44字节=20字节 的IP头+24字节的TCP头,这个数据报只是传送的控制信息,还没有传送真正的数据,所以目前看到的总长度就是报头的长度。
对应图中16位:002c
16位标识:
标识字段唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加1,第3行为数值为30 21,第5行为30 22,第7行为30 23。分片时涉及到标志字段和片偏移字段,本文不讨论这两个字段。
对应图中32位:3546 0000
8位生存时间(TTL):
TTL(time-
to-live)生存时间字段设置了数据报可以经过的最多路由器数。它指定了数据报的生存时间。ttl的初始值由源主机设置,一旦经过一个处理它的路由
器,它的值就减去1。可根据TTL值判断服务器是什么系统和经过的路由器。本例为80,换算成十进制为128,WINDOWS操作系统TTL初始值一般为
128,UNIX操作系统初始值为255,本例表示两个机器在同一网段且操作系统为WINDOWS。
8位协议:
表示协议类型,6表示传输层是TCP协议。
对应图中16位:f806
16位首部检验和:
当
收到一份IP数据报后,同样对首部中每个16
位进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应
该为全1。如果结果不是全1,即检验和错误,那么IP就丢弃收到的数据报。但是不生成差错报文,由上层去发现丢失的数据报并进行重传。
对应图中16位:df88
32位源IP地址和32位目的IP地址:
实际这是IP协议中核心的部分。32位的IP地址由一个网络ID和一个主机ID组成。本例源IP地址为ca 6c 2120
,转换为十进制为:202.108.33.32
; 目的IP地址为C0 A8 01c8
,转换为十进制为:192.168.1.200
。
对应图中64位:ca6c 2120 c0a8 01c8
TCP协议头信息(浅色框内容)
端口号:
常
说FTP占21端口、HTTP占80端口、TELNET占23端口等,这里指的端口就是TCP或UDP的端口,端口就像通道两端的门一样,当两机进行通讯
时门必须是打开的。源端口和目的端口各占16位,2的16次方等于65536,这就是每台电脑与其它电脑联系所能开的“门”。一般作为服务一方每项服务的
端口号是固定的。
本例目的端口号为29b6,换算成十进制为10678
,本例为0050
,换算成十进制为80
。
对应图中32位:0050 29b6
32位序号:
也
称为顺序号(Sequence
Number),简写为SEQ,从上面三次握手的分析可以看出,当一方要与另一方联系时就发送一个初始序号给对方,意思是:“让我们建立联系吧?”,服务
方收到后要发个独立的序号给发送方,意思是“消息收到,数据流将以这个数开始。”由此可看出,TCP连接完全是双向的,即双方的数据流可同时传输。在传输
过程中双方数据是独立的,因此每个TCP连接必须有两个顺序号分别对应不同方向的数据流。
对应图中32位:975d 9f5c 换算结果为:2539495260
32位确认序号:
也称为应答号(Acknowledgment Number),简写为ACK。在握手阶段,确认序号将发送方的序号加1作为回答,在数据传输阶段,确认序号将发送方的序号加发送的数据大小作为回答,表示确实收到这些数据。在第三组的分析中将看到这一过程。
对应图中32位:e789 82fe 换算结果为:3884548862
4位首部长度
:
这个字段占4位,它的单位时32位(4个字节)。本例值为6
,TCP的头长度为24字节
,等于正常的长度2 0字节加上可选项4个字节。,TCP的头长度最长可为60字节(二进制1111换算为十进制为15,15*4字节=60字节)。
6个保留位
6个标志位
:
URG 紧急指针,告诉接收TCP模块紧要指针域指着紧要数据
ACK 置1时表示确认号(为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。
PSH 置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。
RST 置1时重建连接。如果接收到RST位时候,通常发生了某些错误。
SYN 置1时用来发起一个连接。
FIN 置1时表示发端完成发送任务。用来释放连接,表明发送方已经没有数据发送了。
对应图中16位:6012
16位窗口大小:
TCP的流量控制由连接的每一端通过声明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。窗口大小是一个16字节字段,因而窗口大小最大为65535字节。
对应图中16位:1ffe 换算结果:8190
16位检验和:
检验和覆盖了整个的TCP报文段: TCP首部和TCP数据。这是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。
对应图中16位:feda
16位紧急指针:
只有当U R G标志置1时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。
对应图中16位:0000
选项:
图
13-1和图13-2有8个字节选项,图13-3没有选项。最常见的可选字段是最长报文大小,又称为MSS (Maximum Segment
Size)。每个连接方通常都在握手的第一步中指明这个选项。它指明本端所能接收的最大长度的报文段。图13-1可以看出208号机可以接受的最大字节数
为1460字节,1460也是以太网默认的大小,在第三组的数据分析中可以看到数据传送正是以1460字节传送的。
对应图中16位:05ac 换算结果:1452
引用:
http://hi.baidu.com/duanqian/blog/item/7b62a5af31248ac97dd92a36.html
http://hi.baidu.com/duanqian/blog/item/a75e394e7ae6bccfd0c86a36.html
分享到:
相关推荐
#### 四、tcpdump常用参数说明 - **-i**:指定监听的网络接口。 - **-v**:增加输出的详细程度,可以多次使用(-vv、-vvv)。 - **-nn**:禁止DNS反向解析,显示IP地址而非主机名。 - **-c**:设置捕获的最大数据包...
命令行参数是tcpdump的强大之处,通过不同的参数组合,你可以定制捕获数据包的方式,例如只捕获特定主机、端口、协议或者满足特定条件的数据包。 以下是一些常用的tcpdump命令行选项: - `-i`:指定监听的网络接口...
在Linux操作系统中,网络分析是诊断和排查网络问题的关键步骤,而tcpdump和ping命令是进行这类分析的常用工具。本文将深入探讨这两个命令的原理、使用方法以及它们在Linux网络管理中的应用。 首先,让我们来看看`...
tcpdump是Linux系统中常用的网络数据包分析工具,它能够捕获网络上的数据包并进行解析,对于网络故障排查、网络安全分析以及协议学习等场景有着重要作用。本压缩包"tcpdump_exe.zip"包含了针对不同架构的tcpdump工具...
在Linux环境下,tcpdump是开发者和网络管理员常用的工具之一。tcpdump-4.9.0是该软件的一个版本,此版本包含了从4.8.x到4.9.0的更新和改进。 描述中提到的"tcpdump4.9,pcap1.9",指的是tcpdump依赖于libpcap库,...
其中`选项`用于指定捕获参数,如网卡接口、数据包数量等;`表达式`则定义了过滤条件,用于精确控制捕获哪些数据包。 #### 三、高级过滤技巧详解 ##### 1. 过滤主机 - **主机过滤**:抓取所有经过指定网卡,目的或...
首先,TCPDump的常用选项包括: 1. `-i <interface>`:指定要监听的网络接口,例如`eth0`或`wlan0`,这是必须提供的参数,用于确定TCPDump将在哪个网络设备上进行抓包。 2. `-v`或`-vv`:指定详细输出模式,`-v`...
Tcpdump的过滤机制是其强大的特性之一,可以通过指定参数来筛选需要抓取的数据包。例如,通过`tcpdump -i eth0 src host 192.168.0.5`命令,可以截获所有来源于192.168.0.5的数据包。若想进一步查看该主机与Web...
Tcpdump的其他常用参数包括: - `-c`:指定捕获数据包的数量,达到指定数量后自动停止。 - `-e`:显示数据链路层的MAC地址信息。 - `-q`:简洁模式,减少每行的输出信息。 - `-r`:从已有的pcap文件中读取并解析...
简介 很多时候我们的系统部署在Linux系统上面,在一些...tcpdump的参数众多,通过man tcpdump可以查看tcpdump的详细说明,这边只列一些自己常用的参数: tcpdump [-i 网卡] -nnAX '表达式' 各参数说明如下: -i:int
在Linux环境下,常用的抓包工具有tcpdump和Wireshark,后者是图形界面工具,通常在桌面系统中使用,而树莓派更适合使用命令行工具tcpdump。 在树莓派上安装tcpdump: 1. 打开终端。 2. 使用`sudo apt update`更新...
- **常用选项**: - `-l`:标准输出模式,将结果输出到屏幕上; - `-S`:显示TCP序列号; - `-A`:显示ASCII格式的数据; - `-n`:不将IP地址转换为主机名; - `-s 0`:不限制数据包的最大长度,即抓取完整的...
tcpdump 是 Linux 命令行下常用的一个抓包工具,记录一下平时常用的方式,测试机器系统是 Ubuntu 12.04。tcpdump 的命令格式为:tcpdump [-i 网卡] -nnAX 表达式。 参数说明: * -i:interface 监听的网卡。 * -nn...
### shell常用命令总结 在IT行业的日常开发与运维工作中,熟练掌握shell命令是提升效率、解决问题的关键技能之一。本文将基于提供的文件信息,深入解析一系列常用的shell命令及其应用场景,旨在帮助读者更好地理解...
在Android系统中,进行网络数据抓包是开发者和网络分析人员常用的技术手段,用于检测应用程序的网络行为、排查网络问题或进行安全分析。TCPDUMP是一款强大的网络封包分析软件,它可以捕获网络中的数据包,并将其保存...
在Android系统中,常用的抓包工具有Wireshark和 tcpdump。Wireshark是一款跨平台的网络协议分析软件,而tcpdump则是一个命令行工具,更适合于有经验的开发者使用。本案例中的"tcpdump.zip"可能包含了用于Android设备...
其中一种常用的技术手段就是利用`tcpdump`工具来进行网络数据包的捕获(抓包)。本文将详细介绍如何在具备Root权限的Android设备上使用`tcpdump`工具来实现这一目的。 #### 二、准备工作 1. **Android设备Root权限...