我知道 UDP 除了静默丢弃校验不合格的数据包之外,没有真正的错误控制功能。
我是否正确地认为,到达路由器的 TTL = 1 的 UDP 数据包将生成“ICMP 超时”消息,而到达终端主机的未使用端口号(54823 或类似端口号)的 UDP 数据包将被拒绝,从而导致“ICMP 端口不可达”消息 - 并且这两个 ICMP 消息都将被发送回消息的发送者?
我很确定事情就是这样的,但我想确保自己不会因此感到困惑
答案1
是的,你说得对。traceroute 也是这么做的。
答案2
没错,但如果您想在您的应用程序中接收这些消息,您必须使用connect
套接字。