源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Linux tcpdump命令的用法详细解析

  • 时间:2021-06-16 01:17 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Linux tcpdump命令的用法详细解析
英文原意是dump traffic on a network ,即截获网络上的数据报,可以根据指定的网络接口来截获不同的数据报。它会输出在某个网络接口上符合匹配表达式的报内容的描述。当tcpdump完成抓包后,会打印出类似下面的内容:  9 packets captured 56 packets received by filter 17 packets dropped by kernel 当然,在读取网络上的数据包时,得需要特权,比如linux上的超级用户 [b]tcpdump用法[/b] tcpdump -A 用ascii打印出每个包信息,这个对于截获网页很方便 tcpdump -D 打印出当前系统的可用的网络接口。可以用-i选项来指定特定的接口 [img]http://files.jb51.net/file_images/article/201308/201308230851472.jpg[/img] tcpdump -F 使用文件作为输入的过滤表达式 tcpdump -i 在指定的接口上进行监听。如果未指定,tcpdump会从interface list 中寻找最低数字作为监听的接口 tcpdump -l  使标准输出成为缓冲区,如果你想在截获数据包的同时也查看数据,则可以使用下面命令 tcpdump -l > dat & tail -f dat tcpdump -S 打印出TCP绝对的序列号 tcpdump -w 将截获的数据包写到一个文件中 如果没有表达式,则网络上所有的包都会被截获 [b]例子TCP Packets[/b] 下面就是TCP 报文的格式 src > dst : flags data-segno ack window  urgent options(MSS, 时间戳,窗口规模选项) 1. 要截获特定标志位的TCP 包:在TCP header中,有8位是控制位 CWR | ECE | URG | ACK | PSH | RST | SYN | FIN 有TCP 头的结构中        0                            15                                     31        -------------------------------------------------------------------------        |          source port          |       destination port      |        -------------------------------------------------------------------------        |                        sequence number                       |        -------------------------------------------------------------------------        |                     acknowledgment number                |        --------------------------------------------------------------------------        |  HL   | rsvd  |C|E|U|A|P|R|S|F|        window size   |        --------------------------------------------------------------------------        |         TCP checksum          |       urgent pointer    |        -------------------------------------------------------------------------- 8为控制位是TCP头中的第13个 8-bits组                        |                        |                        |------------------------|                        |C|E|U|A|P|R|S|F|                        |------------------------|                        |7     5    3        0| 当SYN位为1时 则该8-bits组的二进制表示为:00000010  -> 2 所以只截获TCP中标志位为SYN=1的表达式为 tcpdump -i 2 tcp[13]==2   tcp[13]==2  就是让TCP数据报中的第13个8bits组的值为2 [img]http://files.jb51.net/file_images/article/201308/201308230851473.jpg[/img] 2. 如果TCP报文中带有SYN-ACK,我们认为他是带SYN的报文,那么该咋截获呢                        |                        |                        |------------------------|                        |C|E|U|A|P|R|S|F|                        |------------------------|                        |7     5    3        0| 此时该8bits组的二进制表示为 00010010 ->18 此时应该不是 tcp[13] == 18,这样只能截获ACK-SYN报文,而不能再截获SYN报文啦,这时我们应该要维持SYN所在位的值,可以用上逻辑与运算,即如下 ‘tcp[13] & 2 == 2' ,就可以啦 注意:下面截图的TCP报文的第二条的标志位 [S.] [img]http://files.jb51.net/file_images/article/201308/201308230851474.jpg[/img] UDP Packets [b]UDP 报文的格式为[/b]   actibude.who > broadcast.who : udp 84 who 为端口号,artinide,broadcast都是主机的网络地址, 84为UDP数据报的大小 UDP name Server Requests [b]请求报文的格式为[/b] src > dst : id op? flags qtype qclass name(len) h2opolo.1538 > helios.domain : 3+ A? ucbvax.berkeley.edu (37) 主机hopolo询问主机helios上的domain服务的地址记录(qtype=A),该机路与ucbvax.berkeley,edu相关联 查询id为3,‘+'表明 recursion-desired flag 被设置,query的长度为37字节,没有包括UDP与IP的头长度 UDP Name Server Responses src > dst : id op rcode flags a/n/au type class data(len)  helios.domain > h2opolo.1538 : 3 3/3/7 A 128.32.137.3 (273) 该报文是helios响应来自h2opolo的query id 为3,且带有3个answer record,3 个name server records 和 7 个additional records 第一个 answer record 是type A ,它数据的大小为273字节,包括UDP和IP报文头
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部