WireShark网络分析的艺术(2/13 学习笔记)

一、三次握手深度分析

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)来过滤数据包,也就是过滤出数据包重传的记录。就说明数据包在中途丢失。

发布了31 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/SDBX_lyp/article/details/104316612