不知道会不会有人看我的文章呢? 很多情况下,当我们无论是在百度或者谷歌上搜索数据包的伪装,最多的情况就是伪装自己的ip地址的网络攻击。今天我要讲的是通过修改UDP数据报报头以达到伪装成TCP数据包的过程。
首先你们可能会问为什么要伪装?
当今网络的传输层支持两大基本协议,TCP和UDP。TCP提供了一个可靠的,端对端有序的字节流传输。依靠TCP的网络应用主要包括万维网上的C/SHTTP传输,电子邮件和文件传输。相比TCP而言,UDP是一个更加轻量级的不稳定的协议,使用了更少的花费,因此延迟也更小。但作为交换,他不能保证端点之间可靠的流传输。通过UDP,数据可能会无序到达,重复出现或者没有预兆的丢失。由于这两个协议服务于不同的目的,在两个端点之间转发数据包的路由器对TCP和UDP的数据包的处理是不一样的。ISP所采取的措施是认定路由器对待这两种数据包,TCP的优先级要比UDP的高,因此在转发出现拥塞时,他们会丢弃UDP数据包而让TCP数据包通过,以增加吞吐量。
那么怎么做到呢?
主要是通过RAW socket重新对数据包进行构造得到的。构造socket时通过
int sockfd;sockfd = socktet(AF_INET, SOCK_RAW, IPPROTO_ICMP);