一、三次握手深度分析
1、简单介绍:TCP是工作在在OSI 7层模型中的第三层传输层,由于TCP协议是全双工的传输协议,所以在建立连接的过程中,必须保障通信双方都能正常发送和接受数据,那么为了确保在通信前,通信双方必须保证自己和对方都能发送和接收,TCP连接的三次握手就保证了这个过程。
2、过程分析:
(1)从客户端发出SYN请求连接到服务器接收到SYN请求数据包,这次握手完成后服务器知道自己能够正常接收,对方能够正常发送。
(2)服务器接收到客户端的SYN连接请求后,发送ACK确认数据包的同时发送SYN连接请求数据包。客户端接收到这个数据包后完成第二次握手,这次我握手完成后,客户端知道对方能正常接收和发送,也知道自己能正常接收和发送。
(3)之后客户端发送最后的确认数据包,服务器接收到这个确认数据包后知道对方能正常接收,知道自己能正常发送。这样成功的三次握手阶段就完成了。
3、抓包分析
抓包分析主要查看在TCP连接刚开始的三次握手的数据包,尤其是关注三次握手的***和确认号必须保证符合TCP连接的规定,这个在上图中也有体现,举例说明一下;比如第一次握手的数据包的***是10,那么第二次握手的确认号就是11,假设第二次握手的***是20,那么第三次握手的确认号就是21。
二、TCP连接建立失败的情况分析
TCP连接建立失败的原因一般分为两种,第一种是被服务器拒绝连接,第二种是在连接的过程当中发生丢包,在wireshark中确定这两种情况的操作如下:
1、被服务器拒绝
(1)启用wireshark的Relative Sequence Number功能,主要是为了让***从初始值开始计算没这样方便过滤关注的数据包。
(2)使用表达式(tcp.flags.reset==1)&&(tcp.seq==1)过滤数据包,就可以在在过滤到的数据包中看到被服务器拒绝的数据包,在详情中可以看到拒绝连接的原因。
2、丢包:同以一种情况,只是在数据包过滤的时候将过滤表达式变为(tcp.flags.syn==1)&&(tcp.analysis.retransmission)来过滤数据包,也就是过滤出数据包重传的记录。就说明数据包在中途丢失。