========================================
作者: 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
分享到:
相关推荐
简介 很多时候我们的系统部署在Linux系统上面,在一些...tcpdump的参数众多,通过man tcpdump可以查看tcpdump的详细说明,这边只列一些自己常用的参数: tcpdump [-i 网卡] -nnAX '表达式' 各参数说明如下: -i:int
常用参数: -A -vA “nnt”表示以tcpdump风格输出报文信息,并且不打印时间戳、主机名、端口服务名称。注意不要使用-c参数来指定打印的数据报文的个数,这样发送出去的报文也会变少 -c 双网卡回放报文必选参
常用参数: -v 显示详细信息 参考实例 显示邮件发送队列: [root@linuxcool ~]# mailq 显示邮件发送队列详细信息: [root@linuxcool ~]# mailq -v 与该功能相关的Linux命令:rdate命令 – 显示其他主机的日期...
| 7 | 内核sysctl.conf的常用参数优化释义(只显示不进行优化) | | 8 | 服务器字符集调整到utf-8 | | 9 | 优化缩短TCP断开连接自动回收时间为20s | | k8s | 关闭swap并将桥接的IPv4流量传递到iptables的链(k8s适用...
大家都知道,unix系统下有个tcpdump的抓包工具,非常好用,是做troubleshooting的好帮手。其实在windows下也有一个类似的工作,叫windump,可以方便的根据需要进行抓包。下面我举几个常用例子介绍一下这个工具的使用...
第十九章 系统优化和核心参数调整 19.1 系统性能与优化概述 19.2 性能监视与测试 19.3 系统优化的相关命令 19.3.1 uptime 19.3.2 free 19.3.3 top 19.3.4 vmstat 19.3.5 ps 19.4 系统优化措施 第二十章 X Window...
2.3.2 内核参数选项 8 2.3.3 安装程序 9 2.3.4 选择一种安装方法 9 2.3.5 光盘安装 10 2.4 硬件配置 14 2.4.1 选择鼠标 14 2.4.2 配置X Window系统 14 2.4.3 配置网络 14 2.4.4 设置时区 15 2.4.5 选择服务自动启动 ...
11.1.1 常用的磁盘空间 ??管理工具 286 11.1.2 使用df命令检查磁盘 ??空间的使用情况 286 11.1.3 使用du命令检查目录 ??占用的存储空间 289 11.1.4 使用find命令找出超过 ??一定容量限制的文件 290 11.1.5 使用find...
11.1.1 常用的磁盘空间 ??管理工具 286 11.1.2 使用df命令检查磁盘 ??空间的使用情况 286 11.1.3 使用du命令检查目录 ??占用的存储空间 289 11.1.4 使用find命令找出超过 ??一定容量限制的文件 290 11.1.5 使用find...
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...