通过Wireshark分析TCP原理

Posted akyna-zh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过Wireshark分析TCP原理相关的知识,希望对你有一定的参考价值。

使用Wireshark作为抓包工具,通过ftp文件上传过程分析tcp原理,主要分析过程包括三次握手建立连接的过程,文件传输的过程,四次挥手断开连接的过程。

设备信息

  1. 主机:安装了ftp的window11(ip:172.23.224.1)
  2. 虚拟机:安装了vsftpd的wsl2(ubuntu18)(ip:172.23.234.65)

操作与分析过程

打开Wireshark进行捕获

  1. 选择**vEthernet(WSL)**连接进行捕获。
  2. 使用过滤表达式ip.addr==172.23.234.65&&tcp进行捕获。

通过ftp上传文件

PS C:\\Users\\akyna> ftp 172.23.234.65
连接到 172.23.234.65。
220 (vsFTPd 3.0.3)
200 Always in UTF8 mode.
用户(172.23.234.65:(none)): akyna
331 Please specify the password.
密码:
230 Login successful.

ftp> put a.txt
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
ftp: 发送 42 字节,用时 0.00秒 42000.00千字节/秒。

可见已经传输成功。

对捕获的数据进行分析

回到Wireshark,分析捕获的数据:

上图已经包括了三次握手建立连接,登录验证,文件传输,四次挥手结束连接这几个主要的过程。

下面通过生成流量图进行具体分析:

(一)三次握手建立连接

  • 第一次握手:client通过6518端口向server发送连接请求,发送SYN和Seq,server在端口21进行监听并接收到请求。

  • 第二次握手:server监听到请求后发送SYN,ACK和Seq,client接收到回复。

  • 第三次握手:client接收到恢复后发送Seq(等于刚接收到的Ack的值)和Ack,server接收到并确认Seq正确,完成连接。

(二)文件传输过程

  1. 首先,还是三次握手在client端口6540和server端口20之间建立连接,这两个端口用于传输数据;
  2. 接着,server端口21回复"Response 150 Ok to send data"给client端口6518,含PSH标识,表明可以开始传输数据;
  3. 然后,client开始发送数据包,长为42,且含PSH,表示可以接收数据,server接收到后回传的Ack应该加上数据包长,即1+42;
  4. 接着,client发送了FIN标识,表明发送完毕,server发送了FIN标识,表明将停止接收,client发送ACK确定server可以停止接收;
  5. 最后,client端口6518回复"Response 226 Transfer complete"给server端口21,表明传输完毕。

(三)四次挥手结束连接

  • 第一次挥手:server发送了FIN标识,向client确认是否可以关闭连接

  • 第二次挥手:client接收到FIN,发送ACK,确定server可以关闭连接,这时server确定ACK正确后将进入半关闭态,还可以接收client发送的数据;

  • 第三次挥手:这次由client发送FIN标识,让server真的关闭连接

  • 第四次挥手:server关闭连接,发送ACK向client确认已关闭,,至此,ftp通信完毕。

over.

以上是关于通过Wireshark分析TCP原理的主要内容,如果未能解决你的问题,请参考以下文章

007_wireshark分析TCP的三次握手和四次断开

使用 WireShark 分析 TCP/IP 三次握手 和 四次挥手

如何分析wireshark追踪tcp流中的信息

WireShark抓包分析

Kali Linux --《网络安全》-- 使用 WireShark 对常用协议抓包并分析原理

计算机网络实验 实验5 运输层和应用层协议解析