2017-03-02 183 views
-2

我在研究网络。我想通过ICMP协议传输文件,然后通过wireshark捕获网络流量来解码原始数据。但我不知道如何通过ICMP协议传输文件。所以我的问题是如何通过ICMP在主机之间传输文件。 非常感谢。通过ICMP传输文件

+1

你不能,除非你滥用ICMP的子协议之一。你应该看看UDP。 – EJP

+0

似乎你是网络新手,首先阅读有关TCP/UDP的内容。实际上,确实存在一种称为ICMP隧道的方式来通过ICMP传输文件,但我不认为你的意思是这样。 – jfly

回答

1

如果研究约TCP/IP层,你会发现,ICMP是因特网层协议,其目的是:

因特网控制消息协议(ICMP)是在因特网协议组的支撑协议。网络设备(如路由器)使用它来发送错误消息和操作信息。

所以ICMP并不像HTTP或FTP等技术上来说,数据传输协议,它是不可能在任何情况下使用ICMP数据传输协议,除非你改变结构和ICMP的所有编码,然后它会不不再是ICMP。

0

如果你坚持使用ICMP发送数据(这在某些使用情况下是合理的),我建议你阅读this articlethat one。第一个也包含使用ICMP传输数据的客户端和服务器的概念证明C代码。你可以找到另一个例子written in C++ here

此方法背后的想法是使用ICMP Echo(ping)请求和响应传输数据(或本例中的文件)的数据(有效负载)部分。大多数设备都会回复ICMP Echo(ping)请求,所以当其他协议(如ssh,smb,ftp等)被阻止时,这是一种传输文件的方式。