我想使用原始套接字发送数据包。
如果我创建一个 IP 数据包(icmp、tcp 或 udp 数据包),那么源 IP 和目标 IP 在 IP 数据包中。现在我想通过以下几行发送它:
memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = inet_addr(dst_ip);
sendto(sd, packet, 60, 0, (struct sockaddr *)&sin, sizeof(sin));
当然,dst_ip
应该与数据包中的目的IP相同。
我想知道如果dst_ip
与数据包中的目标 IP 不同会发生什么。在我看来,dst_ip
用于决定应该使用哪个 NIC 来发送数据包。而精心制作的数据包中的目标IP不会dst_ip
被网络内路由器更改并将由网络内路由器处理。
我的理解是否正确?还有其他区别吗?
谢谢!