时长:大小8.28M
作者回复: 我能想到的: 1.udp可以增加消息编号; 2.对每个消息编号提供ACK,在udp应用层增加应答机制; 3.没有应答的增加重传机制 4.增加缓存,ACK完的才从缓存中清除
作者回复: 1.是通过sendto函数来绑定服务端地址的,之后再通过recvfrom引用到之前的socket,这样收到的报文就是指定的服务地址和端口了; 2.不是connect导致ICMP报文,而是对应的地址和端口不可达时,一个 ICMP 报文会返回。connect只是将这个信息传递变得可能了。
作者回复: 👍
作者回复: 是的。UDP的广播地址是固定的为255.255.255.255。
作者回复: 在答疑篇里统一回复了。
作者回复: 我不觉得会发ICMP来探一谈。ICMP是用的时候才触发的。 这里我想表达的是操作系统协议栈在每次sendto的时候都会需要一个地址初始化的过程,如果这个过程省略掉了,是可以得到一点点性能的提升的。当然,其实这个是没有那么大的。
作者回复: 也可以这么说。
作者回复: 没有断开,这里都是一个系统调用,告诉了一些系统内核信息而已。
作者回复: 是因为之前发送成功了,所以没有ICMP不可达的报文收到,因而进入了阻塞状态。
作者回复: 这个是UDP哦,不是TCP。 通常在服务器端不开启的情况下,UDP客户端程序是不会报错的,程序只会阻塞在 recvfrom 上,等待返回(或者超时)。UDP的connect并不是真正的conncect操作,它只是给UDP 套接字建立了“上下文”。