tcpdump初识

目录

 

背景


背景

目前所做的项目管理了近36w+的agent,用来接收apiserver集群(存储了任务的相关数据)推送过来的任务信息。当前的流程是agent会和apiserver节点建立grpc双向流式,当apiserver有任务的时候,会push任务信息给agent,并定时发送心跳请求来探活长连接。从现状来看,时不时会出现长连接的问题导致agent接收任务失败。

 

现状

在机器上执行netstat可以看到,agent和apiserver节点的44401端口建立了长连接,连接状态为ESTABLISHED。

$ netstat -ntp | grep 44401
tcp        0      0 10.75.67.194:43908      10.23.42.23:44401       ESTABLISHED -
tcp        0      0 10.75.67.194:20583      10.21.70.43:44401       ESTABLISHED -
tcp        0      0 10.75.67.194:56550      10.21.70.42:44401       ESTABLISHED -
tcp        0      0 10.75.67.194:16673      10.21.70.42:44401       ESTABLISHED -

但是如何判断这些连接是否还存活,通过执行tcpdump命令,可以看到agent和apiserver之间有定时的心跳包发送。

# tcpdump -nn -A tcp port 44401
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
21:08:09.699763 IP 10.21.70.42.44401 > 10.75.67.194.56550: Flags [P.], seq 3201124053:3201124069, ack 4157713705, win 500, options [nop,nop,TS val 3665227920 ecr 3191633648], length 16
[email protected]...
.F*
KC..q....F....).....2.....
.v... 10.21.70.42.44401: Flags [.], ack 16, win 408, options [nop,nop,TS val 3191663648 ecr 3665227920], length 0
E..4..@.@..`
KC.
.F*...q...)..F......r.....
.<. .v..
21:08:11.978169 IP 10.75.67.194.16673 > 10.21.70.42.44401: Flags [P.], seq 2610865558:2610865954, ack 709733236, win 229, options [nop,nop,TS val 3191665927 ecr 3665200222], length 396
  • nn ,表示不解析抓包中的域名(即不反向解析)、协议以及端口号
  • tcp port 44401 ,表示只显示 TCP 协议的端口号(包括源端口和目的端口)为 44401 的包。
  • -A,标识将内容以ASCII显示。

你可能感兴趣的:(linux)