一、三次握手
打开wireshark软件,链接网络后,打开某个网站,用cmd查询ip地址(117.121.101.41),在应用显示过滤器中输入tcp and ip.addr == 117.121.101.41,可以得到三次握手。
设主机A运行TCP客户程序,B运行TCP服务器程序,初始两端TCP都处于CLOSED状态。
(1)第一次握手
A在建立TCP连接时,向B发出连接请求报文段,SYN=1,seq=1210116597。
(2)第二次握手
B收到连接请求报文后,如果同意连接,则向A发送确认。SYN=1,ACK=1,确认号ack=1210116597,seq=1035595156
(3)第三次握手
TCP客户进程收到B的确认,还要向B给出确认。ACK=1,ack=1035595157,seq=1210116598,TCP连接已建立,A进入ESTABLISHED状态,B收到A的确认后,也进入ESTABLISHED状态。
二、四次挥手
数据传输结束后,通信双方都可以释放连接,A和B处于ESTABLISHED状态。
(1)第一次挥手
A向TCP发出连接释放报文段,停止发送数据,主动关闭TCP连接。FIN=1,seq=3854755900,等待B的确认。
(2)第二次和第三次挥手
B收到连接释放报文段后发送确认,ack=3854755901,ACK=1,seq=1563532814,这时TCP处于半关闭状态。
B通知TCP释放连接,B发出连接释放报文段,FIN=1,seq=1563532814,ACK=1,ack=3854755901。
(3)第四次挥手
A收到B的连接释放报文段后,发送确认报文。ACK=1,seq=3854755901,ack=1563532815。
三、收获
在抓包的时候发现挥手只有三个数据包,第二次挥手和第三次挥手合并在一起,原因是:第三次挥手是B告诉A没有数据要发了,所以,在第一次挥手后,如果B没有给A发送数据,第二次和第三次挥手就可能合并传输。