tcpdump查看redis连接过程

在看tcpdump的手册的时候,突然想起tcp的三次握手,四次挥手;心血来潮,就用tcpdump抓取redis的连接过程。

操作如下:「redis的服务器是host_redis,端口为6379」

1、在redis的服务器,抓取6379及tcp的网络协议包

1
[root@test01v /]# tcpdump port 6379 and tcp -X -s 0

2、在客户端使用telnet连接redis

1
2
3
4
5
6
7
8
9
10
11
$ telnet host_redis 6379
Trying host_redis...
Connected to host_redis
Escape character is '^]'.
^]
telnet> quit

tcpdump参数介绍

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
port
指定端口号
tcp
指定协议为tcp
-X
以16进制和ASCII码形式显示每个报文
-s
从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节

tcpdump输出介绍

注:「本机服务器为host_local」

1
02:45:1.622225 IP host_local.55638 > host_redis.6379: Flags [S], seq 1105795559, win 29200, options [mss 1460,sackOK,TS val 43986276 ecr 0,nop,wscale 7], length 0

输出信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
02:45:1.622225是时间
host_local.55638 > 是发送端主机和端口,符号‘ >’ 表明数据的传输方向
host_redis.6379接收端的主机名和端口
Flags [S]TCP包中的标志信息
[S] 表示这是一个SYN请求
[S.] 表示这是一个SYN+ACK确认包:
[.] 表示这是一个ACT确认包, (client)SYN->(server)SYN->(client)ACT 就是3次握手过程
[P] 表示这个是一个数据推送,可以是从服务器端向客户端推送,也可以从客户端向服务器端推
[F] 表示这是一个FIN包,是关闭连接操作,client/server都有可能发起
[R] 表示这是一个RST包,与F包作用相同,但RST表示连接关闭时,仍然有数据未被处理。可以理解为是强制切断连接
seq 1105795559 序列号
win 29200 指滑动窗口的大小
option
length 0 指数据包的大小为0

tcp三次握手,四次挥手图示:

Al text

三次握手流程

client向server发送SYN

注:「seq=x=2440373000」

1
23:32:26.882139 IP host_local.55638 > host_redis.6379: Flags [SEW], seq 2440373000, win 65535, options [mss 1366,nop,wscale 5,nop,nop,TS val 776806643 ecr 0,sackOK,eol], length 0

server向client发送一个SYN,ACK包

注:「ack=x+1=2440373001;seq=y=3103132894」

1
23:32:26.882181 IP host_redis.6379 > host_local.55638: Flags [S.E], seq 3103132894, ack 2440373001, win 14480, options [mss 1460,sackOK,TS val 3145177219 ecr 776806643,nop,wscale 7], length 0

client向server响应一个ACK

1
23:32:26.922149 IP host_local.55638 > host_redis.6379: Flags [.], ack 1, win 4104, options [nop,nop,TS val 776806681 ecr 3145177219], length 0

四次挥手

client向server发送FIN结束命令

1
23:32:31.490726 IP host_local.55638 > host_redis.6379: Flags [F.], seq 1, ack 1, win 4104, options [nop,nop,TS val 776811227 ecr 3145177219], length 0

server向client发送响应信息,

注:表示收到client的结束信号,即将关闭连接

1
23:32:31.490893 IP host_redis.6379 > host_local.55638: Flags [.], ack 2, win 114, options [nop,nop,TS val 3145181828 ecr 776811227], length 0

server关闭连接,并发送FIN给client

1
23:32:31.490929 IP host_redis.6379 > host_local.55638: Flags [F.], seq 1, ack 2, win 114, options [nop,nop,TS val 3145181828 ecr 776811227], length 0

client发送ACK给server进行确认

1
23:32:31.533767 IP host_local.55638 > host_redis.6379: Flags [.], ack 2, win 4104, options [nop,nop,TS val 776811267 ecr 3145181828], length 0
坚持原创技术分享,您的支持将鼓励我继续创作!