On Mon, 03 Aug 2015 22:47:24 -0000, "Wessels, Duane" wrote: > >> On Jul 27, 2015, at 3:28 PM, 神明達哉 <jin...@wide.ad.jp> wrote: >> >> I have a couple of minor comments on 5966bis-02: > >Tatuya, thank you for the comments. > >> >> - Section 8 >> >> For reasons of efficiency, DNS clients and servers SHOULD transmit >> the two-octet length field, and the message described by that length >> field, in a single TCP segment. >> >> I suspect we cannot reasonably require this (with a "SHOULD") at the >> level of DNS client/server implementation since an application cannot >> always/fully control a specific TCP segment contains how much data: it >> depends on the state of the TCP connection, specific implementation >> details of the TCP stack, etc. I suggest rephrasing this as follows >> (and I guess that was actually what was intended to say here): >> >> For reasons of efficiency, DNS clients and servers SHOULD pass >> the two-octet length field, and the message described by that length >> field, to the TCP layer at the same time (e.g., in a single write() >> system call) so it will be more likely that all the data will be >> transmitted in a single TCP segment. This additionally avoids >> problems due to some DNS servers being very sensitive to timeout >> conditions on receiving messages (they may abort a TCP session if >> the first TCP segment does not contain both the length field and >> the entire message). > >This section now reads: > > For reasons of efficiency, DNS clients and servers SHOULD pass the > two-octet length field, and the message described by that length > field, to the TCP layer at the same time (e.g., in a single write() > system call) to make it more likely that all the data will be > transmitted in a single TCP segment. This additionally avoids > problems due to some DNS servers being very sensitive to timeout > conditions on receiving messages (they may abort a TCP session if the > first TCP segment does not contain both the length field and the > entire message).
Personally, I would strike the "This additionally avoids...message).". An app that requires the length and payload in the same segment is buggy becuase, in general, there is NO way for sender to guarantee that property. This is the limitation Jinmei pointed out. Fortunately, app-level messages that are split across multiple TCP segments (and therefore may require mutliple read() calls) are well known to TCP developers (ex: web browser and server developers). Also fortunatley, this is just a SHOULD :-). -John Heidemann _______________________________________________ DNSOP mailing list DNSOP@ietf.org https://www.ietf.org/mailman/listinfo/dnsop