我正在研究网络。我想通过ICMP协议传输文件,然后通过wireshark捕获网络流量来解码原始数据。但我不知道如何通过ICMP协议传输文件。所以我的问题是如何通过ICMP在主机之间传输文件。 非常感谢。
答案 0 :(得分:1)
如果你研究TCP/IP层,你会发现ICMP是一个互联网层协议,它的目的是:
Internet控制消息协议(ICMP)是Internet协议套件中的支持协议。网络设备(如路由器)使用它来发送错误消息和操作信息。
因此ICMP不是像HTTP或FTP等数据传输协议。从技术上讲,在任何情况下都不可能使用ICMP作为数据传输协议,除非你改变ICMP的结构和所有编码然后它将不再是ICMP
答案 1 :(得分:1)
如果您坚持使用ICMP发送数据(在某些用例中这是合理的),建议您阅读this article和that one。第一个还包含使用ICMP传输数据的客户端和服务器的概念验证C代码。您可以找到另一个示例written in C++ here。
这种方法背后的想法是使用ICMP Echo(ping)请求和响应的数据(有效载荷)部分来传输数据(在这种情况下是文件)。大多数设备都会回复ICMP Echo(ping)请求,因此当其他协议(例如ssh,smb,ftp等)被阻止时,它就是一种传输文件的方式。