当前位置: 首页 > Linux

【调试工具】tcpdump

时间:2023-04-06 05:30:47 Linux

原文地址:tcpdump抓包工具,用于调试网络通信程序。Tcpdump是一个必不可少的工具。tcpdump非常强大,可以看到网络通信的每一个细节。比如TCP,可以看到3次握手,PUSH/ACK数据推送,4次关闭波,都是细节。包括每个网络包收到的字节数和时间,最简单的用法示例:sudotcpdump-ianytcpport11211-i参数指定网卡,any表示所有网卡tcp指定只监听指定的TCP协议端口监听端口tcpdump需要root权限,需要查看通信数据内容,可以加-Xnlps0参数,其他更多参数参考网上的文章演示一个memcache连接,赋值,取值,关闭连接process执行命令:telnet10.8.34.2711211run结果:15:14:34.336031IP10.8.34.13.46103>10.8.34.27.memcache:Flags[S],seq3049437196,win14480,options[mss1460,sackOK,TSval910488745ecr4129,nop,3wscale7],length015:14:34.336057IP10.8.34.27.memcache>10.8.34.13.46103:Flags[S.],seq3663074357,ack30471437,win14480,options[mss1460,sackOK,val4129152433ecr910488745,nop,wscale7],length015:14:34.336159IP10.8.34.13.46103>10.8.34.27.memcache:Flags[.],ack1,win114,options[nop,nop,TS48ecr4129152433],length0执行命令:getuserId运行结果:15:23:40.025373IP10.8.34.13.46103>10.8.34.27.memcache:Flags[P.],seq15:27,ack6,win114,options[nop,nop,TSval911034453ecr4129686634],长度1215:23:40.025571IP10.8.34.27.memcache>10.8.34.13.46103:Flags[P.],seq6:35,ack27,win114,options[nop,nop,TSval4129698122ecr911034453],长度2915:23:40.025768IP10.8.3.46103>10.8.34.27.memcache:Flags[.],ack35,win114,options[nop,nop,TSval911034453ecr4129698122],length0执行命令:setusername004运行结果:15:27:45.985897IP10.8.34.13.46103>10.8.34.27.memcache:标志[P.],seq153:173,ack160,win114,选项[nop,nop,TSval911280417ecr4129956905],长度27IP10.8.34.27.memcache>10.8.34.13.46103:标志[.],ack173,win114,选项[nop,nop,TSval4129944122ecr911280417],长度0运行命令:nick运行结果:15:28:47.625886IP10.8。34.13.46103>10.8.34.27.memcache:标志[P.],seq173:179,ack160,win114,选项[nop,nop,TSval911342058ecr41299464122],长度615IP10.8.34.27.memcache>10.8.34.13.46103:标志[.],ack179,win114,选项[nop,nop,TSval4130005722ecr911342058],长度015:28:47.626046IP10.8.34.27.memcache>10.8.34.13.46103:标志[P.],seq160:168,ack179,win114,选项[nop,nop,TSval4130005723ecr9113462058],长度815IP10.8.34.10.46103>10.8.34.27.memcache:Flags[.],ack168,win114,options[nop,nop,TSval911342058ecr4130005723],length0执行命令:getusername运行结果:15:29:59.978653IP10.8.34.13.46103>10.8.34.27.memcache:Flags[P.],seq179:193,ack168,win114,options[nop,nop,TSval911414421ecr4130005723:415:21],长度9159.978743IP10.8.34.27.memcache>10.8.34.13.46103:标志[P.],seq168:199,ack193,win114,选项[nop,nop,TSval4130078075ecr9114657.991],长度91:31IP10.8.34.13。46103>10.8.34.27.memcache:Flags[.],ack199,win114,options[nop,nop,TSval911414421ecr4130078075],length0执行命令:quit运行结果:15:30:52.755257IP10.8.34.13.46103>10.8.34.27.memcache:Flags[P.],seq193:199,ack199,win114,选项[nop,nop,TSval911467215ecr4130078075],长度615:30:52.755534IP10.8.34.27.memcache>10.8.34.13.46103:Flags[F.],seq199,ack199,win114,options[nop,nop1,TSval895154131ecr6],length015:30:52.755843IP10.8.34.13.46103>10.8.34.27.memcache:Flags[F.],seq199,ack200,win114,options[nop,nop,TSval911467215ecr413013085],长度015:30:52.755865IP10.8.34.27.memcache>10.8.34.13.46103:Flags[.],ack200,win114,options[nop,nop,TSval4130130852ecr911467215],time026.785with5length:It精确到细微10.8.34.13.36686>10.8.34.27.memcache表示通信的流程,36686是客户端,memcache是??服务器[S]表示这是一个SYN请求[.]表示这是一个ACK确认package,(client)SYN->(server)SYN->(client)ACK是3次握手过程[P]表示这是一次数据推送,可以从server端推送到client,也可以从clienttotheserver[F]表示这是一个FIN包,是一个关闭连接的操作,client/server都可能发起[R]表示这是一个RST包,与F包功能相同,但是RST表示关闭连接时还有数据没有处理可以理解为强行切断连接。Win114指的是滑动窗口的大小(接收缓存的窗口大小)。长度12是指数据包的大小。三向握手部分:16:01:29.583827IP10.8.34.13.45468>10.8.34.27.memcache:Flags[S],seq2309185558,w??in14480,options[mss1460,sackOK,TSval913304024nop4148,196,wscale7],length0Flags为[S],表示是syn建立连接包(即第一次三次握手第二次握手)seq2309185558,序号为2309185558,实际上是第一次tcp三次握手的handshake10.8.34.13.45468,发送syn请求建立连接数据包win14480,表示窗口大小为14480字节。options[mss1460,sackOK,TSval913304024ecr4131967648,nop,wscale7]是tcp头中的可选字段,mss1460表示mss是发送方(客户端)通知的最大报文长度,发送方不会接收超过此长度的tcp消息段(此值与MTU相关)。sackOK表示发送方支持并同意使用SACK选项。wscale7表示发送方使用的窗口扩展因子为7