TCP三次握手
第1次:客户端向服务器发送SYN连接请求 + seq序列号(x),自身状态为connect
第2次:服务器收到后,向客户端发送SYN请求应答 + seq新序列号(y) + ack(x+1),自身状态为listen
第3次:客户端向服务器发送ACK(y+1)
如此,连接便已建立了,可以开启数据传输了
TCP四次挥手
当数据发送完成之时,由任意端发起,如:
第一次:客户端向服务器发送Fin + seq(x+2) + ack (y+1),自身状态为close
第二次:服务端改自身状态为CLOSE
WAIT,并向客户端发送ACK(x+3)回应,表示已收到,客户端收到之后改自身状态由close改为FIN_WAIT
第三次:服务端向客户端发送fin + seq(y+1) 表示数据已经传输完,没有要传的了,可以关闭连接了,自身状态为close
第四次:客户端改自身状态为TIME_WAIT,并向服务端发送ACK(y+2)
过程TOP
案例:
[root@localhost ~]# tcpdump -i ens33 -nn host 192.168.1.110 and port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
三次握手
16:14:51.893817 IP 192.168.1.110.47384 > 192.168.1.109.80: Flags [S], seq 3726944576, win 29200, options [mss 1460,sackOK,TS val 22336471 ecr 0,nop,wscale 7], length 0
16:14:51.894149 IP 192.168.1.109.80 > 192.168.1.110.47384: Flags [S.], seq 2652898357, ack 3726944577, win 28960, options [mss 1460,sackOK,TS val 21809149 ecr 22336471,nop,wscale 7], length 0
16:14:51.894714 IP 192.168.1.110.47384 > 192.168.1.109.80: Flags [.], ack 1, win 229, options [nop,nop,TS val 22336472 ecr 21809149], length 0
数据传输
16:14:51.895442 IP 192.168.1.110.47384 > 192.168.1.109.80: Flags [P.], seq 1:78, ack 1, win 229, options [nop,nop,TS val 22336472 ecr 21809149], length 77: HTTP: GET / HTTP/1.1
16:14:51.895709 IP 192.168.1.109.80 > 192.168.1.110.47384: Flags [.], ack 78, win 227, options [nop,nop,TS val 21809150 ecr 22336472], length 0
16:14:51.898799 IP 192.168.1.109.80 > 192.168.1.110.47384: Flags [P.], seq 1:253, ack 78, win 227, options [nop,nop,TS val 21809153 ecr 22336472], length 252: HTTP: HTTP/1.1 200 OK
16:14:51.899574 IP 192.168.1.110.47384 > 192.168.1.109.80: Flags [.], ack 253, win 237, options [nop,nop,TS val 22336477 ecr 21809153], length 0
四次挥手
16:14:51.900241 IP 192.168.1.110.47384 > 192.168.1.109.80: Flags [F.], seq 78, ack 253, win 237, options [nop,nop,TS val 22336477 ecr 21809153], length 0
16:14:51.927222 IP 192.168.1.109.80 > 192.168.1.110.47384: Flags [F.], seq 253, ack 79, win 227, options [nop,nop,TS val 21809182 ecr 22336477], length 0
16:14:51.927518 IP 192.168.1.110.47384 > 192.168.1.109.80: Flags [.], ack 254, win 237, options [nop,nop,TS val 22336504 ecr 21809182], length 0
^C
10 packets captured
10 packets received by filter
0 packets dropped by kernel
注:上面案例中,四次挥手中的第二次和第三次合并为了一次(SYN+seq+ack)
---------------------------end