이름 해석(name resolution)에서 DNS 서버의 응답이 512 바이트를 넘을 경우 DNS 서버는 DNS 메시지를 512 바이트 이하로 줄이다. 그 때 압축이 발생했음을 표시하는 "TC 비트"set 한 응답을 돌려준다. TC 비트가 set된 응답을 받으면 송신원은 같은 문의를 TCP로 다시 보낸다. 이 일련의 교환을 "TCP 폴 백"이라고 부른다. 이것으로 65535 바이트까지 DNS 메시지 수신이 가능하다.

 

DNS에서는 TCP 사용에 의해서 발생하는 비용과 지연을 피하기 위해 갑자기 TCP로 문의하지 않고 UDP 에서 시행한 후에 TCP를 이용해야 한다고 규정되어 있다(RFC 5966에서 정의)

  

출처: http://www.atmarkit.co.jp/ait/articles/1510/28/news014.html

 

 

 

DNS의 문의에 대한 답변이 512byte를 넘는 경우에 UDP 프로토콜이 아니라 TCP 프로토콜에 의해서 응답하는 것을 말한다.

 

udp/53에 문의한 것에 왜 TCP 프로토콜로 응답하는가?

- MTU의 최소치인 576byte DNS 응답 패킷으로서는 512 byte(현재는 576 byte라는 경로는 거의 없고 1980년 당초의 사정을 사용하고 있다)를 넘어 버리면 경로에 따라서는 패킷이 분할된다. 1 패킷으로 처리될 수 있도록 RFC 1035에서 512 byte 이하의 응답 패킷으로 제한한다고 규정한다. 그래서 512 byte를 넘는 경우에는 TCP 프로토콜으로 응답한다.

 

비고

DNS 클라이언트(resolver) udp 프로토콜의 임의의 포트를 바인드 해서 문의하고 있으며 응답이 있을 때까지 바인드 한다. DNS 서버는 송신원 포트를 송신지 포트로 하고 송신원 포트를 53번 포트로 응답하는 것으로 도중의(내 통신을 제한하는) F/W를 통과할 수 있도록 설정되어 있고(라는 것이 일반적이다), resolver는 응답을 받을 수 있다. TCP 폴 백 할 경우 UDP 응답 패킷에서 TCP 프로토콜에 의해서 다시 접속 확립이 이뤄지고 TCP 프로토콜에 의해서 응답한다

  

출처: http://blog.development-network.net/ung/2011/07/tcp.html

 

저작자 표시
신고
by 흥배 2015.11.04 08:00
| 1 |