场景说明:目前在windows上测试,或者在Linux上测试,发送UDP数据包,尽管目标端口不可达,但是并没有返回ICMP报文目的端口不可达的情况,真正做到了UDP报文的投递的特性,根本就没有等待,尽管调用了connect函数,但是没有任何的效果,其实我们可以想象到TCP的三次握手就是connect
函数的结果,但是UDP调用connect函数,却未必达到这个效果,因为UDP根本就没有三次握手,想来这个问题就可想而知的答案。但是根据《TCP/IP协议卷》,确实应该当UDP端口无法投递的时候,发送一个ICMP目的端口不可达的报文,但是我没有接收到。难道是被路由器过滤掉了,这个完全不清楚。并且我是使用tftp运行在linux测试的,结果没有得到和书本上类似的答案。UDP的规则之一就是:当接收到的UDP报文的目的端口和当前进程不相符合的时候,发送ICMP报文。
抓包使用的命令如下:
tcpdump -i em1 icmp
时间: 2024-12-14 22:58:51