我只是好奇这个问题,有人可以告诉我吗?
TCP是服务器和客户端之间的流式传输协议。该协议可靠,并需要为每个服务器<>客户端流维护单独的状态。使用listen/accept发起的连接协议设置了此服务器<>客户端连接状态。UDP是一种无连接、不可靠的数据报(消息)协议,因此无需监听新连接 - 数据报可以以任何顺序从任何来源进入。
考虑内核源代码,listen()
主要用于初始化 accept queue
和 syn queue
,但在使用 UDP 时是无用的。
调用链为 listen -> inet_listen -> inet_csk_listen_start -> reqsk_queue_alloc