dreamnow0 2019-08-03
工作中的常用用法
一、tcpdump常用用法:
1,-i 指定网口 -vnn 常用选项,显示详细信息并且不解析IP,端口 ;
抓取某个网口上发往或来自某个IP的报文
tcpdump -i ethX host 192.168.1.100 -vnn
2,可以用or 或者and 连接多个过滤条件,port前的tcp表示tcp协议,也可为udp;
抓取某个网口上发往或来自某个IP、并且指定端口的报文
tcpdump -i ethX host 192.168.1.100 and tcp port 22(端口号) -vnn
3, -c 指定抓取报文的数量, 用 -w 把抓取的数据包写入文件;
抓取某网口50个包并写入dump.cap(为什么是 .cap?因为wireshark识别此扩展名)文件:
tcpdump -i ethX -c 50 -w /root/dump.cap
4,可以用关键字 src 或者 dst 表示 源 或者 目的;
抓取源端口号为22(tcp协议)的报文
tcpdump -i ethX tcp src port 22(端口号) -vnn
以上为常用用法,可以根据实际情况灵活组合。
二、wireshark分析报文:
1,淡紫色数据包为正常数据包,包括数据包和ACK包
2,黑色为异常包,包括丢包ACK、重传等
2.1 Packet Size limited during capture
这个标志说明数据包并没被完全抓到,而只是抓到了一部分。这种情况多数是由于抓包方式引起,在某些系统中tcpdump只抓每个帧的前96个字节。我们可以”-s”参数来指定想要的字节数。
2.2 TCP previous segment not captured
TCP传输过程中同一台主机发出的数据应该是连续的,即后一个数据包的Sequence应该等一前一个数据包的sequence+len,如果后面捕捉到的数据包不符合这样的规律,即sequence比前一个包的sequence+len大的话,我们就可以认定中间的数据包就没有抓到,导致这个数据包没有按时到达的原因可能有乱序或者丢包导致。
2.3 TCP ACKed unseen segment
当WireShark发现被ACK的那个包没被抓到,就会提示[TCP ACKed unseen segment],这种提示一般没有什么问题,就是WireShark漏抓了。
2.4 TCP Dup ACK
当出现乱序或者丢包等情况的时候,本来应该收到的数据包没有收到,反而收到了一些Sequence号比较大的数据包,这时候客户端就会回复一个ACK,ACK本应该收到却没有收到的包,如果后面来的还不是所期望的数据包,那么客户端每收到一个其他数据包就会回复一个ACK,由于这些ACK是重复的,所以就会提示[TCP Dup ACK]。
2.5 TCP Out-of-Order
TCP传输过程中数据包的Sequence号应该是持续递增的,也就是说每个数据包之间应该只差一个Len的数据,但是在传输过程中如果Sequence比较大的数据包比Sequence比较小的数据包先到达的话,就会触发[TCP Previous Segment not cpatured],然后如果在后续收到了“迟到”的数据包,就会被标记[TCP Out-of-order]。
2.6 TCP Fast Retransmission
当服务器收到3个或以上的[TCP Dup ACK]后就会判定所ACK的包丢失了,哪怕还没有超过定时器的规定,都会立即重新发送,客户端收到后会标记为[TCP fast retransmission]。
2.7 TCP Retransmission
一般来说一个数据包丢失后又没有足够的后续数据包来触发[TCP Fast Retransmission]的话,超过定时器的时限后就会触发超时重传,这时候客户端收到的数据包就会被标记[TCP Retransmission]。
2.8 TCP Zerowindow
在TCP数据包中,Info那一栏的中的”win=XX”中XX代表了接收窗口的大小,代表了这个信息的源地址的主机还有多少数据可以接收,或者说缓存区还有多少空间。当win=0的时候就会给相应ACK打上[TCP Zerowindow]的标志,告诉发送方我没有数据可以接收了。
2.9 TCP window full
当出现这个标志的时候证明发送方已发送的但还没有确认的数据包已经达到了接收方接收窗口的上限,也就是说这个时候发送方就会停止发送数据,而不是等接收方回复[TCP Zerowindow]后才停止发送。所以[TCP window full]针对的是发送方没法发送数据,而[TCP Zerowindow]指的是接收方没法接收数据,不管出现哪一种情况,都会中断数据的传输,直到缓存区有新的空间存放数据。
3,数据包的标签从左到右依次为:
数据包编号---时间---源地址---目标地址---协议类型---长度---总长度---数据包序号---下一个数据包序号---ACK号---身份识别码---RTT---一些窗口参数
4,再点击一个报文后,我们在WireShark的下端可以看到更为详细的信息:
分别对应OSI七层模型的,数据链路层、网络层、传输层、应用层