目录
一、TCP/IP协议在协议中分层的位置
二、TCP三次握手流程
三、打开wireshark抓包
四、TCP三次握手分析
1、TCP第一次握手
五、四次挥手流程
六、四次挥手抓包分析
1、客户端向服务端发送⼀个SYN=1(请求建立连接),并生成一个序列号seq=j。
2、服务端接收到SYN=1后,给客户端发送⼀个SYN=1与ACK=1;并将ack置为j+1;同时生成一个序列号seq=k。
3、客户端接收到会检查ack是否为j+1与ACK是否为1,如果是,则会给服务端发送一个ACK=1与ack=k+1,以及自己的序列号seq=j=1; 服务端接收到会检查ACK是否为1与ack是否为k+1,如果是则代表连接建立成功,两者间可以传递数据。
本地IP:10.168.1.112
百度IP:39.156.66.18
筛选规则:tcp and ip.addr==10.168.1.112 and tcp.port==50830
封包详细信息用来查看协议中的每个字段,各行信息显示对应的不同层级,如下图所示,分别是物理层、数据链路层、网络层、传输层,如果有应用层数据会显示第五层
客户端向服务端发送⼀个SYN=1(请求建立连接),并生成一个序列号seq=j(实验中j=0)
源端口50830 ---->目标端口36688
2、服务端接收到SYN=1后,给客户端发送⼀个SYN=1与ACK=1;并将确认序列号ack置为j+1(即SYN+1=0+1=1);同时生成一个序列号seq=k(实验中k=0)
3、客户端接收到会检查服务端回复的确认序列号ack是否为j+1(即SYN+1=0+1=1)与ACK是否为1,如果是,则会给服务端发送一个ACK=1与ack=k+1(即第二次握手时服务端生成的序列号seq,k+1=0+1=1),以及自己的序列号seq=j=1; 服务端接收到会检查ACK是否为1与ack是否为k+1,如果是则代表连接建立成功,两者间可以传递数据
4、也可直接通过标志位看三次握手的数据包
1、Client端发起中断连接请求,也就是发送FIN报文。意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。
2、Server端接到FIN报文后,发送ACK,告诉Client端,“你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。
3、当Server端确定数据已发送完成,则向Client端发送FIN报文,告诉Client端,”好了,我这边数据发完了,准备好关闭连接了"。
4、Client端收到FIN报文后,就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传
Server端收到ACK后,就知道可以断开连接了。
Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!
抓包过程中,四次挥手只抓到了三个包的报文,查询了相关资料,说是因为服务器端在给客户端传回的过程中,将两个连续发送的包进行了合并。以下是基于抓到的三个包做的分析,如有错误请指正
1、第一次挥手:Client端发起中断连接请求,也就是发送FIN报文。意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据
将标志位FIN和ACK置为1,序号seq=306,确认序号ack=21
2、第二次挥手:Server端接到FIN报文后,发送ACK,告诉Client端,“你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文
此时,服务端回复客户端:FIN和ACK(标志位FIN=1,ACK=1),确认序列号ack为收到的序列号(即第一次挥手携带的SYN)加1,即ack=306+1=301。序列号seq为收到的确认序列号21
(抓包时第二次挥手和第三次挥手合并了)
3、第四次挥手:Client端收到FIN报文后,就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传
客户端收到服务器发送的FIN之后,发回ACK确认(标志位ACK=1),确认序列号为收到的序号加1,即21+1=22。序列号为收到的确认序列号307
Server端收到ACK后,就知道可以断开连接了。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!