tcpdump查看redis连接过程

1,948 阅读5分钟

在看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$ telnet host_redis 6379
2
3    Trying host_redis...
4
5    Connected to host_redis
6
7    Escape character is '^]'.
8
9    ^]
10
11    telnet> quit

tcpdump参数介绍

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

tcpdump输出介绍

注:「本机服务器为host_local」

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

输出信息

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

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

Al text
Al text

三次握手流程

client向server发送SYN

注:「seq=x=2440373000」

123:32:26.882139 IP host_local.55638 > host_redis.6379Flags [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」

123:32:26.882181 IP host_redis.6379 > host_local.55638Flags [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

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

四次挥手

client向server发送FIN结束命令

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

server向client发送响应信息,

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

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

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

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

client发送ACK给server进行确认

123:32:31.533767 IP host_local.55638 > host_redis.6379Flags [.]ack 2, win 4104, options [nop,nop,TS val 776811267 ecr 3145181828]length 0