最近,碰到UDP是否有写缓冲区的疑问,对于应用,如下图linux手册中有设置UDP发送缓冲区相关属性,也明确提到了send buffer的概念:
那这是否意味着UDP是有发送缓冲区的吗?我们再看一下《UNIX Network Programming》书中所述,这本书的作者权威性我就不多说了吧,在国内高校此书都是当做教材使用的。书中有下面两幅图:


一张是TCP发送过程协议栈简化图,另一张是UDP的。UDP中的send buffer是用虚线框圈起来的,具体的叙述我直接引用书中原文:
书中的描述很清楚了,UDP是没有发送缓冲区的,因为UDP是不可靠的,他不必像TCP一样需要一个实质的发送buffer,而且真正UDP写成功返回其实是传递到了链路层的output queue中。
本文深入探讨了UDP是否具备发送缓冲区的问题。通过对比Linux手册和权威书籍《UNIX Network Programming》的内容,揭示了UDP发送机制的本质,即UDP实际上并没有实质的发送缓冲区,其数据直接传递到链路层的output queue。
1407

被折叠的 条评论
为什么被折叠?



